chisq=function(x){
print(cbind(table(x),round(prop.table(table(x),margin=1)*100,2)))
#显示原始频数和百分比#
chi <- chisq.test(table(x))
print(paste("最小理论频数:",round(min(chi$expected),1),sep=""))
print(paste("理论频数小于5占比:", round(sum(chi$expected<5)/(nrow(chi$expected)*ncol(chi$expected))*100,2),"%",sep=""))
print(chisq.test(table(x),correct=F))
if(nrow(chi$expected)*ncol(chi$expected)==4){print( chisq.test(table(x)))}
if(min(chi$expected)<1){print(fisher.test(table(x)))}
if(sum(chi$expected<5)|(nrow(chi$expected)*ncol(chi$expected))>0.25){print(fisher.test(table(x)))}
}
#提取数据框(a)中需要比较的2个变量x1,x2即可#
chisq(subset(a,select=c(x2,x1)))
结果如下:
以上呈现的结果,和SPSS的结果呈现更为接近:
(1)会呈现四格表(或者R*C)各个格子的具体数值,以及每一列中的百分比;
(2)最小理论频数,以及小于5的理论频数所占的百分比;
(3)卡方检验的结果,此结果即chisq.test(table(x))的结果;
优点:能直接用原始数据进行计算,且同时呈现各个格子的具体数值,每一列中的百分比,以及最小理论频数,和连续性校正和卡fisher test等;
最后:在这个论坛中学习了好多东西,以上算是一点回馈吧~


雷达卡




京公网安备 11010802022788号







