使用 r 基数、权重和调查的列联表 p 值
Posted
技术标签:
【中文标题】使用 r 基数、权重和调查的列联表 p 值【英文标题】:contingency table p values using r base, weights and survey 【发布时间】:2018-10-28 00:46:59 【问题描述】:r 列联表加权 p 值
http://support.sas.com/documentation/cdl/en/procstat/67528/html/default/viewer.htm#procstat_freq_gettingstarted01.htm
一项典型的政治调查包含一个名为 WEIGHT 的变量。本博客的目的是使用上面给出的 SAS 极其简单的数据集比较使用基数 r、r 权重包和 r 调查包的列联表加权 p 值。基础包结果与 SAS 和 SPSS 基础包中的结果相同。然而,权重包和调查包产生的结果彼此相似,但与基本包的结果完全不同。我很想有人向我解释为什么这些结果如此不同。这可能是我的编码错误或其他两个包的不同假设。我会对来自 PEW 或 ANES(美国全国选举研究)的典型数据集的最佳方法的建议感兴趣,
首先我从基础包中给出 r 代码:
>attach(tt)
> print(tt)
sex internship enrollment count
1 boys yes yes 35
2 boys no yes 14
3 girls yes yes 32
4 girls no yes 53
5 boys yes no 29
6 boys no no 27
7 girls yes no 10
8 girls no no 23
> xx=xtabs(count~internship+enrollment,data=tt)
> print(xx)
enrollment
internship no yes
no 50 67
yes 39 67
> chisq.test(xx,correct=F)
Pearson's Chi-squared test
data: xx
X-squared = 0.81894, df = 1, p-value = 0.3655
> chisq.test(xx)
Pearson's Chi-squared test with Yates' continuity correction
data: xx
X-squared = 0.58989, df = 1, p-value = 0.4425
这些结果与以下 SAS 代码的结果一致(请参阅上述参考):
proc freq data=SummerSchool order=data;
tables Internship*Enrollment / chisq;
weight Count;
run;
结果也与 SPSS 15 和 SPSS 克隆 PSPP 的以下代码的结果一致:
WEIGHT BY COUNT.
CROSSTABS TABLES=INTERNSHIP BY ENROLLMENT
/STATISTICS=CHISQ.
但是,权重和调查中的以下代码会产生不同的结果:
> library(weights)
> wtd.chi.sq(internship,enrollment,weight=count)
Chisq df p.value
0.0293791 1.0000000 0.8639066
> library(survey)
> tt.d=svydesign(ids = ~1, data =tt,weights =tt$count)
> svychisq(~internship+enrollment,tt.d)
Pearson's X^2: Rao & Scott adjustment
data: svychisq(~internship + enrollment, tt.d)
F = 0.023599, ndf = 1, ddf = 7, p-value = 0.8822
请注意,基数 r 的 p 值(.365 和 .443 )与权重和调查的结果(.864 和 .882)完全不同。我希望有人向我解释差异的原因,并建议适用于上述政治数据类型。
【问题讨论】:
【参考方案1】:当您使用我的weights
包或Survey
包报告加权卡方检验时,基线分析假定您的权重与选择概率成正比,而不是与个案数量成正比。这是使用调查数据的正常方式。您可以通过在weights
包中将mean1
设置为false 来获得您想要的结果。
wtd.chi.sq(internship,enrollment,weight=count, mean1=FALSE)
Chisq df p.value
0.8189423 1.0000000 0.3654896
【讨论】:
以上是关于使用 r 基数、权重和调查的列联表 p 值的主要内容,如果未能解决你的问题,请参考以下文章
R语言使用addmargins函数和prop.table函数为二维列联表计算列(column)比例值以及对应的边缘比率值使用addmargins函数和prop.table函数计算二维列联表行边缘比率
R语言使用addmargins函数和prop.table函数为二维列联表计算列(column)比例值以及对应的边缘比率值使用addmargins函数和prop.table函数计算二维列联表行边缘比率
R语言table函数和xtabs函数生成三维列联表使用margin.table函数prop.table函数和addmargins函数计算多维列联表的边缘频率值频率计数比例值ftable美化输出
R语言使用prop.table函数为二维列联表计算所有类别组合的比例使用addmargins函数为二维列联表计算所有的边缘频数值使用addmargins函数和prop.table函数计算边缘比率值