登录
首页精彩阅读R语言t检验
R语言t检验
2017-07-19
收藏

R语言t检验

I.单样本t检验

例1. 有原始数据的t检验

已知某水样中含碳酸钙的真值为20.7mg/L,现用某法重复测定该水样12次,碳酸钙的含量分别为..问该法测定碳酸钙含量所得的均值与诊治有无显著差异?

x <- c(20.99,20.41,20.10,20.00,20.91,22.60,20.99,20.42,20.90,22.99,23.12,20.89)
t.test(x, alternative = "greater", mu = 20.7 )

检验结果为t=1.5665,显著性P值=0.07276>0.05,接受原假设,说明该法测定的碳酸钙含量与总体无显著差异。
例2. 无原始数据的t检验

健康成年男子脉搏均数为72次/分。某医生在某山区随机抽查健康成年男子25人,其脉搏均数为74.2次/分,标准差为6.5次/分。根据这个资料能否认为某山区健康成年男子脉搏数与一般健康成年男子的不同?

#根据公式算出t值
x <- 74.2
mu <- 72
thita <- 6.5
n <- 25
t <- (x-mu) / (thita/sqrt(n))   #或者用n-1代替n
t
#用pt()函数,输入t值和自由度df(n-1),得到p值
p <- pt(t,df=24)
p

检验结果为t=1.692308,显著性P值=0.9482341>0.05,接受原假设,说明该法测定的成年男子脉搏数与总体无显著差异,认为某山区健康成年男子脉搏数与一般健康成年男子的相同。
II.配对样本t检验

上面介绍的是已知总体均数时的显著性检验方法,但有时我们并不知道总体均数,且医学数据资料中更为常见的是成对资料,若一批某病病人治疗前有某项测定记录,治疗后再次测定以观察疗效,这样,观察n例就有n对数据,这即是成对资料。如果有两种处理要比较,将每一份标本分成两份各接受一种处理,这样观察到的一批数据也是成对资料。医学科研中有时无法对同一批对象进行前后或对应观察,而只得将病人配成对子,尽量使同对中的两者在性别、年龄或其他可能会影响处理效果的各种条件方面相似,然后进行处理,在观察反应,这样获得的许多对不可拆散的数据同样是成对资料。由于成对资料可控制个体差异使之较小,故检验效率是较高的。

在医学研究中,常用配对设计。配对设计主要有4种情况:同一受试对象处理前后的数据,同一受试对象两个部位的数据,同一样品用两种方法检验的结果,配对的两个受试对象分别接受两种处理后的数据。
例1. 有原始数据的配对t检验

判断简便法和常规法测定尿铅含量的差别有无统计意义,对12份人尿同时用两种方法进行测定,所得结果如下表所示,请分析两种测定方法的测量结果是否不同?

#输入两组值
x <- c(2.41,2.90,2.75,2.23,3.67,4.49,5.16,5.45,2.06,1.64,1.06,0.77)
y <- c(2.80,3.04,1.88,3.43,3.81,4.00,4.44,5.41,1.24,1.83,1.45,0.92)
#配对样本t检验
t.test(x,y,paired=T)
配对t检验的结果为:t=0.16232,显著性p值=0.874>0.05,不能拒绝原假设H0,说明不能认为两种方法测定尿铅含量的结果不相同。
例2. 无原始数据的配对t检验

慢性支气管炎病人血中胆碱酯酶活性常常偏高。某校药理教研室将同性别同年龄的病人与健康人配成8对,测量该值加以比较,配对两组人差值的均值为0.625,标准差为0.78,问可否通过这一资料得出较明确的结论?

#依次输入配对样本的差值d、标准差s、配对数n
d <- 0.625;s <- 0.78;n <- 8
#算t值
t <- d / (s/sqrt(n))
#输入自由度n-1,pt()函数得到p值
df <- n-1
p <- pt(t,df)
t;p

p值为0.9711069>0.05,不能拒绝原假设,不能认为慢性支气管炎病人与健康人血中胆碱酯酶活性不同。
III.两独立样本t检验

在日常工作中,我们经常要比较两组计量资料的均数间有无显著差别,如研究不同疗法的降压效果或两种不同制剂对杀灭鼠体内钩虫的效果等。假若事先难以找到年龄、性别等条件完全一样的人(或动物)作配对比较,那么就不能求每对的差数,而只能先算出各组的均数,然后进行比较。两组例数可以相等,也可以稍有出入。检验的方法同样是先假定两组相应的总体均数相等,看两组均数实际相差与此假设是否靠近,近则把相差看成抽样误差表现,远到一定界限则认为由抽样误差造成这样大的相差的可能性实在太小,拒绝假设而接受H1,作出两总体不相等的结论。

成组设计资料的t检验与单样本t检验和配对t检验情况不同,以上两种情况最终都可将待分析的变量转化为一个,并属于同一个组(即不涉及分组变量)。而成组资料虽然分析的是同一个变量,但要设计不同组之间变量的比较,对两组数据的均数进行差别比较的t检验。

两个小样本均数比较的t检验有以下应用条件:

1.两样本来自的总体均符合正态分布,两样本来自的总体方差齐性。故在进行两小样本均数比较的t检验之前,要用方差齐性检验来推断两样本代表的总体方差是否相等,方差齐性检验的方法使用F检验,其原理是看较大样本方差与较小样本方差的商是否接近1。若接近1,则可认为两样本代表的总体方差齐性。判断两样本来自的总体是否符合正态分布,可用正态性检验的方法。

2.若两样本来自的总体方差不齐,也不符合正态分布,对符合对数正态分布的资料可以用其集合均数进行t检验,对其他资料可以用t检验或秩和检验进行分析。
例1. 有原始数据的独立两样本t检验

有两组雌鼠,分别饲以高蛋白和低蛋白饲料,8周后记录各鼠体重增加量如下,问两组动物增重的均数差别是否显著?

高蛋白组 134 146 104 119 124 161 107 83 113 129 97 123

低蛋白组 70 118 101 85 107 132 94

high <- c(134, 146, 104, 119, 124, 161, 107, 83, 113, 129, 97, 123)
low <- c(70, 118, 101, 85, 107, 132, 94)

#方差齐次性检验
x <- c(134, 146, 104, 119, 124, 161, 107, 83, 113, 129, 97, 123,70, 118, 101, 85, 107, 132, 94)
a <- factor(c(rep(1,12),rep(2,7)))
#bartlett.test方差齐性检验
bartlett.test(x~a)
#var.test方差齐性检验
var.test(x~a)
#levene.test方差齐性检验(也是SPSS的默认方差齐性检验方法)
library(car)
levene.test(x~a)
#前两者是对原始数据的方差进行检验的,leveneTest是对方差模型的残差进行组间齐性检验.一般认为是要求残差的方差齐,所以一般的统计软件都做的是leveneTest

#t检验
t.test(high,low,paired = FALSE)
1.方差齐次性检验,取var.test方差齐性检验的结果,F = 1.0755,p-value = 0.9788>0.05,说明两独立样本数据方差齐性

2.我们关注的是上表中方差“等于”对应的t值,t=1.89,p值0.0757>0.05,不拒绝原假设,不能认为两组雌鼠体重增加量不相等
例2. 无原始数据的度量两样本t检验

测量某两个地区水中碳酸钙的含量,分别从两个地区随机抽取20份样品进行碳酸钙检测,分别得到两个地区碳酸钙含量的均数和标准差,结果见下图。试判断两个地区水中碳酸钙的含量是否有差异?

#输入对照组实验组均值x1,x2;组数n1,n2;方差s1,s2
x1<-20.95; x2<-21.79; n1<-20; n2<-20; s1<-5.89; s2<-3.43
#计算两独立样本共同的标准差
sc <- sqrt((1/n1+1/n2)*((n1-1)*s1**2+(n2-1)*s2**2)/(n1+n2-2))
#t值,自由度df,p值
t <- (x2-x1)/sc
df <- n1+n2-2
p <- pt(t,df)
t;p
t=0.5511486,p值0.7076209>0.05,不拒绝原假设,不能认为两个地区水中碳酸钙的含量有差异

数据分析咨询请扫描二维码

客服在线
立即咨询