对 R 中的每个变量使用不同的向量权重计算加权相关性

Calculating a weighted correlation using different vector weights for each variable in R

提问人:Anne 提问时间:2/7/2023 更新时间:2/7/2023 访问量:158

问:

我想计算两个具有不同权重的变量之间的加权相关性。

一些示例数据:

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 类似的输入,但要计算相关性。

谢谢你的帮助!

R 统计量 相关性 加权

评论


答:

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
谢谢很多次!你对如何引导相关性有什么建议吗?我正在尝试,但没有成功。