第一篇
关于定性数据分析
上学期选修了定性数据分析这门课程,教材是王静龙、梁小筠的定性数据分析。
高维列联表分析流程
目录
第一章 绪论 7
1.1 问题研究背景 7
1.2 数据来源 7
1.3 研究意义 1
第二章 高维列联表独立性检验 2
2.1 高维列联表的相互独立性检验 2
2.2 高维列联表的边缘独立性检验 2
2.3 高维列联表的条件独立性检验 3
2.3.1层属性“地区”给定时的条件独立性检验 3
2.3.2行属性“性别”给定时的条件独立性检验 4
第三章 高维列联表相合性检验 5
3.1 高维列联表的压缩相合性检验 5
3.2 高维列联表分层相合性检验 5
3.3 高维列联表条件相合性检验(Cochran-Mantel-Haenszel检验) 7
3.2 高维列联表相合齐次性检验(Breslow-Day检验) 8
第四章 结论与建议 10
4.1 结论 10
4.2 相关建议 11
参考文献 12
直接上代码给需要的人(R)
// An highlighted block
附录4
###################定性数据统计分析论文##########
#####三维列联表的压缩与分层
##三维列联表压缩函数,输入为三维列联表(行*列*层)数组,按层压缩,得到边缘表
compress=function(x){
x_compress=matrix(0,nrow = dim(x)[1],ncol = dim(x)[2])#构建一个与边缘表相同大小的0矩阵
for (k in 1:dim(x)[3]) {
##dim(z)[3]#数组z的层数
x_compress=x_compress+x[,,k]#x[,,k]第k层数据矩阵
}##dim(z)[3]#数组z的层数
return(x_compress)#返回边缘表
}
##三维列联表分层与相合性检验函数,输入为三维列联表(行*列*层)数组,按层分层,得到部分表和检验结果
layering=function(x){
for (k in 1:dim(x)[3]) {
##dim(z)[3]#数组z的层数
x_layer=x[,,k]#x[,,k]第k层数据矩阵
print(x_layer)#打印部分表
congruence_test(x_layer,alternative="greater")###相合性检验,H1:正相合
cat('\n')
}##dim(z)[3]#数组z的层数
}
congruence_test=function(x,alternative="")
#适用于列联表的相合性度量与检验问题
#x为列联表矩阵,alternative对应于备择假设
{
n=sum(x)
G=0;H=0
r=nrow(x)
c=ncol(x)
r1=r-1;c1=c-1
#计算G:
for (i in 1:r1){
for (j in 1:c1){
G=G+x[i,j]*sum(x[(i+1):r,(j+1):c])
}
}
#计算H:
for (i in 1:r1){
for (j in 2:c){
H=H+x[i,j]*sum(x[(i+1):r,1:(j-1)])
}
}
#计算z,TA,TB,TAB:
z=G-H
TA=sum(rowSums(x)*(rowSums(x)-1)/2)
TB=sum(colSums(x)*(colSums(x)-1)/2)
#TAB=G+H+TA+TB-n*(n-1)/2
Cn2=n*(n-1)/2
######相合性度量######
#计算各系数的值
Kendall_tau=z/sqrt((Cn2-TA)*(Cn2-TB))###Kendall-tau系数
Gamma=(G-H)/(G+H)######Gamma系数
#####Somers-d系数:
d_BA=(G-H)/(Cn2-TA)###列联表为2*c,列属性B依赖于行属性A,用d_B|A度量相合性
d_AB=(G-H)/(Cn2-TB)###列联表为r*2,行属性A依赖于列属性B,用d_A|B度量相合性
#######相合性检验######
#sigma平方的近似计算公式,表示sigma的平方
sigma_2=(n^3-sum(rowSums(x)^3))*(n^3-sum(colSums(x)^3))/(9*n^3)
#构建检验统计量:U统计量
U=z/sqrt(sigma_2)
if(alternative=="two.side")
{
p_value=1-pchisq(U^2, 1)}
else
{
if(alternative=="greater")####greater:备择假设为正相合
{
p_value=pnorm(-U)}
else if(alternative=="less")####less:备择假设为负相合
{
p_value=pnorm(U)}
else{
cat("please input:\n alternative= 'two.side','greater',or'less'")}
}
cat('关于相合性度量的相关系数:\n')
cat('G=',G,'\n')
cat('H=',H,'\n')
cat('z=',z,'\n')
cat('T_A=',TA,'\n')
cat('T_B=',TB,'\n')
cat('Kendall_tau=',Kendall_tau,'\n')
cat('Gamma=',Gamma,'\n')
cat('d_B|A=',d_BA,'\n')