您的位置:首页 > 其它

基于R语言的数据分析和挖掘方法总结——均值检验

2016-03-14 21:06 681 查看

2.1 单组样本均值t检验(One-sample t-test)

2.1.1 方法简介

t检验,又称学生t(student t)检验,是由英国统计学家戈斯特(William Sealy Gosset, 1876-1937)所提出,student则是他的笔名。t检验是一种检验总体均值的统计方法,当数据中仅含单组样本且样本数较大时(通常样本个数≧30的样本可视为样本数较大),可用这种方法来检验总体均值是否大于、小于或等于某一特定数值。当数据中仅含单组样本但样本数较小时(通常样本个数<30的样本可视为样本数较小),建议改以单组样本秩和检验(Wilcoxon signed-rank test)检验总体中位数。
注:总体中位数经常和均值一样, 因此检验中位数即检验均值。

2.1.2 前提

适用于所有t检验:
大多数的t检定的统计量具有t = Z/k的形式,其中Z与k是已知资料的函数。Z通常被设计成对于对立假说有关的形式,而k是一个尺度参数使t服从于t分布。

Z 服从标准正态分布

(n - 1)k2 服从自由度(n - 1)的卡方分布

Z与k互相独立

2.1.3 公式

单样本t检验
检验零假说为一群来自常态分配独立样本xi之母体期望值μ为μ0可利用以下统计量



该统计量t在零假说:μ=μ0为真的条件下服从自由度为n-1的t分布。

适用条件

已知一个总体均值μ_0

可得到一个样本均值x ̅及该样本的标准差S

样本来自正态或近似正态总体

2.1.4 检验步骤

举例说明:
难产儿出生体重样本,

,一般婴儿出生体重μ0=3.30(大规模调查获得),问在假定难产儿出生体重的标准差与一般儿童相同的情况下,出生体重与难产是否有关?
解:
1. 建立假设,确定检验水平α
要知道难产儿样本的出生体重是否与难产有关,还是和难产没关系,与全体婴儿一样,就得判断难产儿样本对应的总体均值μ和全体婴儿的总体均值μ0是否一样。详细来说,就是要判断这儿是下面两种可能性中的哪一种:
H0:μ = μ0 (无效假设,null hypothesis),说明x ̅和μ0之间的差别仅是由于抽样误差造成的;
H1:μ ≠ μ0(备择假设,alternative hypothesis),说明x ̅和μ0之间有差别(也包含抽样误差的影响)
双侧检验,确定假设的显著水平:α=0.05,即在无效假设H0成立的前提下,计算无效假设正确的概率,也称差异由误差引起的概率。
2. 计算检验统计量



3. 查相应界值表,确定P值,下结论
查表,t_(0.05⁄2.34)=2.032,t0.05,按α=0.05水准,不拒绝H0,两者的差异无统计学意义。
备注:
比较计算得到的t值和理论T值,推断发生的概率,依据下表给出的T值与差异显著性关系表作出判断。




2.1.5 R语言实现

1. 学生t检验(Student’s t-Test):t.test {stats}

a) 方法描述:
用于处理一组或两组样本的t检验。
b) 使用方法:t.test(x, …)

## 默认S3方法:
t.test(x, y = NULL,
alternative = c(“two.sided”, “less”, “greater”),
mu = 0, paired = FALSE, var.equal = FALSE,
conf.level = 0.95, …)
## 带formula的S3方法
t.test(formula, data, subset, na.action, …)

参数说明:




2. 范例:蜥蜴生长的研究

范例背景:

生物多样性对于人类来说是一个重要的议题,地球上的物种丰富,各种动植物都有,1992年联合国在巴西的地球高峰会议通过『生物多样性公约』,自此生物多样性的议题受到了全球的关注,而保育的观念也慢慢的深植于人心。台湾是一个美丽的宝岛,地处于亚热带与热带之间,四季温暖气候宜人且雨量充沛,在峻岭高山中蕴含着丰富的物种。但由于高度的经济开发与都市建设,许多物种的栖息地被破坏殆尽,造成野生动植物数量大量减少,甚至于消失殆尽,鉴于此,许多动物保育学家需进入山林里从事动物保育的工作,以避免一些台湾的特有品种绝种。 蜥蜴是野外常见的小型爬虫类,非常的不起眼,但却是自远古时代就存在的物种,因此引起许多的动物学家的研究兴趣。有一位保育学家对于研究台湾特有种的短肢攀蜥相当热衷,想了解该物种的生长速度,花了两年的时间在中海拔的山区测量该品种蜥蜴的身长并记录的,第一年捕获的蜥蜴共50只,每只都记录身长并于身上加以编号后放生,并于第二年再记录这群蜥蜴的身长,两年前的记录显示该地区该品种蜥蜴的平均身长为18厘米,而一年前与今年所测量的数据共有50笔列于表中。




问题:

保育学家想了解在第一年所捕获的蜥蜴的平均身长是否有比前一年为长,该如何分析呢?
问题解析:因为在两年前的数据中显示当时所测量的蜥蜴平均身长为18厘米,若保育学家想了解第一年测量的平均身长是否大于前一年的数据,仅需讨论"一年前的蜥蜴身长平均是否大于18厘米?"。
统计方法:此问题中变量为蜥蜴身长,为单一变量(一个变量,建议选择单变量分析)。因仅一组样本且此组样本量大于30笔,可采用分析方法:单组样本均值t检验(one-sample t-test),检验一年前的蜥蜴身长平均是否大于18厘米?"。

解析:

此题可建立原假设为"一年前的蜥蜴平均身长小于等于18",即H0: μ第一年身长≦18。

建立数据文件上传,文件格式请参照上传文件说明。

按照分析步骤说明分析数据。

R语言程序:

> summary(S)
Min. 1st Qu.  Median    Mean      3rd Qu.   Max.
13.9   13.1    18.696      919.4   23.4      23.4
> t.test(S,mu=18,alternative=″greater″)
One Sample t-test
data:  S
t = 1.8764, df = 49, p-value = 0.033281
alternative hypothesis: true mean is greater to 18
95 percent confidence interval:
18.0741 Inf
sample estimates:
mean of x
18.696

分析结果:

分析方法:单组样本均值t检验

数据名称:范例A-1

变量名称:第一年身长

显著水平:0.05

检验均值:18

检验方向:右尾检验

计算时间:0.077秒

样本描述统计量I:



I:样本描述统计量都不包含缺失值

单组样本均值t检验:




分析结果建议:
由于检验结果P-值(0.033281) < 显著水平0.05,因此可拒绝原假设。

2.2 (独立)两组样本均数的t检验(Two-sample t-test)

2.2.1 方法简介

此处使用的统计分析方法---t检验,又称学生t(student t)检验,是由英国统计学家戈斯特(William Sealy Gosset, 1876-1937)所提出,student则是他的笔名。t检验是一种检验总体平均数的统计方法,当数据中两组样本的样本数都较大时(通常样本个数≧30的样本可视为样本数较大),可用此方法检验两组样本间总体平均数的差异值是否大于、小于或等于某一特定数值。当数据中样本数较小时(通常样本个数<30的样本可视为样本数较小),建议改用(独立)两组样本秩和检验(Wilcoxon ranKolmogorov-Smirovum test)检验中位数差。
注:总体中位数往往和平均数一样, 因此检验中位数差即检验平均数差。

2.2.2 公式

1.样本数及变异数相等

若二群独立样本x1i与x2i具有相同之样本数n,并且彼此独立及来自二个变异数相等的常态分配,则二群母体之期望值差μ1 - μ2是否为μ0可利用以下统计量




2.样本数不相等但变异数相等

若二群独立样本x1i与x2i具有不相同之样本数n1与n2,并且彼此独立及来自二个变异数相等的常态分配,则二群母体之期望值差μ1 - μ2是否为μ0可利用以下统计量



该统计量t在零假说:μ1 -μ2 =μ0为真的条件下服从自由度为n1 + n2 − 2的t分布。

3.变异数皆不相等

若二群独立样本x1i与x2j具有相等或不相同之样本数n1与n2,并且彼此独立及来自二个变异数不相等的常态分配,则二群母体之期望值之差μ1 - μ2是否为μ0可利用以下统计量




2.2.3 R语言实现

范例A-11:新药效益的分析

问题描述:

药物对于国人来说使用率非常之高,从日常容易患的感冒、发烧、轻微皮肤疾病及足癣等,还有各种慢性病到严重的各种急症及致命的癌症等。药物种类有内服与外用,颗粒、胶囊与药膏、药布等,还有较特殊者需以针筒注射等各种不同形式的药品。虽然有这么多的药品种类,但对于药品的使用与上市,事实上是非常的严格的,必须经过多次的动物与人体试验及相关单位的审核及检验,才能得到上市的许可。在台湾,由于工作与经济上的压力,失眠困扰大多数人,根据台湾睡眠学会统计,全台有超过200万人睡不好,而保健局统计,台湾人一年口服13亿颗具有安眠或镇静效果的药丸,安眠药已经是台湾药物滥用榜排行第三的药品【服用药物请遵循医师指示】。而此问题正代表着安眠药具有很大市场,因此引起某药商的注意,想引进一款最新的安眠药,实行一系列的人体试验,在这试验中厂商准备了三组受试者,每组各有40人,第一组使用厂商引进的新药物,第二组则是使用坊间最受欢迎的药物(称为旧药物),最后一组则是给予安慰剂。在使用药物后记录每个受试者自服药后到入眠的时间长短(单位:分钟),所有受试者的数据列于下表中。




问题:

厂商在推出新药物之前,须先了解效果是否较原贩卖的旧药物更佳,才能决定是否贩卖,请问厂商是否应贩卖新的药物呢?与旧药物相比较,新药是有效的吗?
问题解析:此处要了解新药的药效与旧药的药效相比是否有差异,即比较服用新药后的平均入眠时间是否少于服用旧药后的平均入眠时间,讨论问题"服用新药后的平均入眠时间减去服用旧药后的平均入眠时间是否小于0?"。
统计方法:此问题中,变量为受试者的入眠时间,为单一变量(一个变量,建议选择单变量分析);使用新药物与旧药物比较可视为有二组的数据,样本量为40,大于30;二组受试者之间并无关联,为独立样本;可采用分析方法:(独立)两组样本均值差异t检验(two-sample t-test),检验"服用新药后的平均入眠时间减去服用旧药后的平均入眠时间是否小于0?"。

解析:

此题可建立原假设为"服用新药后的平均入眠时间减去服用旧药后的平均入眠时间大于等于0",即H0: μ新药物- μ旧药物≧0。

建立数据文件上传,文件格式请参照上传文件说明。

按照分析步骤说明分析数据。

R语言程序:

p_value = function(x,y,z){
x=data.frame(x)
y=data.frame(y)
c=nrow(x)
d=nrow(y)
colnames(x)='variable'
colnames(y)='variable'
a=data.frame(rep('A',c))
b=data.frame(rep('B',d))
colnames(a)='group'
colnames(b)='group'
data=data.frame(variable=rbind(x,y),group=rbind(a,b))
if(leveneTest(variable~group,data)$Pr[1] =='NaN'){
print(NA)
}else{
if(leveneTest(variable~group,data)$Pr[1] >0.05){
t.test(x,y,paired=z)$p.value
}else{
wilcox.test(data[1:c,1],data[(c+1):(c+d),1],paired=z)$p.value
}
}
}
> a=c(1,2,5,7,9,0)
> b=c(2,3,4,3,6,4)
> p_value(a,b,TRUE) #for unpaired data
[1] 0.8316408
> p_value(a,b,FALSE) #for paired data
[1] 0.9358497

分析结果:

分析方法:(独立)两组样本均值差异t检验

数据名称:范例A-11

检验变量:_NEW_

分组变量:_GROUP_(新药物, 旧药物)

显著水平:0.05

检验均值差异:0

检验方向:左尾检验

计算时间:0.094秒

样本描述统计量I:

I:样本描述统计量都不包含缺失值

两组样本方差(标准差)齐性检验I:

I:分组变量为_GROUP_ II:显著性代码:‘***’ : < 0.001, ‘**’ : < 0.01, ‘*’ : < 0.05, ‘#’ : < 0.1

两组样本均值差异t检验(独立样本)I,II:

I:分组变量为_GROUP_ II:根据两组样本方差检验结果,假设两总体具有相同方差进行两组样本均值差异t检验 III:显著性代码:‘***’ : < 0.001, ‘**’ : < 0.01, ‘*’ : < 0.05, ‘#’ : < 0.1

分析结果建议: 由于检验结果P-值(3.5846e-08) < 显著水平0.05,因此可拒绝原假设。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: