我正在尝试使用 corr() 函数来计算加权思考。它的工作方式是第一个参数应该是一个矩阵,其中两列对应于我们希望计算其相关性的两个变量,第二个参数是要应用于每对观察值的权重向量。
这是一个例子。
> head(d)
Shade_tolerance htot
1 4.56 25.0
2 2.73 23.5
3 2.73 21.5
4 3.97 17.0
5 4.00 25.5
6 4.00 23.5
> head(poids)
[1] 5.200440e-07 5.200440e-07 1.445016e-06 1.445016e-06 1.445016e-06 1.445016e-06
> corr(d,poids)
[1] 0.1357279
所以我得到了它,我可以在我的矩阵上使用它,但我想根据一个因子的水平计算不同的相关性。假设我正在使用 tapply() 函数。
> head(d2)
Shade_tolerance htot idp
1 4.56 25.0 19
2 2.73 23.5 19
3 2.73 21.5 19
4 3.97 17.0 18
5 4.00 25.5 18
6 4.00 23.5 18
所以我的梦想是做这样的事情:
tapply(as.matrix(d2[,c(1,2)]), d2$idp, corr)
除了您在 tapply() 中知道的第一个元素需要是向量而不是矩阵。
有人会对我有什么解决方案吗?
非常感谢你的帮助。
编辑:我刚刚意识到我在向您展示的数据框部分中缺少加权相关性的权重。所以它会有一些如何根据因子的水平同时采用矩阵和权重。
> head(df)
Shade_tolerance htot idp poids
1 4.56 25.0 19 5.200440e-07
2 2.73 23.5 19 5.200440e-07
3 2.73 21.5 19 1.445016e-06
4 3.97 17.0 19 1.445016e-06
5 4.00 25.5 19 1.445016e-06
6 4.00 23.5 19 1.445016e-06
我希望很清楚。