You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R语言中为不同变量使用不同向量权重计算加权相关系数

计算双权重变量的加权相关系数

当两个变量分别带有独立权重时,可通过构建联合权重的方式计算加权相关系数,核心逻辑是基于联合权重推导加权均值、协方差与标准差,进而得到相关系数。

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)
)

1. 构建联合权重

这里以权重乘积作为联合权重(也可根据业务场景选用几何平均sqrt(x_weight*y_weight)、算术平均(x_weight+y_weight)/2等),并归一化确保权重和为1:

# 计算联合权重
DF$joint_weight = DF$x_weight * DF$y_weight
# 归一化权重
DF$norm_joint_weight = DF$joint_weight / sum(DF$joint_weight)

2. 手动计算加权相关系数

# 加权均值
x_wmean = sum(DF$x * DF$norm_joint_weight)
y_wmean = sum(DF$y * DF$norm_joint_weight)

# 加权协方差
cov_w = sum(DF$norm_joint_weight * (DF$x - x_wmean) * (DF$y - y_wmean))

# 加权标准差
x_wsd = sqrt(sum(DF$norm_joint_weight * (DF$x - x_wmean)^2))
y_wsd = sqrt(sum(DF$norm_joint_weight * (DF$y - y_wmean)^2))

# 加权相关系数
wtd_cor = cov_w / (x_wsd * y_wsd)

# 输出结果
wtd_cor

3. 利用cov.wt简化计算

也可直接将归一化后的联合权重传入cov.wt,直接提取相关系数:

cov_matrix = cov.wt(cbind(DF$x, DF$y), wt = DF$norm_joint_weight, cor = TRUE)
# 提取x与y的加权相关系数
cov_matrix$cor[1,2]

内容的提问来源于stack exchange,提问作者Anne

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 21:15:36