提问人:Anne 提问时间:2/7/2023 更新时间:2/7/2023 访问量:158
对 R 中的每个变量使用不同的向量权重计算加权相关性
Calculating a weighted correlation using different vector weights for each variable in R
问:
我想计算两个具有不同权重的变量之间的加权相关性。
一些示例数据:
DF = data.frame(
x = c(-0.3, 0.3, -0.18, 0.02, 0.07, 0.11, 0.20, 0.8, 0.3, -0.4),
x_weight = c(50, 40, 70, 5, 15, 30, 32, 13, 9, 19),
y = c(-0.6, 0.25, 0.1, 0.3, 0.3, -0.05, -0.5, 1, 0.05, -0.6),
y_weight = c(70, 8, 10, 39, 9, 49, 90, 77, 23, 75)
)
DF
我在 stats 包中阅读了 cov.wt,但它只允许输入一个权重向量。从本质上讲,我正在寻找与 wtd.t.test 类似的输入,但要计算相关性。
谢谢你的帮助!
答:
1赞
Talha Asif
2/7/2023
#1
您可以使用以下公式计算两个变量之间的加权相关性。Formulas are based on the definition of weighted covariance and correlation
首先,使用权重计算两个变量的加权均值:
mu_x = sum(DF$x * DF$x_weight) / sum(DF$x_weight)
mu_y = sum(DF$y * DF$y_weight) / sum(DF$y_weight)
接下来,计算两个变量之间的加权协方差:
cov_xy = sum((DF$x - mu_x) * (DF$y - mu_y) * DF$x_weight * DF$y_weight) / sum(DF$x_weight * DF$y_weight)
最后,计算两个变量之间的加权相关性:
cor_xy = cov_xy / (sqrt(sum((DF$x - mu_x)^2 * DF$x_weight) / sum(DF$x_weight)) * sqrt(sum((DF$y - mu_y)^2 * DF$y_weight) / sum(DF$y_weight)))
评论
0赞
Anne
2/10/2023
谢谢很多次!你对如何引导相关性有什么建议吗?我正在尝试,但没有成功。
上一个:如何在 r 的循环中引导加权均值
评论