簡體   English   中英

R的調查包中的Pearson相關系數

[英]Pearson correlation coefficient in R's survey package

很抱歉,如果這是非常明顯的,但我看不出如何在調查包中的兩個變量之間進行簡單的Pearson關聯。 我的數據有層次,所以它相當於在apistrat中為api00和api99找到r。

library(survey)
data(api)

dstrat <- svydesign(id=~1,strata=~stype, weights=~pw, data=apistrat, fpc=~fpc)

我敢肯定必須有一個簡單的方法,使用svyvar或svyglm或其他東西,但我看不到它?

您可以使用svyvar估計方差 - 協方差矩陣,然后將其縮放到相關性:

library(survey)
data(api)

dstrat <- svydesign(id=~1,strata=~stype, weights=~pw, data=apistrat, fpc=~fpc)
v <- svyvar(~api00+api99, dstrat)

as.matrix(v)
cov2cor(as.matrix(v))

這適用於任何數量的相關性和任何設計。

library(survey)
data(api)
dstrat<-svydesign(id=~1,strata=~stype, weights=~pw, data=apistrat, fpc=~fpc)
summary(svyglm(api00~ell+meals+mobility, design=dstrat),correlation=T)

我一直在思考這個問題,我開始認為最好的方法可能就是首先擴展兩個變量,大概是使用svymean和svyvar。

dstrat2 <- transform(dstrat, 
                     z_api99 = (api99 - svymean(~api99,    dstrat))/sqrt(svyvar(~api99, dstrat)), 
                     z_api00 = (api00 - svymean(~api00, dstrat))/sqrt(svyvar(~api00, dstrat))) 

svyglm(z_api99 ~ z_api00, dstrat2)$coefficients

這給出9.759047e-01,這與使用的結果相同:

library(weights)
wtd.cor(apistrat$api99, apistrat$api00, weight = apistrat$pw)

它的優點是它幾乎可以用於任何調查設計類型。 如果有更多變量,它還提供了獲得標准化β系數的方法。 對於原始問題,這並不是我的意思,但如果沒有特定的選項,它可能是最好的方法。

如果其他人可以確認這是否有效,或者有更好的方法,那么我將非常感謝任何進一步的評論。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM