我正在尝试扩展问题R的答案:过滤数据并计算相关性。
为了获得一年中每个月(1 =一月)的温度和湿度的相关性,我们必须对每个月(12次)进行相同的操作。
cor(airquality[airquality$Month == 1, c("Temp", "Humidity")])
每个月有什么办法可以自动执行吗?
就我而言,我有30多个组(不是几个月,而是一个物种),我想测试它们之间的相关性,我只是想知道是否有比逐个进行的方法更快的方法。
谢谢!
cor(airquality[airquality$Month == 1, c("Temp", "Humidity")])
给您一个2 * 2
协方差矩阵,而不是一个数字。我敢打赌,每个人都想要一个数字Month
,所以请使用
## cor(Temp, Humidity | Month)
with(airquality, mapply(cor, split(Temp, Month), split(Humidity, Month)) )
您将获得一个向量。
阅读?split
和?mapply
; 尽管它们不是唯一的选择,但它们对于“按组”操作非常有用。还请阅读?cor
,并比较两者之间的区别
a <- rnorm(10)
b <- rnorm(10)
cor(a, b)
cor(cbind(a, b))
您在问题中链接的答案与相似cor(cbind(a, b))
。
可重现的例子
airquality
R中的数据集没有Humidity
列,因此我将Wind
用于测试:
## cor(Temp, Wind | Month)
x <- with(airquality, mapply(cor, split(Temp, Month), split(Wind, Month)) )
# 5 6 7 8 9
#-0.3732760 -0.1210353 -0.3052355 -0.5076146 -0.5704701
我们得到一个命名向量,其中names(x)
给出Month
,并unname(x)
给出相关性。
非常感谢你!它工作得非常完美!我也试图找出如何
R^2
针对每个相关性使用来获得向量,但是我不能...有什么想法吗?
cor(x, y)
就像拟合标准线性回归模型一样:
coef(lm(scale(y) ~ scale(x) - 1)) ## remember to drop intercept
在这种简单的线性回归中,R平方只是斜率的平方。以前我们x
按组存储相关性,现在R平方为x ^ 2
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句