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"),然 ...
随机推荐
- ES VS Hbase
http://db-engines.com/en/system/Elasticsearch%3BHBase
- Docker Resources
Menu Main Resources Books Websites Documents Archives Community Blogs Personal Blogs Videos Related ...
- jquery easyui DataGrid
Easyui Demo网站: http://www.jeasyui.com/ 英文 http://www.phptogether.com/juidoc/ 中文 datagrip的基本属性方法:ht ...
- Oracle数据库—— PL/SQL基础编程
一.涉及内容 1. 掌握PL/SQL程序块的结构,理解并熟悉各种变量的应用. 二.具体操作 (一)使用system用户登录SQL*PLUS,使用SQL语句创建用户:u_你的姓名首字母(例如:u_zs) ...
- unity, 查看.anim中的动画曲线(和帧)
在场景里建一个gameObject,添加一个Animation组件,将.anim文件添加到Animation组件的Animations中,然后在Animation组件面板中选中.anim,然后 菜单- ...
- ManagementFactory cannot be resolved
ManagementFactory cannot be resolved 问题描述: (1)ManagementFactory cannot be resolved or (2)Type The ty ...
- ASP.net MVC3 报错"未找到视图“Index”或其母版视图,或没有视图引擎支持搜索的位置 "的解决方法
注意添加MVC3视图不能直接在View文件下新建视图,而是在控制器的Index 右击添加视图,就会在View下面产生一个Product文件夹(包含Index.cshtml) 就可以解决这个问题. 具体 ...
- Android SingleTask与SingleInstance的区别
Android SingleTask与SingleInstance的区别 原文地址 现有2个项目,taskA.taskB.taskA负责调用taskB中指定的界面. taskB中有3个界面,a.b.c ...
- 【mybaits】Mybatis中模糊查询的各种写法
工作中用到,写三种用法吧,第四种为大小写匹配查询 1. sql中字符串拼接 SELECT * FROM tableName WHERE name LIKE CONCAT(CONCAT('%', #{t ...
- Neutron分析(6)—— neutron-openvswitch-agent
neutron-openvswitch-agent代码分析 neutron.plugins.openvswitch.agent.ovs_neutron_agent:main # init ovs fi ...