基于R语言的假设检验(一)

假设检验是根据一定假设条件由样本推断总体的一种方法,该假设检验方法需要完成如下5个步骤

1)提出原假设和备择假设;

2)选定置信水平alpha,一般可以是0.025,0.05或0.1;

3)构造并计算检验统计量;

4)查找某种分布函数的临界值表

5)通过比较统计量和临界值,确定统计量是否落在拒绝域中。

一般是通过比较P值与置信水平的关系,如果P值小于置信水平,则认为需要拒绝原假设,否则不能拒绝原假设。假设检验包含左尾、右尾和双尾三种检验


由于自然界中绝大多数的随机变量都服从或近似服从正态分布,所以在这样的分布情况下介绍假设检验中有关均值和方差的两个内容:


单样本均值的假设检验

1)提出原假设和备择假设

0?wx_fmt=png
2)构造并计算检验统计量

总体方差已知时

0?wx_fmt=png
总体方差未知时

0?wx_fmt=png
3)计算P值(当已知总体均值时,使用正态分布(pnorm),否则使用t分布(pt))

右尾

0?wx_fmt=png
左尾

0?wx_fmt=png
双尾

0?wx_fmt=png


应用

有关单样本均值的假设检验可以通过R中的t.test()函数实现,该函数的语法和参数如下:

t.test(x, y = NULL,

alternative = c("two.sided", "less", "greater"),

mu = 0, paired = FALSE, var.equal = FALSE,

conf.level = 0.95, ...)


x,y为指定分析的数据对象;

alternative指定假设检验的三种形式,默认为双尾检验;

mu为零假设条件下的总体均值,默认为0;

paried指定是否进行配对假设检验,默认不进行配对检验;

var.equal指定两样本方差是否相等,默认不等;

conf.level指定置信水平,默认为0.95。


set.seed(1234)

x <- rnorm(1000, mean = 2.5, sd = 3)

#检验总体均值是否为3

t.test(x, mu = 3)

#检验总体均值是否为2.5

t.test(x, mu = 2.5)

0?wx_fmt=png

上图的结果返回检验的P值和x的置信区间,从P值可知,样本均值为3的假设检验并没有通过,即认为总体均值不为3。


两样本均值的假设检验

1)提出原假设和备择假设

0?wx_fmt=png
2)构造并计算检验统计量

两总体方差相等且已知时

0?wx_fmt=png
两总体方差相等且未知时

0?wx_fmt=png
两总体方差不等且未知时

0?wx_fmt=png

3)计算P值

与单样本P值计算方法一致


应用

t.test()函数还可以实现两样本的假设检验。

set.seed(1234)

x <- rnorm(1000, mean = 2.5, sd = 3)

y <- rt(500,3)

z <- rnorm(500, mean = 2.4, sd = 3)

#检验两样本均值是否相等

t.test(x, y)

t.test(x, z)

0?wx_fmt=png

从上图的结果中显示x和y的均值不等(P值远远小于0.05),而x和z的均值相等(P=0.8342>0.05)。


#两样本均值的配对检验

t.test(y, z, paired = TRUE)

t.test(y-z)

0?wx_fmt=png

上图结果显示,配对样本y与z的均值也不相等(P值远小于0.05)。


以上t.test()函数只是假设总体方差未知的情况下,计算单样本或两样本的均值假设检验,如果已知总体方差的话,可以使用BSDA包中的z.test()函数。


单样本方差的假设检验

1)提出原假设和备择假设

0?wx_fmt=png
2)构造并计算检验统计量

总体均值已知时

0?wx_fmt=png
总体均值未知时

0?wx_fmt=png
P值计算

P值的计算同单样本P值计算方法一致


应用

R中没有自带的函数可以实现单样本的方差假设检验,这里自定义函数实现检验功能:

univariate.var.test=function(x,var,mu=Inf,

alternative="two.sided"){

n=length(x)

#均值未知时的自由度

df=n-1

#均值未知时的方差估计值

var.est=var(x)

#总体均值已知的情况

if(mu<Inf){

df=n;var.est=sum((x-mu)^2)/n

}

#计算卡方统计量

chi2=df*var.est/var

options(digits=3)

#返回结果

return(data.frame(Pop.var = var,

Samp.var = var.est,df = df,

Chi2.stat = chi2,

P = 2*min(pchisq(chi2,df),

pchisq(chi2,df,lower.tail=F))))

#单侧检验时的P值

if(alternative=="greater") result$P=pchisq(chi2,df,lower.tail=F)

else if(alternative=="less") result$P=pchisq(chi2,df)

result

}

#检验总体方差是否为10

univariate.var.test(x, var = 10)

#检验总体方差是否为9.3

univariate.var.test(x, var = 9.3)

#检验总体均值为2.5时,方差是否为9.6

univariate.var.test(x, var = 9.3, mu = 2.5)

0?wx_fmt=png


独立两样本方差的假设检验

1)提出原假设和备择假设

0?wx_fmt=png
2)构造并计算检验统计量

两总体均值已知时

0?wx_fmt=png
两总体均值未知时

0?wx_fmt=png
P值计算

P值的计算同单样本P值计算方法一致


应用

有关两样本总体方差的假设检验可以通过R中的var.test()函数实现,该函数的语法和参数如下:

var.test(x, y, ratio = 1,

alternative = c("two.sided", "less", "greater"),

conf.level = 0.95, ...)


x,y位需要检验的数据对象;

ratio指定两样本方差比值,默认值为1;

alternative指定假设检验的三种方式,默认为双尾检验;

level指定置信水平,默认为0.95。


set.seed(1234)

x <- rnorm(1000, mean = 2.5, sd = 3)

y <- rt(500,3)

z <- rnorm(500,mean = 2.6, sd = 3.25)

#检验两总体方差之间是否相等

var.test(x,y)

var.test(x,z)

0?wx_fmt=png
结果显示x与y的方差不同,而x与z的方差相等。


本文基于参数方法的假设检验讲解基本结束,下期中将会涉及到非参数方法的假设检验。


参考资料

统计建模与R语言

http://www.tuicool.com/articles/AN7fyem


总结:文中涉及到的R包和函数

stats包

t.test()

var.test()

BSDA包

z.test()

  • 3
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值