R中有没有办法做成对加权相关矩阵?

Is there a way in R for doing a pairwise-weighted correlation matrix?

我有一个包含大量数值变量(连续变量和虚拟二进制变量)和 800 多个观测值的调查。当然,大多数变量都缺少数据(以不同的比率)。我需要使用加权相关性 table,因为有些样本比其他样本代表更多的人口。另外,我想尽量减少 未使用的样本 ,并以这种方式保持最大值。每对变量的观察值。我知道如何做一个成对相关矩阵(例如,cor(data, use="pairwise.complete.obs"))。我也知道如何做一个加权相关矩阵(例如,cov.wt(data %>% select(-weight), wt=data$weight, cor=TRUE))。但是,我找不到将两者结合使用的方法()。有没有办法在 R 中做成对加权相关矩阵?如果有任何帮助或建议,非常感谢。

好问题 我是怎么做的 速度不快但比循环快

df_correlation 是一个数据框,只有我想计算相关性的变量 newdf 是我的原始数据框,带有权重和其他变量

   data_list <- combn(names(df_correlation),2,simplify = FALSE)
    data_list <- map(data_list,~c(.,"BalancingWeights"))

    dimension <- length(names(df_correlation))
    allcorr <- matrix(data =NA,nrow = dimension,ncol = dimension)
    row.names(allcorr)<-names(df_correlation)
    colnames(allcorr) <- names(df_correlation)

myfunction<- function(data,x,y,weight){
  indice <-!(is.na(data[[x]])|is.na(data[[y]]))
 return(wCorr::weightedCorr(data[[x]][indice], 
                             data[[y]][indice], method = c("Pearson"), 
             weights = data[[weight]][indice], ML = FALSE, fast = TRUE))
}

b <- map_dbl(data_list,~myfunction(newdf,.[1],.[2],.[3]))


allcorr[upper.tri(allcorr, diag = FALSE)]<- b

allcorr[lower.tri(allcorr,diag=FALSE)] <- b
view(allcorr)