统计学-R语言实例(部分

1t检验
提前,满足正态性
1. 1单样本t检验
已知某水样中含碳酸钙的真值为20.7mg/L,现用某法重复测定该水样12次,碳酸钙的含量分别为…问该法测定碳酸钙含量所得的均值与诊治有无显著差异?
12次测定中,碳酸钙的含量分别为20.99,20.41,20.10,20.00,20.91,22.60,20.99,20.42,20.90,22.99,23.12,20.89
输入:

> 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 = 'two.sided',mu = 20.7)

输出:

	One Sample t-test

data:  x
t = 1.5665, df = 11, p-value = 0.1455
alternative hypothesis: true mean is not equal to 20.7
95 percent confidence interval:
 20.50020 21.88646
sample estimates:
mean of x 
 21.19333 

结果解读:p-value = 0.1455>0.05,所以该法测定碳酸钙含量所得的均值与诊治没有显著差异
统计学-R语言实例(部分_第1张图片

1.2 配对样本t检验

判断简便法和常规法测定尿铅含量的差别有无统计意义,对12份人尿同时用两种方法进行测定,所得结果如下表所示,请分析两种测定方法的测量结果是否不同?
法一的测量结果:2.41,2.90,2.75,2.23,3.67,4.49,5.16,5.45,2.06,1.64,1.06,0.77
法二的测量结果:2.80,3.04,1.88,3.43,3.81,4.00,4.44,5.41,1.24,1.83,1.45,0.92

输入:

> 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.test(x,y,paired=T)

> data=data.frame(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,2.80,3.04,1.88,3.43,3.81,4.00,
4.44,5.41,1.24,1.83,1.45,0.92),g=factor(rep(1:2,c(12,12))))
>  t.test(x~g,paired=T,data=data)

输出:

Paired t-test

data:  x and y
t = 0.16232, df = 11, p-value = 0.874
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -0.3558501  0.4125167
sample estimates:
mean of the differences 
             0.02833333 

结果解读:p-value = 0.874>0.05,所以两种测定方法的测量结果没有显著差异

1.3 两独立样本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))) #分2组,第一组为前12个数,第二组为接着的7个数

方差齐性检验
三种方差齐性检验的方法:bartlett.test()、 var.test()、leveneTest()
1.R中最常用的Bartlett检验,bartlett.test()
2.Levene检验,它既可以用于正态分布的数据,也可用于非正态分布的数据或分布不明的数据,具有比较稳健的特点,检验效果也比较理想。R的程序包car中提供了Levene检验的函数levene.test()

#bartlett.test方差齐性检验

> bartlett.test(x~a)
output:
Bartlett test of homogeneity of variances

data:  x by a
Bartlett's K-squared = 0.0095794, df = 1, p-value = 0.922

结果解读:p-value = 0.922>0.05,所以两样本方差没有显著差别,即认为方差齐性

#var.test方差齐性检验

> var.test(x~a)
F test to compare two variances

data:  x by a
F = 1.0755, num df = 11, denom df = 6, p-value = 0.9788
alternative hypothesis: true ratio of variances is not equal to 1
95 percent confidence interval:
 0.198811 4.173718
sample estimates:
ratio of variances 
           1.07552 

结果解读:p-value = 0.9788>0.05,所以两样本方差没有显著差别,即认为方差齐性

#levene.test方差齐性检验(SPSS的默认方差齐性检验方法)

> library(car)
载入需要的程辑包:carData
> leveneTest(x~a)
output:
Levene's Test for Homogeneity of Variance (center = median)
      Df F value Pr(>F)
group  1  0.0147 0.9051
      17

结果解读:p-value = 0.9051>0.05,所以两样本方差没有显著差别,即认为方差齐性

两样本独立t检验

 t.test(high,low,paired = FALSE)
	Welch Two Sample t-test

data:  high and low
t = 1.9107, df = 13.082, p-value = 0.07821
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -2.469073 40.469073
sample estimates:
mean of x mean of y 
      120       101 

或总的:

> data = data.frame(x=c(134, 146, 104, 119, 124, 161, 107, 83, 113, 129, 97, 123,70, 118, 101, 85, 107, 132, 94),g=factor(c(rep(1,12),rep(2,7))))
> bartlett.test(x~g,data = data)

	Bartlett test of homogeneity of variances

data:  x by g
Bartlett's K-squared = 0.0095794, df = 1, p-value = 0.922

> t.test(x~g,data = data,paired = FALSE)

	Welch Two Sample t-test

data:  x by g
t = 1.9107, df = 13.082, p-value = 0.07821
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -2.469073 40.469073
sample estimates:
mean in group 1 mean in group 2 
            120             101 

结果解读:p-value =0.07821>0.05,所以饲以高蛋白和低蛋白饲料的两组动物增重的均数没有显著差别

2方差分析
2.1 完全随机设计的方差分析(单因素方差分析)
某银行规定VIP客户的月均账户余额要达到100万元,并以此作为比较各分行业绩的一项指标。这里分行即因子,账户余额是所要检验的指标,先从三个分行中,分别随机抽取7个VIP客户的账户。判断三个分行此项业绩指标是否相同。
在这里插入图片描述
正态性检验
对数据的正态性,利用Shapiro-Wilk正态检验方法(W检验),它通常用于样本容量n≤50时,检验样本是否符合正态分布。
R中,函数shapiro.test()提供了W统计量和相应P值,所以可以直接使用P值作为判断标准,其调用格式为shapiro.test(x),参数x即所要检验的数据集,它是长度在35000之间的向量。

> x1=c(103,101,98,110,105,100,106)
> shapiro.test(x1)
Shapiro-Wilk normality test

data:  x1
W = 0.97777, p-value = 0.948

结果解读:p-value = 0.948>0.05,说明A1分行此项业绩指标符合正态分布。
A2,A3操作如A1。

方差齐性检验

x=c(x1,x2,x3)
data=data.frame(x,A=factor(rep(1:3,each=7)))
bartlett.test(x~A,data=data)
Bartlett test of homogeneity of variances

data:  x by A
Bartlett's K-squared = 0.13625, df = 2, p-value = 0.9341

单因素方差分析
R中的函数aov()用于方差分析的计算,其调用格式为:
aov(formula, data = NULL, projections =FALSE, qr = TRUE,contrasts = NULL, …)
其中的参数formula表示方差分析的公式,在单因素方差分析中即为x~A ; data表示做方差分析的数据框:projections为逻辑值,表示是否返回预测结果:qr同样是逻辑值,表示是否返回QR分解结果,默认为TRUE; contrasts是公式中的一些因子的对比列表。通过函数summary()可列出方差分析表的详细结果。

> a.aov=aov(x~A,data=data)
> summary(a.aov)
            Df Sum Sq Mean Sq F value   Pr(>F)    
A            2   2315    1158   82.68 8.46e-10 ***
Residuals   18    252      14                     
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
> plot(data$x~data$A)

Df:自由度
Sum Sq:平方和
Mean Sq:均方
F value:F值
Pr(>F) :p值
Signif. codes:显著性标注, 0 ‘***’ 表示差别越显著
统计学-R语言实例(部分_第2张图片

结果解读:Pr(>F)= 8.46e-10 ***<0.05,所以认为三个分行此项业绩指标有显著差别

根据方差分析的结果,可以认为认为三个分行此项业绩指标有显著差别,但无法得知究竟哪些组不同,因此需要进一步对多个样本均数进行两两比较或称多重比较。

基于R语言的七种多重比较方法

#多重分析-SNK
library(agricolae)
result <- SNK.test(aov,'g')
result$groups
plot(result)
#2事后用QQ图直观的检查正态性
qqPlot(lm(x~g,data = data),simulate = TRUE,main = 'QQ Plot',labels(FALSE))
          x groups
2 111.85714      a
1 103.28571      b
3  86.57143      c

统计学-R语言实例(部分_第3张图片
统计学-R语言实例(部分_第4张图片
Kruskal-Wallis秩和检验

#若不满足方差分析的前提条件,则Kruskal-Wallis秩和检验
kruskal.test(x~g,data = data)
读数据
mydata<-read.table(header=T,file="F:\\刘晓聪\\data.csv",sep=",")

你可能感兴趣的:(统计学)