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

64jmpszr  于 2023-02-10  发布在  其他
关注(0)|答案(1)|浏览(104)

我想计算两个权重不同的变量之间的加权相关性。
一些示例数据:

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类似的输入,只是要计算相关性。
谢谢你的帮助!

byqmnocz

byqmnocz1#

您可以使用以下公式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)))

相关问题