美文网首页
各类统计方法R语言实现(四)

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

作者: 拾光_2020 | 来源:发表于2020-04-13 00:06 被阅读0次

不知不觉就到第四期了,小伙伴们是否跟着我们的推文一起练习了呢?当然,统计光靠跑代码是不够的,还需要结合理论知识一同学习,可以边复习理论,边跟着我们的代码一同实践哦。今天介绍的内容主要是变量变换和非参数检验。

变量变换

当数据不满足正态性或方差齐性假设时,可以通过变量变化加以改善,即将原始数据做某种函数转换,让各组方差齐同、偏态资料正态化。但在变量转换后,在结果解释上没有原始测量变量直观。

常见的变量转换有:对数变换、平方根变换、反正弦变换、导数变换。

(1)对数变换适用于①原始数据效应是相乘的(类似对数正态分布),如抗体滴定、农药残余、环境中的有害物质含量、某些疾病的潜伏期等;②各样本标准差与均数成比例或变异系数是常数或接近某一常数的资料。

(2)平方根变换适用于①服从Poisson分布的资料(小概率,给定时间内响应变量为事件发生数目,如某年某地某发病率低的疾病的发生数)②轻度偏态分布。

(3)反正弦变换:适用于率或百分比资料。

(4)倒数变换:适用于两端波动较大的资料。

对数变换

##首先生成对数正态分布数据
set.seed(123)
seq<-rlnorm(n=50,meanlog = 10, sdlog =1)
hist(seq)
image.png
shapiro.test(seq)
## 
##  Shapiro-Wilk normality test
## 
## data:  seq
## W = 0.73146, p-value = 3.18e-08
#对数变换

seq2<-log2(seq+1)
hist(seq2)
image.png
shapiro.test(seq2)
## 
##  Shapiro-Wilk normality test
## 
## data:  seq2
## W = 0.98927, p-value = 0.9278

平方根变换

##首先生成poisson分布数据
set.seed(123)
seq<-rpois(n=50,lambda =4)
hist(seq)
image.png
shapiro.test(seq)
## 
##  Shapiro-Wilk normality test
## 
## data:  seq
## W = 0.94575, p-value = 0.02288
#平方根变换
seq2<-sqrt(seq)
hist(seq2)
image.png
shapiro.test(seq2)
## 
##  Shapiro-Wilk normality test
## 
## data:  seq2
## W = 0.96679, p-value = 0.1708

反正弦变换&倒数变换

##暂无数据,此处仅演示

norm2<-rnorm(100,mean = 100, sd = 2)
seq=(norm2-min(norm2))/(max(norm2)-min(norm2))

#反正弦变换
seq2<-asin(seq)

#率或百分比资料还常用平方根反正弦变换
seq3<-asin(sqrt(seq))

##倒数变换
seq4<-1/seq

非参数检验

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

Wilco秩和检验

适用于两组之间比较,不满足正态分布或方差齐性条件

##两独立样本Wilco秩和检验
wilcox.test(mpg~am,data = mtcars,correct = FALSE)
## Warning in wilcox.test.default(x = c(21.4, 18.7, 18.1, 14.3, 24.4, 22.8, :
## cannot compute exact p-value with ties
## 
##  Wilcoxon rank sum test
## 
## data:  mpg by am
## W = 42, p-value = 0.001753
## alternative hypothesis: true location shift is not equal to 0
boxplot(mpg~am,data = mtcars)
image.png
##配对样本Wilco秩和检验

set.seed(123)
length(mtcars$mpg)
## [1] 32
sam<-sample(1:length(mtcars$mpg),size = length(mtcars$mpg)/2)
mpg1<-mtcars$mpg[sam]
mpg2<-mtcars$mpg[-sam]

wilcox.test(mpg1,mpg2,correct = FALSE,paired = T)
## Warning in wilcox.test.default(mpg1, mpg2, correct = FALSE, paired = T): cannot
## compute exact p-value with ties
## 
##  Wilcoxon signed rank test
## 
## data:  mpg1 and mpg2
## V = 83.5, p-value = 0.4227
## alternative hypothesis: true location shift is not equal to 0

K-W检验

适用于多组之间比较,不满足正态分布或方差齐性条件

#K-W检验
kruskal.test(mpg~cyl,data = mtcars)
## 
##  Kruskal-Wallis rank sum test
## 
## data:  mpg by cyl
## Kruskal-Wallis chi-squared = 25.746, df = 2, p-value = 2.566e-06
boxplot(mpg~cyl,data = mtcars)
image.png

好了,今天的R语言实现统计方法系列推文暂时告一段落,我们下次再见吧! 小伙伴们如果有什么统计上的问题,或者如果想要学习什么方面的生物信息内容,可以在微信群或者知识星球提问,没准哪天的推文就是专门解答你的问题哦!

相关文章

网友评论

      本文标题:各类统计方法R语言实现(四)

      本文链接:https://www.haomeiwen.com/subject/ajsbmhtx.html