gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 08:26:37 27 4
gpt4 key购买 nike

我有一个包含大量数字变量(连续和虚拟二进制)和 800 多个观察值的调查。当然,大多数变量都缺少数据(以不同的速率)。我需要使用加权相关表,因为某些样本比其他样本代表更多的总体。另外,我想最小化未使用的样本,并以这种方式保持最大值。每对变量的观察值。我知道怎么做 成对相关矩阵 (例如, 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)

关于r - R中有没有办法做成对加权的相关矩阵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65229941/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com