在读到《R语言实战》(第二版)P143页有关卡方独立性检验所记

假设检验

假设检验(Test of Hypothesis)又称为显著性检验(Test of Ststistical Significance)。

在抽样研究中,由于样本所来自的总体其参数是未知的,只能根据样本统计量对其所来自总体的参数进行估计,如果要比较两个或几个总体的参数是否相同,也只能分别从这些总体中抽取样本,根据这些样本的统计量作出统计推断,籍此比较总体参数是否相同。由于存在抽样误差,总体参数与样本统计量并不恰好相同,因此判断两个或多个总体参数是否相同是一件很困难的事情。

基本的解决方法是:根据问题的需要对所研究的总体作某种假设,记作H0;选取合适的统计量,这个统计量的选取要使得在假设H0成立时,其分布为已知;由实测的样本,计算出统计量的值,并根据预先给定的显著性水平进行检验,作出拒绝或接受假设H0的判断。常用的假设检验方法有u—检验法、t—检验法、χ2检验法、F—检验法,秩和检验等。

χ2独立性检验

χ2检验是一种无参数的假设检验。

考虑这以一个问题:某地区有10000合法选民,现统计了男性和女性分别有多少人参加了投票。

              Men     Women
_____________________________
Voted           2792    3591
Didn't vote     1486    2131

问“性别”和“投票”是不是相互独立的?

下面就使用假设检验的方法解决这个问题。

我们假设H0:性别和投票相互独立。备选假设H1:性别与投票相关。

计算上表的行和与列和。

 OBSERVED TABLE

                Men     Women   Total
_____________________________ |______
Voted           2792    3591  | 6383
Didn't vote     1486    2131  | 3617
_____________________________________
Total           4278    5722  | 10000

原始表中的数据用Aij表示,行和用A表示,列和用A·j表示,全部元素的和用A··表示。

投票的概率:

P(v)=A/A··=0.6386

选民为男性的概率:

P(m)=A·1/A··=0.4278

在H0下,我们认为投票与性别无关,所以男性参加投票的概率为:

P(m,v)=P(m)P(v)=0.2731

这样可以算出男性投票的期望值:0.2731×10000=2731。于是就得到了下面这张“期望表”

        EXPECTED TABLE

                Men     Women   Total
_____________________________ |______
Voted           2731    3652  | 6383
Didn't vote     1547    2070  | 3617
_____________________________________
Total           4278    5722  | 10000

观察值与期望值的差值为误差。对于每一个观察值我们计算误差的平方与期望值的比值。

c11 = (2792-2731)^2/2731
c12 =
(3591-3652)^2/3652
c21 =
(1486-1547)^2/1547
c22 =
(2131-2070)^2/2070

χ2=c11+c12+c21+c22=6.584283457

定义自由度为(rows-1)*(cols-1),在我们的例子中自由度为1。

查表:

Degrees of
 freedom        99%  ...        10%     5%      1%
_____________________________________________________
1               0.00016         2.71    3.84    6.64
2               0.020           4.60    5.99    9.21

由于χ2介于3.84和6.64之间,所以P值介于5%和1%之间,也就是说我们接收假设H0的把握还不到5%,因此拒绝它。此时假设H1成立!

配合书本:

> # Listing 7.12 - Chi-square test of independence
> library(vcd)
载入需要的程辑包:grid
> mytable <- xtabs(~Treatment+Improved, data=Arthritis)
> chisq.test(mytable)

	Pearson's Chi-squared test

data:  mytable
X-squared = 13.055, df = 2, p-value = 0.001463
#你拒绝了治疗类型和治疗结果相互独立的原假设。患者接受的治疗和改善的水平看上去存在着某种关系(p<0.01)
> mytable <- xtabs(~Improved+Sex, data=Arthritis)
> chisq.test(mytable)

	Pearson's Chi-squared test

data:  mytable
X-squared = 4.8407, df = 2, p-value = 0.08889
#概率不够小,故没有足够的理由说明治疗结果和性别之间是不独立的。患者性别和改善情况之间却不存在关系(p>0.05)
Warning message:
In chisq.test(mytable) : Chi-squared近似算法有可能不准
>
> # Fisher's exact test
> mytable <- xtabs(~Treatment+Improved, data=Arthritis)
#Fisher精确检验的原假设是:边界固定的列联表中行和列是相互独立的
#fisher.test()函数可以在任意行列数大于等于2的二维列联表上使用,但不能用于2×2的列联表
> fisher.test(mytable)

	Fisher's Exact Test for Count Data

data:  mytable
p-value = 0.001393
alternative hypothesis: two.sided

>
> # Chochran-Mantel-Haenszel test
> mytable <- xtabs(~Treatment+Improved+Sex, data=Arthritis)
#检验治疗情况和改善情况在性别的每一水平下是否独立
> mantelhaen.test(mytable)

	Cochran-Mantel-Haenszel test

data:  mytable
Cochran-Mantel-Haenszel M^2 = 14.632, df = 2, p-value = 0.0006647
#患者接受的治疗与得到的改善在性别的每一水平下并不独立

本节主要介绍了基于卡方分布的独立性检验,如果不独立,那么就相关,相关性如何,请看相关性的度量

基于卡方的独立性检验原理及R语言实现的更多相关文章

  1. 决策树ID3原理及R语言python代码实现(西瓜书)

    决策树ID3原理及R语言python代码实现(西瓜书) 摘要: 决策树是机器学习中一种非常常见的分类与回归方法,可以认为是if-else结构的规则.分类决策树是由节点和有向边组成的树形结构,节点表示特 ...

  2. 主成分分析(PCA)原理及R语言实现

    原理: 主成分分析 - stanford 主成分分析法 - 智库 主成分分析(Principal Component Analysis)原理 主成分分析及R语言案例 - 文库 主成分分析法的原理应用及 ...

  3. 主成分分析(PCA)原理及R语言实现 | dimension reduction降维

    如果你的职业定位是数据分析师/计算生物学家,那么不懂PCA.t-SNE的原理就说不过去了吧.跑通软件没什么了不起的,网上那么多教程,copy一下就会.关键是要懂其数学原理,理解算法的假设,适合解决什么 ...

  4. 《R语言实战》读书笔记 第七章--基本统计分析

    在导入数据并且将数据进行组织和初步可视化以后,需要对数据进行分布探索和两两关系分析等.主要内容有描述性统计分析.频数表和列联表.相关系数和协方差.t检验.非参数统计. 7.1描述性统计分析 7.1.1 ...

  5. 比较分析C++、Java、Python、R语言的面向对象特征,这些特征如何实现的?有什么相同点?

    一门课的课后题答案,在这里备份一下: 面向对象程序设计语言 –  比较分析C++.Java.Python.R语言的面向对象特征,这些特征如何实现的?有什么相同点? C++ 语言的面向对象特征: 对象模 ...

  6. R语言中的遗传算法详细解析

    前言 人类总是在生活中摸索规律,把规律总结为经验,再把经验传给后人,让后人发现更多的规规律,每一次知识的传递都是一次进化的过程,最终会形成了人类的智慧.自然界规律,让人类适者生存地活了下来,聪明的科学 ...

  7. R语言服务器程序 Rserve详解

    R语言服务器程序 Rserve详解 R的极客理想系列文章,涵盖了R的思想,使用,工具,创新等的一系列要点,以我个人的学习和体验去诠释R的强大. R语言作为统计学一门语言,一直在小众领域闪耀着光芒.直到 ...

  8. 卡方分布、卡方独立性检验和拟合性检验理论及其python实现

    如果你在寻找卡方分布是什么?如何实现卡方检验?那么请看这篇博客,将以通俗易懂的语言,全面的阐述卡方.卡方检验及其python实现. 1. 卡方分布 1.1 简介 抽样分布有三大应用:T分布.卡方分布和 ...

  9. 基于R语言的结构方程:lavaan简明教程 [中文翻译版]

    lavaan简明教程 [中文翻译版] 译者注:此文档原作者为比利时Ghent大学的Yves Rosseel博士,lavaan亦为其开发,完全开源.免费.我在学习的时候顺手翻译了一下,向Yves的开源精 ...

随机推荐

  1. 高速排序java语言实现

    本博客不再更新,很多其它精彩内容请訪问我的独立博客 高速排序是非常重要的排序算法,可是我在学的时候发现网上没有特别好的样例所以自己动手写了一个. 自己动手丰衣足食. package sort; imp ...

  2. react-native 路由 react-native-router-flux

    引言 react-native-router-flux 是一个基于 react-navigation 路由框架,进一步简化了页面跳转的步骤,并且一直随着 react-navigation升级更新版本. ...

  3. 自上而下渐显图片的CSS3实现

    代码地址如下:http://www.demodashi.com/demo/12160.html 目录 一.实现思路 二.所用特性 三.示例代码 四.实例效果 五.组件化(Vue) 一.实现思路 从效果 ...

  4. Shiro学习小结

    1. What is Shiro? Apache旗下一个开源的Java权限框架,它将软件系统的安全认证相关的功能抽取出来,实现用户身份认证,权限授权.加密.会话管理等功能,组成了一个通用的安全认证框架 ...

  5. JDBC技术总结(一)

    1. JDBC简介 SUN公司为了简化.统一对数据库的操作,定义了一套Java操作数据库的规范,称之为JDBC,JDBC不能直接操作数据库,JDBC通过接口加载数据库的驱动,然后操作数据库.JDBC: ...

  6. 下拉刷新Listview(8.30)

    Android-PullToRefresh 1项目托管地址: https://github.com/bavariama1/Android-PullToRefresh 2 快速开始教程:https:// ...

  7. E - Hangover(1.4.1)

    Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d & %I64u Submit cid=1006#sta ...

  8. 使用putty从linux主机上面往windows主机下面拷贝文件

    更新一下,把putty的包解压以后,想要在dos窗口中直接使用,必须把putty解压的文件的路径添加到环境变量中,这样使用起来就会非常简单了. 郁闷了好久,终于搞定了putty的上传下载文件命令psc ...

  9. 【Hadoop基础教程】2、Hadoop之单机模式搭建(转)

    单机模式所需要的系统资源是最少的,这种安装模式下,Hadoop的core-site.xml.mapred-site.xml.hdfs-site.xml配置文件均为空.默认情况下,官方hadoop-1. ...

  10. 二分Kmeans的java实现

    刚刚研究了Kmeans.Kmeans是一种十分简单的聚类算法.可是他十分依赖于用户最初给定的k值.它无法发现随意形状和大小的簇.最适合于发现球状簇.他的时间复杂度为O(tkn).kmeans算法有两个 ...