博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
R语言中的Wilcoxon符号秩检验与配对学生t检验
阅读量:5885 次
发布时间:2019-06-19

本文共 4398 字,大约阅读时间需要 14 分钟。

在这篇文章中,我们将探索比较两组依赖(即成对)定量数据的测试:Wilcoxon符号秩检验和配对学生t检验。这些测试之间的关键区别在于Wilcoxon的测试是非参数测试,而t测试是参数测试。在下文中,我们将探讨这种差异的后果。

睡眠数据集

我们来考虑睡眠数据集。数据集通过提供服用药物后睡眠时间与基线相比的变化来对比两种催眠药物(即安眠药)的效果:

 
##    extra group ID## 1    0.7     1  1## 2   -1.6     1  2## 3   -0.2     1  3## 4   -1.2     1  4## 5   -0.1     1  5## 6    3.4     1  6## 7    3.7     1  7## 8    0.8     1  8## 9    0.0     1  9## 10   2.0     1 10## 11   1.9     2  1## 12   0.8     2  2## 13   1.1     2  3## 14   0.1     2  4## 15  -0.1     2  5## 16   4.4     2  6## 17   5.5     2  7## 18   1.6     2  8## 19   4.6     2  9## 20   3.4     2 10

extra表示与基线测量相比睡眠中的增加/减少(正/负值),表示药物,ID表示患者ID。为了更清楚,我将重命名为药物

>colnames(sleep)[which(colnames(sleep) ==

注意,睡眠数据集包含每个患者的两个测量值。因此,它适合于展示配对测试,例如我们正在处理的测试。

我们测试的是什么?

假设我们在一家制药公司工作,这些是刚从临床试验中获得的数据。现在,我们必须决定你应该推出哪两种药物用于市场释放。选择药物的合理方法是确定表现更好的药物。更具体地说,问题是:用更大的值相关联的药物之一额外的比其他药物?

为了直观了解这两种药物的有效性,让我们绘制相应的值:

该图显示药物1的睡眠时间的中值增加接近0,而药物2的中值增加接近2小时。因此,根据这些数据,似乎药物2比药物1更有效。但是,我们仍需要确定我们的发现是否具有统计学意义。

零假设

该测试的零假设是两种药物之间的额外睡眠时间没有任何差异。由于我们想知道药物2是否优于药物1,我们不需要双尾测试(测试任何药物是否具有优异的性能),而是单尾测试。因此,零假设的备选方案是药物2与更大的值相关联的额外的比药物1。

 Wilcoxon符号秩检验

Wilcoxon签名等级测试使用签名等级的总和作为测试统计 w ^w ^:

w ^= Σi = 1ñ[ sgn(x2 ,我- x1 ,我)⋅ ř一世]w ^=Σ一世=1ñ[SGN⁡(X2,一世- X1,一世)⋅[R一世]

在这里, 一世一世- 的 ññ 测量对用表示 X一世= (x1 ,我,x2 ,我)X一世=(X1,一世,X2,一世) 和 [R一世[R一世表示该对的等级。等级仅表示观察在有序列表中的位置| X2 ,我- x1 ,我||X2,一世- X1,一世|。测试统计量的存在是具有大的绝对差异的对将具有大的等级[R一世[R一世。因此,这些对是决定因素w ^w ^,虽然表现出小的绝对差异的对具有低 [R一世[R一世因此对测试结果的影响很小。由于检验统计量是基于排名而不是测量值本身,因此Wilcoxon符号秩检验可以被认为是测试两组之间中值变化。

 

要在R中执行测试,我们可以使用该wilcox.test功能。但是,我们必须明确设置配对参数,以表明我们正在处理匹配的观察。要指定单尾测试,我们将替代参数设置为更大。以这种方式,测试的替代方案是药物2是否与睡眠持续时间的较大增加相关联而不是药物1。

code>x <- sleep$extra[sleep$drug == 2]y <- sleep$extra[sleep$drug == 1]res <- wilcox.test(x, y, paired = TRUE,                    alternative = "greater"
## Warning in wilcox.test.default(x, y, paired = TRUE, alternative =## "greater"): cannot compute exact p-value with ties
## Warning in wilcox.test.default(x, y, paired = TRUE, alternative =## "greater"): cannot compute exact p-value with zeroes

 警告

在获得结果之前,我们应该调查执行测试所产生的两个警告。

警告1:关系

出现第一个警告是因为测试extra对对的值进行了排序。如果两对共享相同的差异,则在排名期间会出现关系。我们可以通过计算对之间的差异来验证这一点

x - y
##  [1] 1.2 2.4 1.3 1.3 0.0 1.0 1.8 0.8 4.6 1.4

并发现对3和4都具有1.3的相同差异。为什么领带有问题?分配给关系的等级基于它们所跨越的等级的平均值。因此,如果存在许多联系,则会降低检验统计量的表现力,使得Wilcoxon检验不合适。由于我们这里只有一个关系,这不是问题。

警告2:零值

第二个警告涉及差异为0的对。在睡眠数据集中,来自第5个患者的情况就是这种情况(见上文)。为什么零是个问题?请记住,零假设是对的差异以0为中心。但是,观察值恰好为0的差异并不能为我们提供任何拒绝零的信息。因此,在计算测试统计量时丢弃这些对。如果许多对的情况如此,则测试的统计功效将大幅下降。同样,这对我们来说不是问题,因为只存在一个零值。

调查结果

测试的主要结果是它的p值,可以通过以下方式获得:

res$p.value
## [1] 0.004545349

由于p值小于5%的显着性水平,这意味着我们可以拒绝零假设。因此,我们倾向于接受替代假设,该假设指出药物2优于药物1。

配对学生的t检验

配对Student's t检验是对两组配对定量测量方法的参数检验。这里,参数意味着t检验假设样本之间的平均差异是正态分布的。测试依赖于确定两组的测量值的平均差异,X¯dX¯d 大于 μdμd,哪里 μdμd通常设置为0以查找是否存在任何差异。测试统计,

 

t = X.¯d- μ0小号dñ√,Ť=X¯d- μ0小号dñ,

 

使用差异的标准差归一化, 小号d小号d,以及对的数量 ññ。按照规范化小号dñ√小号dñ,检验统计量根据样本数量调整检验统计量的值(| t ||Ť| 随着样本的增加而增加)和差异的标准差(| t ||Ť| 如果偏差增加则减少)。

在R中,我们可以使用该t.test函数执行配对t检验。请注意,t.test假设人口差异不相等。在这种情况下,测试也称为Welch的t检验。为了获得原始t检验,假设人口方差相等,我们可以将equal.var参数设置为TRUE。在这里,我们将使用默认设置:

t.result <- t.test(x,y, paired = TRUE, alternative = "greater")print(t.result$p.value)
## [1] 0.001416445

同样,p值小于0.05。因此,我们倾向于接受替代假设:药物2与平均睡眠持续时间的增加相关,而不是药物1。

检查学生t检验的假设

t检验要求样本均值是正态分布的。通过,来自总体的样本的均值接近正常分布的足够数量的样本。因此,只要存在足够数量的样本,即使对于非正常测量,也满足t检验的假设。由于睡眠数据仅包含10对配对测量,因此应该有理由担心。因此,我们应检查测量之间的差异是否正常分布,以验证t检验是否有效:

diff.df <- data.frame(diff = sleep$extra[sleep$drug == 1] - sleep$extra[sleep$drug == 2])ggplot(diff.df, aes(x = diff)) + geom_histogram()
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

查看直方图,数据似乎比正态分布更均匀。为了进一步了解,我们将差异与使用的正态分布预期的值进行比较:

require(car) # load car package to use 'qqp' rather than native 'qqplot' function
## Loading required package: car
qqp(diff.df$diff)

QQ图显示,除了重尾之外,差异非常适合普通模型。由此,我们可以得出结论,充分满足了t检验的假设。尽管如此,我们还是对t检验是否是这些数据最合适的选择感到不确定。

摘要:Wilcoxon符号秩检验与配对学生t检验

在这项分析中,Wilcoxon符号秩检验和配对学生t检验导致拒绝零假设。但总的来说,哪种测试更合适?答案是,它取决于几个标准:

  • 假设:学生的t检验是一种比较均衡的方法,而Wilcoxon则测试数据的排序。例如,如果您正在分析具有许多异常值的数据,例如个人财富(少数亿万富翁可能会极大地影响结果),那么Wilcoxon的测试可能更合适。
  • 解释:虽然也可以计算Wilcoxon检验的置信区间,但在t检验中平均值的置信区间似乎比Wilcoxon检验的假医生更为自然。
  • 假设的实现:可能无法满足学生t检验的假设。在这种情况下,选择参数测试通常更安全。然而,如果满足t检验的假设,它具有比Wilcoxon检验更大的功效。

由于睡眠数据集的样本量很小,我更喜欢Wilcoxon的测试这些数据。

你会用哪种测试?一般来说,你更喜欢一个测试吗?

 

  •  

    非常感谢您阅读本文,有任何问题请联系我们!

     

     -中国专业的第三方数据服务提供商,提供定制化的一站式数据挖掘和统计分析咨询服务

    统计分析和数据挖掘咨询服务:(咨询服务请联系)

    ​QQ:3025393450

    【服务场景】  

    科研项目; 公司项目外包;线上线下一对一培训;数据采集;学术研究;报告撰写;市场调查。

    【大数据部落】提供定制化的一站式数据挖掘和统计分析咨询

     

转载于:https://www.cnblogs.com/tecdat/p/10820878.html

你可能感兴趣的文章
(转)微信网页扫码登录的实现
查看>>
mariadb启动报错:[ERROR] Can't start server : Bind on unix socket: Permission denied
查看>>
nginx的信号量
查看>>
云im php,网易云IM
查看>>
河南农业大学c语言平时作业答案,河南农业大学2004-2005学年第二学期《C语言程序设计》期末考试试卷(2份,有答案)...
查看>>
c语言打开alist文件,C语言 文件的打开与关闭详解及示例代码
查看>>
c语言 中的共用体和结构体如何联合定义,结构体(Struct)、联合体(Union)和位域
查看>>
SDL如何嵌入到QT中?!
查看>>
P1026 统计单词个数
查看>>
[js高手之路] html5 canvas系列教程 - 状态详解(save与restore)
查看>>
poi excel 常用api
查看>>
AD提高动态的方法(附SNR计算)
查看>>
[转]轻松实现可伸缩性,容错性,和负载平衡的大规模多人在线系统
查看>>
五 数组
查看>>
也谈跨域数据交互解决方案
查看>>
EntityFramework中使用Include可能带来的问题
查看>>
面试题28:字符串的排列
查看>>
css important
查看>>
WPF 实现窗体拖动
查看>>
来自维基百科程序员Brandon Harris
查看>>