R统计R小技巧

各类统计方法R语言实现(二)

2020-04-10  本文已影响0人  拾光_2020

各位小伙伴们大家好,今天是我们的系列推文“各类统计方法R语言实现”第二篇,今天介绍的主要内容有:正态性检验、方差齐性检验、t检验、近似t检验。

t检验

此处选用的数据集仍是R语言自带的mtcar数据集,具体介绍见上次推文:各类统计方法R语言实现(一) t检验按照实验设计可分为:
1、单样本t检验:已知样本均数与总体均数比较,总体均数一般为理论值、标准值等。
2、配对样本t检验:配对设计的计量资料。
3、两独立样本t检验:完全随机设计两样本均数的比较。 其中单样本t检验需要总体数据需要服从正态分布、配对样本t检验需要每对数据差值的总体服从正态分布、两独立样本t检验需要满足两总体服从正态分布且方差齐。
因此进行两独立样本t检验之前,需要进行正态性检验和方差齐性检验,若不服从正态分布,可考虑使用非参数检验;若服从正态分布但不服从方差齐性,则可使用近似t检验。

data(mtcars)
head(mtcars)
##                    mpg cyl disp  hp drat    wt  qsec vs am gear carb
## Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
## Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
## Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
## Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
## Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
## Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1
#计算描述统计分析

mtcars$cyl<-as.factor(mtcars$cyl)
mtcars$vs<-as.factor(mtcars$vs)
mtcars$am<-as.factor(mtcars$am)
mtcars$gear<-as.factor(mtcars$gear)
mtcars$carb<-as.factor(mtcars$carb)

#计算描述统计分析
summary(mtcars)
##       mpg        cyl         disp             hp             drat      
##  Min.   :10.40   4:11   Min.   : 71.1   Min.   : 52.0   Min.   :2.760  
##  1st Qu.:15.43   6: 7   1st Qu.:120.8   1st Qu.: 96.5   1st Qu.:3.080  
##  Median :19.20   8:14   Median :196.3   Median :123.0   Median :3.695  
##  Mean   :20.09          Mean   :230.7   Mean   :146.7   Mean   :3.597  
##  3rd Qu.:22.80          3rd Qu.:326.0   3rd Qu.:180.0   3rd Qu.:3.920  
##  Max.   :33.90          Max.   :472.0   Max.   :335.0   Max.   :4.930  
##        wt             qsec       vs     am     gear   carb  
##  Min.   :1.513   Min.   :14.50   0:18   0:19   3:15   1: 7  
##  1st Qu.:2.581   1st Qu.:16.89   1:14   1:13   4:12   2:10  
##  Median :3.325   Median :17.71                 5: 5   3: 3  
##  Mean   :3.217   Mean   :17.85                        4:10  
##  3rd Qu.:3.610   3rd Qu.:18.90                        6: 1  
##  Max.   :5.424   Max.   :22.90                        8: 1

正态性检验

使用Shapiro-Wilk法

shapiro.test(mtcars$mpg)
## 
##  Shapiro-Wilk normality test
## 
## data:  mtcars$mpg
## W = 0.94756, p-value = 0.1229

可以看到结果中p>0.05,服从正态分布。

还可使用图示法,绘制QQ图,加上95%置信区间

##绘制QQ图
library(car)
## Loading required package: carData
qqPlot(lm(mpg~am,data = mtcars),stimulate = TRUE, main="qq plot", col="blue", col.lines="red")
image.png
## Toyota Corolla  Maserati Bora 
##             20             31

结果大致呈一条直线,数据落在95%置信区间范围内则说明大致服从正态分布

方差齐性检验

方差齐性检验的方法有很多,本节主要介绍以下三种:

Bartlett检验:需要数据服从正态分布 Levene检验:不依赖总体分布具体形式,更为稳健。 Fligner-Killeen检验:不依赖总体分布具体形式。

##绘制箱线图,
plot(mpg~am,data = mtcars)
image.png
##Bartlett检验
bartlett.test(mpg~am,data = mtcars)
## 
##  Bartlett test of homogeneity of variances
## 
## data:  mpg by am
## Bartlett's K-squared = 3.2259, df = 1, p-value = 0.07248

可以看到结果中p>0.05,方差齐。

##Levene检验
leveneTest(mpg~am,data = mtcars)
## Levene's Test for Homogeneity of Variance (center = median)
##       Df F value  Pr(>F)  
## group  1  4.1876 0.04957 *
##       30                  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

可以看到结果中p<0.05,方差不齐。

##Fligner-Killeen检验
fligner.test(mpg~am,data = mtcars)
## 
##  Fligner-Killeen test of homogeneity of variances
## 
## data:  mpg by am
## Fligner-Killeen:med chi-squared = 4.4929, df = 1, p-value = 0.03404

可以看到结果中p<0.05,方差不齐。

t检验

##单样本t检验,mu表示的是总体平均数
t.test(mtcars$mpg,mu=20)
## 
##  One Sample t-test
## 
## data:  mtcars$mpg
## t = 0.08506, df = 31, p-value = 0.9328
## alternative hypothesis: true mean is not equal to 20
## 95 percent confidence interval:
##  17.91768 22.26357
## sample estimates:
## mean of x 
##  20.09062

p>0.05,表示已知样本均数与总体均数相等

##配对t检验
length(mtcars$mpg)
## [1] 32
mpg1<-mtcars$mpg
mpg2<-mtcars$mpg+rnorm(32, mean = 5, sd = 1)

t.test(mpg1,mpg2,paired = T)
## 
##  Paired t-test
## 
## data:  mpg1 and mpg2
## t = -38.226, df = 31, p-value < 2.2e-16
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -4.962350 -4.459653
## sample estimates:
## mean of the differences 
##               -4.711002

p<0.05,结果有统计学差异

##两独立样本t检验
t.test(mpg~am,data = mtcars, paired = FALSE, var.equal = T)
## 
##  Two Sample t-test
## 
## data:  mpg by am
## t = -4.1061, df = 30, p-value = 0.000285
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -10.84837  -3.64151
## sample estimates:
## mean in group 0 mean in group 1 
##        17.14737        24.39231
##两独立样本近似t检验(Welch法)
t.test(mpg~am,data = mtcars, paired = FALSE, var.equal = F)
## 
##  Welch Two Sample t-test
## 
## data:  mpg by am
## t = -3.7671, df = 18.332, p-value = 0.001374
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -11.280194  -3.209684
## sample estimates:
## mean in group 0 mean in group 1 
##        17.14737        24.39231
##以上代码整理汇总
p1<-shapiro.test(mtcars$mpg[mtcars$am == 0])$p.value
p2<-shapiro.test(mtcars$mpg[mtcars$am == 1])$p.value
varp3<-leveneTest(mpg~am,data = mtcars)$`Pr(>F)`[1]

ifelse(p1>0.05|p2>0.05,
       ifelse(varp3>0.05,t.test(mpg~am,data = mtcars, paired = FALSE, var.equal = T)$p.value,
              t.test(mpg~am,data = mtcars, paired = FALSE, var.equal = F)$p.value),
       wilcox.test(mpg~am,data = mtcars,correct = FALSE)$p.value)
## [1] 0.001373638
ifelse(p1>0.05|p2>0.05,
       ifelse(varp3>0.05,print("两独立样本t检验"),
              print("两独立样本近似t检验(Welch法)")),
       print("wilcox秩和检验"))
## [1] "两独立样本近似t检验(Welch法)"
## [1] "两独立样本近似t检验(Welch法)"

可以看到此处输出的是两独立样本近似t检验(Welch法)的结果。

好了,今天的R语言实现统计方法系列推文暂时告一段落,我们下次再见吧!

上一篇下一篇

猜你喜欢

热点阅读