本文对应《R语言实战》第12章:重抽样与自助法

之前学习的基本统计分析、回归分析、方差分析,是假定观测数据抽样自正态分布或者其他性质较好的理论分布,进而进行的假设检验和总体参数的置信区间估计等方法。但在许多实际情况中统计假设并不一定满足,比如抽样于未知或混合分布、样本量过小、存在离群点、基于理论分布设计合适的统计检验过于复杂且数学上难以处理等情况,这时基于随机化和重抽样的统计方法就可派上用场。

本章探究两种应用广泛的依据随机化思想的统计方法:置换检验和自助法。

=====================================================================

置换检验:

也称随机化检验或重随机化检验。置换方法和参数方法都计算了相同的t统计量。但置换方法并不是将统计量与理论分布进行比较,而是将其与置换观测后获得的经验分布进行比较,根据统计量值的极端性判断是否有足够理由拒绝零假设。这种逻辑可以延伸到大部分经典统计检验和线性模型上来。

常用的置换检验包有两个:coin包和lmPerm包。coin包对于独立性问题提供了一个非常全面的置换检验框架,而lmPerm包则专门用来做方差分析和回归分析的置换检验。

coin包:

提供了一个进行置换检验的一般性框架,判断响应值与组的分配是否独立;两个数值变量是否独立;两个类别型变量是否独立。

主要函数:

检验

coin函数

两样本和K样本置换检验

oneway_test(y ~ A)

含一个分层(区组)因子的两样本和K样本置换检验

oneway_test(y ~ A | C)

Wilcoxon-Mann-Whitney秩和检验

wilcox_test(y ~ A)

Kruskal-Wallis检验

kruskal_test(y ~ A)

Person卡方检验

chisq_test(A ~ B)

Cochran-Mantel-Haenszel检验

cmh_test(A ~ B | C)

线性关联检验

lbl_test(D ~ E)

Spearman检验

spearman_test(y ~ x)

Friedman检验

friedman_test(y ~ A | C)

Wilcoxon符号秩检验

wilcoxsign_test(y1 ~ y2)

在coin函数中,y和x是数值变量,A和B是分类因子,C是类别型区组变量,D和E是有序因子,y1和y2是相匹配的数值变量

函数形式:

function_name(formula, data, distribution = )

data是数据框formula描述的是要检验变量间的关系

distribution指定经验分布在零假设条件下的形式,可能值有exact, asymptotic, approximate

其中,exact: 在零假设条件下,分布的计算是精确的(依据所有的排列组合)

asymptotic: 根据渐进分布重抽样

distribution = approximate(B = #): 根据蒙特卡洛重抽样,其中#指所需重复的次数

lmPerm包:线性模型的置换检验(回归与方差分析)

lmp()函数、aovp()函数的参数与lm()和aov()函数类似,只额外添加了perm = 参数:可选项有Exact, Prob, SPR

Exact: 精确检验

Prob: 从所有可能的排列中不断抽样,直至估计的标准差在估计的p值0.1之下,判停准则由可选的Ca参数控制

SPR: 使用贯序概率比检验来判断何时停止抽样

注意:若观测数大于10,perm = “Exact” 将自动默认转为 perm = “Prob”因为精确检验只适用于小样本问题。

其他置换检验相关的包:

perm包能实现coin包中的部分功能,可作为coin包所得结果的验证;

corrperm包提供了有重复测量的相关性的置换检验;

logregperm包提供了Logistic回归的置换检验;

glmperm包涵盖了广义线性模型的置换检验。

置换检验发挥功用的地方是处理非正态数据(如分布偏倚很大)、存在离群点、样本很小或无法做参数检验等情况。不过,如果初始样本对感兴趣的总体情况代表性很差,即使是置换检验也无法提高推断效果。

置换检验主要用于生成检验零假设的p值,有助于回答“效应是否存在”这样的问题。不过,置换方法对于获取置信区间和估计测量精度是比较困难的。而自助法可以解决这个问题。

====================================================================

自助法:

从初始样本重复随机替换抽样,生成一个或一系列待检验统计量的经验分布。无需假设一个特定的理论分布,便可生成统计量的置信区间,并能检验统计假设。

boot包:扩展了自助法和重抽样的相关用途。可以对一个统计量(如中位数)或一个统计向量(如一系列回归系数)使用自助法。

自助法有三个步骤:

1.  写一个能返回待研究统计量值的函数。如果只有单个统计量(如中位数),函数应该返回一个数值;如果有一列统计量(如一列回归系数),函数应该返回一个向量。

2.  为生成R中自助法所需的有效统计量重复数,使用boot()函数对上面所写的函数进行处理。

3.  使用boot.ci()函数获取第2步生成的统计量的置信区间。

#生成boot对象
bootobject <- boot(data = , statistic = , R = , …)
#data为向量、矩阵或数据框
#statistic生成k个统计量以供自举的函数(k=1时对单个统计量进行自助抽样)
# 函数需要包括indices参数,以便boot()函数用它从每个重复中选择实例
#R为自助抽样的次数 #获取统计量的置信区间
boot.ci(bootobject, conf = , type = )
#conf 预期的置信区间,默认conf = 0.95
#type 返回置信区间的类型,可能为norm, basic, stud, perc, bca, all(默认为all)

  

本章主要解决的问题:无需理论分布的知识便能够进行假设检验、获得置信区间。当数据来自未知分布,或者存在严重的离群点,或者样本量过小,又或者没有参数方法可以回答感兴趣的假设问题时,这些方法是非常实用的。但是置换检验和自助法不是万能的,当初始样本对于总体情况的代表性不佳,或者样本量过小而无法准确地反应总体情况,这些方法也爱莫能助。

R语言实战(六)重抽样与自助法的更多相关文章

  1. R in action读书笔记(16)第十二章 重抽样与自助法之 置换检验

    第十二章:重抽样与自助法 本章,我们将探究两种应用广泛的依据随机化思想的统计方法:置换检验和自助法 12.1 置换检验 置换检验,也称随机化检验或重随机化检验. 有两种处理条件的实验,十个受试者已经被 ...

  2. R语言实战

    教材目录 第一部分 入门 第一章 R语言介绍 第二章 创建数据集 第三章 图形初阶 第四章 基本数据管理 第五章 高级数据管理 第二部分 基本方法 第六章 基本图形 第七章 基本统计方法 第三部分 中 ...

  3. R 语言实战-Part 3 笔记

    R 语言实战(第二版) part 3 中级方法 -------------第8章 回归------------------ #概念:用一个或多个自变量(预测变量)来预测因变量(响应变量)的方法 #最常 ...

  4. R语言实战(二)数据管理

    本文对应<R语言实战>第4章:基本数据管理:第5章:高级数据管理 创建新变量 #建议采用transform()函数 mydata <- transform(mydata, sumx ...

  5. R入门<三>-R语言实战第4章基本数据管理摘要

    入门书籍:R语言实战 进度:1-4章 摘要: 1)实用的包 forecast:用于做时间序列预测的,有auto.arima函数 RODBC:可以用来读取excel文件.但据说R对csv格式适应更加良好 ...

  6. R语言实战(三)基本图形与基本统计分析

    本文对应<R语言实战>第6章:基本图形:第7章:基本统计分析 =============================================================== ...

  7. R语言实战(四)回归

    本文对应<R语言实战>第8章:回归 回归是一个广义的概念,通指那些用一个或多个预测变量(也称自变量或解释变量)来预测响应变量(也称因变量.效标变量或结果变量)的方法.通常,回归分析可以用来 ...

  8. R语言实战(五)方差分析与功效分析

    本文对应<R语言实战>第9章:方差分析:第10章:功效分析 ================================================================ ...

  9. 《数据挖掘:R语言实战》

    <数据挖掘:R语言实战> 基本信息 作者: 黄文    王正林 丛书名: 大数据时代的R语言 出版社:电子工业出版社 ISBN:9787121231223 上架时间:2014-6-6 出版 ...

随机推荐

  1. Jmeter javaRequest插件开发

    1. 适用场景 Jmeter工具当前支持的协议或协议所支持的传输方式及传输内容不能满足当前项目的测试要求时,就需要根据实际要求手动编写java测试代码(实现对应的Jmeter规范),以插件方式加载到J ...

  2. 【BZOJ】3456: 城市规划 动态规划+多项式求逆

    [题意]求n个点的带标号无向连通图个数 mod 1004535809.n<=130000. [算法]动态规划+多项式求逆 [题解]设$g_n$表示n个点的无向图个数,那么显然 $$g_n=2^{ ...

  3. 2016-2017-2 《Java程序设计》第五周学习总结

    20155223 2006-2007-2 <Java程序设计>第五周学习总结 教材学习内容总结 第八章 try.catch语法:若程序发生错误,执行流程就调离错误点,然后比较catch括号 ...

  4. 远程连接工具PuTTY和MTPuTTY

    PuTTY是一个Telnet.SSH.rlogin.纯TCP以及串行接口连接软件 官网 http://www.chiark.greenend.org.uk/~sgtatham/putty/ putty ...

  5. 【leetcode 简单】 第五十九题 同构字符串

    给定两个字符串 s 和 t,判断它们是否是同构的. 如果 s 中的字符可以被替换得到 t ,那么这两个字符串是同构的. 所有出现的字符都必须用另一个字符替换,同时保留字符的顺序.两个字符不能映射到同一 ...

  6. 【转】WireShark 过滤规则

    原链:[渗透神器系列]WireShark wireshark是一款网络流量抓取分析神器,也是安全工具使用排行中排名第一的工具.使用wireshark必须要牢记一些常用的数据包过滤规则,对于寻找一些特定 ...

  7. Android笔记之广播

    为了容易理解,可以将广播代入到事件模型中,发送广播消息看做是触发event,BroadcastReceiver是处理事件的回调逻辑. 广播这种模型中涉及到两个角色,就是广播的发送者和接收者,所以会涉及 ...

  8. Python练习-time模块

    明天的明天的明天,雾草! # 编辑者:闫龙 #显示当前时间三天后是星期几? import time t = time.time()+((24*3600)*3) tl = time.localtime( ...

  9. JS设计模式——8.桥接模式

    桥接模式的用途 在实现API的时候,桥接模式非常有用. 在设计一个JavaScript API的时候,可以用这个模式来弱化它与使用它的类和对象之间的耦合. 示例:事件监听器 桥接模式最常见和实际的应用 ...

  10. Python——列表的操作

    列表的操作:详细+易出错假设有两个列表:    list1 = [1,2,3]    list2 = ['a','b','c']列表的操作: 1.list.append()    append只接受一 ...