cor(airquality[airquality$Month == 1, c("Temp", "Humidity")])
给你一个2 * 2
协方差矩阵而不是数字。我打赌你想要每个都有一个号码Month
, so use
## cor(Temp, Humidity | Month)
with(airquality, mapply(cor, split(Temp, Month), split(Humidity, Month)) )
你将得到一个向量。
阅读一下?split
and ?mapply
;它们对于“按组”操作非常有用,尽管它们不是唯一的选择。还阅读周围?cor
,并比较之间的差异
a <- rnorm(10)
b <- rnorm(10)
cor(a, b)
cor(cbind(a, b))
您在问题中链接的答案正在做类似的事情cor(cbind(a, b))
.
可重现的例子
The 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)
gives Month
, and unname(x)
给出相关性。
非常感谢!它工作得非常完美!我试图弄清楚如何获得一个向量R^2
对于每个相关性也是如此,但我不能......有什么想法吗?
cor(x, y)
就像拟合标准化线性回归模型一样:
coef(lm(scale(y) ~ scale(x) - 1)) ## remember to drop intercept
这个简单线性回归中的 R 平方就是斜率的平方。之前我们有x
存储每组的相关性,现在 R 平方只是x ^ 2
.