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是以灰度图像来表现这种信息的强弱. 我们能看到什么取决于我们的视角.任何灰度图像都可以按照不同的规则来构成彩色图像. 通道除了能 ...
- C#中IP地址转换为数值的方法
任何语言都通用的方法转换 IP 地址 a.b.c.d ==> a***+b**+c*+d ===> *(c+*(b+*a)) +d 示例: ***+**+*+ ===> *( +*( ...
- share point 读取 metadata
private static void syncMetaData() { var siteUrl = @"http://..."; using (var site = new SP ...
- 虚拟化之vmware DirectPath I/O
首先Intel这边,必须CPU支持VT-D,基本就是i5/i7的型号,而且部分i5中低端型号还不支持,带K的不支持.同时主板要开启VT-D支持,这些从775时代开始就有了,所以型号搭配复杂.AMD那边 ...
- IIS不定期Crash和Oracle“未处理的内部错误(-2)”的问题分析
问题描述:系统不定期报出Oracle“未处理的内部错误(-2)”,严重时IIS会Crash 典型异常日志如下: Exception type: System.AccessViolationExce ...
- 关于用phonegap+jquery moblie开发 白屏闪屏的解决方法
前几天自己玩开发android应用,做些页面切换效果时,发现两个页面间切换间有白色闪屏的问题. 在网上找了很久的资料,还是没有解决. 最终,发现同事开发的android应用没有这个问题.对比代码排除发 ...
- Neutron分析(3)—— neutron-l3-agent
一.Layer-3 Networking Extension neutron l3作为一种API扩展,向租户提供了路由和NAT功能. l3扩展包含两种资源: router:在不同内部子网中转发数据包: ...
- LintCode "4 Sum"
4 Pointer solution. Key: when moving pointers, we skip duplicated ones. Ref: https://github.com/xbz/ ...
- 【转】如何使用PhoneGap打包Web App
如何使用PhoneGap打包Web App 最近做了一款小游戏,定位是移动端访问,思来想去最后选择了jQuery mobile最为框架,制作差不多以后,是否可以打包成App,恰好以前对PhoneGap ...
- docker配置环境
debian: curl -sSL https://get.docker.com/ | sh curl -sSL https://get.daocloud.io/docker | sh daoclou ...