R如何检验类别变量(nominal variable)与其他变量之间的相关性
1.使用Pearson积差相关系性进行检验的话可以判断两个变量之间的相关性是否显著以及相关性的强度
- 显著性检验 (significant test)
连续变量 vs 类别变量 (continuous variable VS nominal variable): ANOVA检验(R中可使用aov函数)
类别变量 vs 类别变量 (nominal variable VS nominal variable): 卡方检验(R中可使用chisq.test函数)——其实ANOVA的检验效果与回归分析效果相同,具体参见这里 - 相关性强度(association strength)
连续变量 vs 类别变量 (continuous variable VS nominal variable):计算组内相关性(R中可使用psych包的ICC函数)
类别变量 vs 类别变量 (nominal variable VS nominal variable): 计算Cramer's V值(R中可使用vcd包的assocstats函数)
PS: Cramer's V值(φc)是对称计算的,所以无论你的变量是放在矩阵的行或列都不影响结果,而行和列的排列顺序也不影响。φc的值在0-1之间,φc^2是经典相关系数的均方。
φc 的计算:
在总数为n的样本中有标为A和B两类变量,分别有i=1,..,r; j=1,..,k个,每一个都有自己的频数。

φc的p值与使用Pearson卡方检验的p值相同; 在R里面lsr包的crames函数通过stats包的chisq.test函数来计算φc。
2. 置换检验(Permutation tests)(非参数检验)
传统的参数检验的前提是样本处于正太分布,数据量大且无离群点。当这些前提条件不再满足时,参数检验就不再有效,需要进行非参数检验。非参数检验不再关注数据的值,而只关注数据的秩,这样就抛弃了大量可用的信息。
置换检验采取重复随机抽样的方法,通过对样本再抽样构造经验分布,然后在此基础上生成P值进行推断两组之间是否存在显著差异。
此检验的原理如下:
我们有A,B两组数据,分别有m,n个样品。我们的零假设为A,B的概率分布相同。计算原始样本A的均值。从n+m中抽取n个标为A,计算A的均值,重复i次,可以得到A样本均值的分布。通过原始均值与后来的样本均值分布可以进行假设检验。
然后计算原始A和B之间的均值的差异(a0-b0),重复上述抽样后计算均值差j次,可以得到均值差概率分布。通过原始的差值与后来的概率差分布可以进行假设检验。单尾p-value可以通过计算均值差分布中大于(a0-b0)的值所占的比例算出;而双尾p-value则是统计均值差的绝对值大于ABS(a0-b0)的部分所占的比例。
R中可以使用coin包的oneway_test函数进行检验:library(coin)
oneway_test(y~A, data=mydata,distribution=approximate(B=9999))
3. Goodman & Kruskal’s tau检验(参考)
该检验通过计算如下值评估变量之间的联系:a(x,y) = [V(y) – E{V(y|x)}]/V(y),其中V(y)指y的整体变异度,E{V(y|x)}是在给定x情况下出现y的条件变异度V(y|x)的期望。在极端情况是,如果x和y完全没关系,那么a(x,y)=0;如果y可以通过x完美预测出来,那么a(x,y)=1。
由于R中似乎没有现成的计算该值的函数,如下提供了一个:
GKtau <- function(x,y){
#
# First, compute the IxJ contingency table between x and y
#
Nij = table(x,y,useNA=”ifany”)
#
# Next, convert this table into a joint probability estimate
#
PIij = Nij/sum(Nij)
#
# Compute the marginal probability estimates
#
PIiPlus = apply(PIij,MARGIN=1,sum)
PIPlusj = apply(PIij,MARGIN=2,sum)
#
# Compute the marginal variation of y
#
Vy = 1 – sum(PIPlusj^2)
#
# Compute the expected conditional variation of y given x
#
InnerSum = apply(PIij^2,MARGIN=1,sum)
VyBarx = 1 – sum(InnerSum/PIiPlus)
#
# Compute and return Goodman and Kruskal’s tau measure
#
tau = (Vy – VyBarx)/Vy
tau
}
由于该方法使用的是变量的变异度(variability)所以计算是可以带有缺失值;另外,此检验方法的一个重要特点是不对称,即a(x,y)和a(y,x)一般情况下是不同的,这一点与计算Spearman相关系数不同。不对称的原因是该方法是通过量化x预测y的可靠程度,这与用y来预测x是不同的。利用这一点,我们可以判断哪个才是更好的预测指标。比如:如果a(x,y)=0.001而a(y,x)=0.997,那么我们可以认为利用y来预测x会得到比较准确的结果,因此将y作为预测x的指标。
R如何检验类别变量(nominal variable)与其他变量之间的相关性的更多相关文章
- JavaScript:变量对象(Variable Object)
引言:在使用JavaScript编程的时候,避免不了声明函数和变量,但是我们很少知道解释器是如何并且在什么地方找到这些函数和变量的,我们在引用这些对象的时候究竟发生了什么? 对ECMAScript程序 ...
- Linux - 简明Shell编程02 - 变量(Variable)
脚本地址 https://github.com/anliven/L-Shell/tree/master/Shell-Basics 示例脚本及注释 #!/bin/bash v1=test-variabl ...
- Shell - 简明Shell入门02 - 变量(Variable)
示例脚本及注释 #!/bin/bash v1=test-variable_123 # 全局变量 v2=12345 v3='This is a test!' # 赋值语句使用单引号或双引号可以包含空格 ...
- [转] 条件变量(Condition Variable)详解
http://www.wuzesheng.com/?p=1668 条件变量(Condtion Variable)是在多线程程序中用来实现“等待->唤醒”逻辑常用的方法.举个简单的例子,应用程序A ...
- Xcode中的变量模板(variable template)的用法
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 你可能经常会写一些小的代码片段,里面自然少不了一些关键的变量. ...
- A SELECT statement that assigns a value to a variable must ... (向变量赋值的 SELECT 语句不能与数据检索操作结合使用 )
A SELECT statement that assigns a value to a variable must ... (向变量赋值的 SELECT 语句不能与数据检索操作结合使用 ) 总结一句 ...
- 条件变量(Condition Variable)详解
条件变量(Condtion Variable)是在多线程程序中用来实现“等待->唤醒”逻辑常用的方法.举个简单的例子,应用程序A中包含两个线程t1和t2.t1需要在bool变量test_cond ...
- Xcode中的变量模板(variable template)的使用方法
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 假设认为写的不好请多提意见,假设认为不错请多多支持点赞.谢谢! hopy ;) 你可能常常会写一些小的代码片段,里面自然少不了一些关键的变量. ...
- R语言学习笔记:glue包实现变量传参
glue包介绍 glue包可用于自定义变量,然后通过传参的方式,对字符串部分内容进行自适应修改. 例如:可将日期赋值为:date = as.Date("2019-12-05"),然 ...
随机推荐
- PS要点
1.通道 意味着我们同过不同的角度来看图像,可以得到不同的图像信息,PS是以灰度图像来表现这种信息的强弱. 我们能看到什么取决于我们的视角.任何灰度图像都可以按照不同的规则来构成彩色图像. 通道除了能 ...
- Linux dbg debugging
http://h41379.www4.hpe.com/doc/84final/4538/4538pro_contents.html https://kgdb.wiki.kernel.org/index ...
- Oracle DBWR,LGWR,CKPT,ARCH 触发条件 总结
一. DBWR写磁盘数据触发条件 1. 当进程在辅助LRU链表和主LRU链表上扫描以查找可以覆盖的buffer header[空闲缓冲区]时,如果已经扫描的buffer header的数量到达一定的 ...
- PHP安装libevent扩展
1. 下载扩展 官方地址http://pecl.php.net/package/libevent 请根据自己的PHP脚本选择相应版本 如 wget http://pecl.php.net/get/li ...
- html dl dt dd标签元素语法结构与使用
dl dt dd认识及dl dt dd使用方法 <dl> 标签用于定义列表类型标签. dl dt dd目录 dl dt dd介绍 结构语法 dl dt dd案例 dl dt dd总结 一. ...
- shell之echo与printf和颜色
在用户的bashrc中添加一行export来修改提示符.
- 服务器能访问共享,但是ping不通解决方案
今天发现客户反映后台连不上数据库,远程程查看之后发现机器可以访问服务器共享,但是ping网络的时候ping不通.Ip设置也没问题,网络也都连上了,而且客户反映他们那其它机器都能连上. 百度了一下,发现 ...
- Android测试环境搭建(win7)
一.安装JDK并配置环境变量 1.在Java官方网站上下载相应系统的jdk文件安装,如win7 64 位系统下安装jdk-6u45-windows-x64,全部选择默认的安装路径即可安装完成. 2.配 ...
- dubbo远程调试运行
缺包问题: maven配置或则下载 http://central.maven.org/maven2/org/mortbay/jetty/jetty/7.0.0.pre5/jetty-7.0.0.pre ...
- Amoeba:开源的分布式数据库Porxy解决方案
http://www.biaodianfu.com/amoeba.html 什么是Amoeba? Amoeba(变形虫)项目,该开源框架于2008年 开始发布一款 Amoeba for Mysql软件 ...