R加权交叉表P值与SAS结果差异及单双侧检验疑问
加权交叉表卡方检验:SAS与R结果差异解析
我最近在做加权交叉表卡方检验时,发现SAS和R的结果差异非常显著,特意来请教原因。先把两边的代码和结果贴出来:
SAS代码与输出结果
data SummerSchool; input Gender $ Internship $ Enrollment $ Count @@; datalines; boys yes yes 35 boys yes no 29 boys no yes 14 boys no no 27 girls yes yes 32 girls yes no 10 girls no yes 53 girls no no 23 ; proc freq data=SummerSchool order=data; tables Internship*Enrollment / chisq; weight Count; run;
SAS输出的卡方检验P值范围在 0.3651-0.4425 之间。
R代码与输出结果
我先整理了数据,之后分别用weights包和survey包执行检验:
# 数据预处理 tt$nnn = as.numeric(tt$count) attach(tt) # 查看整理后的数据集 tt # sex internship enrollment count nnn # 1 boys yes yes 35 35 # 2 boys no yes 14 14 # 3 girls yes yes 32 32 # 4 girls no yes 53 53 # 5 boys yes no 29 29 # 6 boys no no 27 27 # 7 girls yes no 10 10 # 8 girls no no 23 23 # 生成加权后的交叉汇总表 library(plyr) count(tt, c('internship','enrollment'), wt_var='nnn') # internship enrollment freq # 1 no no 50 # 2 no yes 67 # 3 yes no 39 # 4 yes yes 67 # 使用weights包执行加权卡方检验 library(weights) wtd.chi.sq(internship, enrollment, weight=nnn) # Chisq df p.value # 0.0293791 1.0000000 0.8639066 # 使用survey包执行加权卡方检验 library(survey) tt.d = svydesign(ids = ~1, data = tt, weights = tt$nnn) 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值分别为 0.8639 和 0.8822,和SAS的结果差异明显。
我现在的疑问是:**是不是SAS输出的是单侧P值,而R输出的是双侧P值导致了这种差异?**如果确实是这个原因,那在这个暑期学校实习与报名情况的分析场景下,单侧检验和双侧检验各自的优劣是什么?
内容的提问来源于stack exchange,提问作者Bob
相关产品推荐
相关产品推荐

