【问题标题】:Calculating a weighted correlation using different vector weights for each variable in R为R中的每个变量使用不同的向量权重计算加权相关性
【发布时间】:2023-02-07 18:19:57
【问题描述】:

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

一些示例数据:

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 statistics correlation weighted


    【解决方案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)))
    

    【讨论】:

      猜你喜欢
      • 2017-03-09
      • 1970-01-01
      • 2018-08-13
      • 2023-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多