定性数据分析中高维列联表分析流程(附R代码)

第一篇

关于定性数据分析

上学期选修了定性数据分析这门课程,教材是王静龙、梁小筠的定性数据分析。

高维列联表分析流程

目录
第一章 绪论 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])
    }
  }
  #计算Hfor (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')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值