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)与其他变量之间的相关性的更多相关文章

  1. JavaScript:变量对象(Variable Object)

    引言:在使用JavaScript编程的时候,避免不了声明函数和变量,但是我们很少知道解释器是如何并且在什么地方找到这些函数和变量的,我们在引用这些对象的时候究竟发生了什么? 对ECMAScript程序 ...

  2. Linux - 简明Shell编程02 - 变量(Variable)

    脚本地址 https://github.com/anliven/L-Shell/tree/master/Shell-Basics 示例脚本及注释 #!/bin/bash v1=test-variabl ...

  3. Shell - 简明Shell入门02 - 变量(Variable)

    示例脚本及注释 #!/bin/bash v1=test-variable_123 # 全局变量 v2=12345 v3='This is a test!' # 赋值语句使用单引号或双引号可以包含空格 ...

  4. [转] 条件变量(Condition Variable)详解

    http://www.wuzesheng.com/?p=1668 条件变量(Condtion Variable)是在多线程程序中用来实现“等待->唤醒”逻辑常用的方法.举个简单的例子,应用程序A ...

  5. Xcode中的变量模板(variable template)的用法

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 你可能经常会写一些小的代码片段,里面自然少不了一些关键的变量. ...

  6. A SELECT statement that assigns a value to a variable must ... (向变量赋值的 SELECT 语句不能与数据检索操作结合使用 )

    A SELECT statement that assigns a value to a variable must ... (向变量赋值的 SELECT 语句不能与数据检索操作结合使用 ) 总结一句 ...

  7. 条件变量(Condition Variable)详解

    条件变量(Condtion Variable)是在多线程程序中用来实现“等待->唤醒”逻辑常用的方法.举个简单的例子,应用程序A中包含两个线程t1和t2.t1需要在bool变量test_cond ...

  8. Xcode中的变量模板(variable template)的使用方法

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 假设认为写的不好请多提意见,假设认为不错请多多支持点赞.谢谢! hopy ;) 你可能常常会写一些小的代码片段,里面自然少不了一些关键的变量. ...

  9. R语言学习笔记:glue包实现变量传参

    glue包介绍 glue包可用于自定义变量,然后通过传参的方式,对字符串部分内容进行自适应修改. 例如:可将日期赋值为:date = as.Date("2019-12-05"),然 ...

随机推荐

  1. Linux体系结构(二): Linux系统层次

    前一节内容大概介绍了一下Linux的历史由来,各大Linux发行厂商都是基于GNU项目下的所有开源软件,来构建各自己的Linux发行版本,一个完整的Linux发行版本大概可以分为以下四个层次结构:   ...

  2. MySQL中char(36)被认为是GUID导致的BUG及解决方案

    MySQL中char(36)被认为是GUID导致的BUG及解决方案 有时候在使用Toad或在程序中,偶尔会遇到如下的错误: System.FormatException GUID 应包含带 4 个短划 ...

  3. JQuery高性能最佳实践

    [使用最佳选择器] 使用JQuery时,你可以使用多种选择器,选择同一个元素,各种方法之间的性能是不一样的,有时候差异会特别大. 通常比较常用的选择器有以下几个: ID选择器 $("#id& ...

  4. 【转】ASP.NET中服务器控件Table动态生成表格及其属性介绍

    下文所有内容转自开源中国:http://www.oschina.net/question/565065_86453#tags_nav ================================= ...

  5. python数据类型之dict

    1.clear:删除所有元素 #D.clear() -> None. Remove all items from D dic_a ={:::'gen'} dic_a.clear() print( ...

  6. JdbcUtils

    JdbcUtils 项目结构   db.properties driverClass=com.mysql.jdbc.Driver url=jdbc:mysql:///myTest username=r ...

  7. HBase(二): c#访问HBase之股票行情Demo

    上一章完成了c#访问hbase的sdk封装,接下来以一个具体Demo对sdk进行测试验证.场景:每5秒抓取指定股票列表的实时价格波动行情,数据下载后,一方面实时刷新UI界面,另一方面将数据放入到在内存 ...

  8. 计算阶乘n!末尾0的个数

    一.问题描述 给定一个正整数n,请计算n的阶乘n!末尾所含有“0”的个数.例如: 5!=120,其末尾所含有的“0”的个数为1: 10!= 3628800,其末尾所含有的“0”的个数为2: 20!= ...

  9. THCircularProgressView.h 的使用方法

    // // MainViewController.m // fitmiss // // Created by bill on 13-4-11. // Copyright (c) 2013年 lear. ...

  10. LintCode "Backpack"

    A simple variation to 0-1 Knapsack. class Solution { public: /** * @param m: An integer m denotes th ...