不知不觉就到第四期了,小伙伴们是否跟着我们的推文一起练习了呢?当然,统计光靠跑代码是不够的,还需要结合理论知识一同学习,可以边复习理论,边跟着我们的代码一同实践哦。今天介绍的内容主要是变量变换和非参数检验。
变量变换
当数据不满足正态性或方差齐性假设时,可以通过变量变化加以改善,即将原始数据做某种函数转换,让各组方差齐同、偏态资料正态化。但在变量转换后,在结果解释上没有原始测量变量直观。
常见的变量转换有:对数变换、平方根变换、反正弦变换、导数变换。
(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语言实现统计方法系列推文暂时告一段落,我们下次再见吧! 小伙伴们如果有什么统计上的问题,或者如果想要学习什么方面的生物信息内容,可以在微信群或者知识星球提问,没准哪天的推文就是专门解答你的问题哦!
网友评论