本篇就事后检验进行R语言的实践和操作。
还是把最开始的那幅图贴上,最后一部分就是事后检验的方法选择
从图中可以看出,参数检验和非参数检验在多组比较有差异后进行两两比较方法的选择。
数据依然使用 统计方法的选择(2)--参数检验 中三组小鼠的实验的数据,
结果如下
p值>0.05,符合正态分布和方差齐性
接下来进行方差分析
结果如下
经过ANOVA方差分析,发现p<0.05,说明全局角度有差异,那么接下来对两两进行比较。
每个分组的数目都是相等的,事后检验首选Tukey HSD法,并添加conf.level = 0.95置信区间。
这里的p值和之前直接比较得来的p值是有区别的,之前直接比较的结果如下
可以发现通过事后比较的方法得到的p值,显著差异的是明显小于直接比较的,这也就可以解释通过直接比较会增加犯Ⅰ类错误的概率。
还可以使用agricolae包中的LSD.test函数实现参数事后检验
依然是上面的数据,操作如下
console=T可以直接展示结果
最后的结果只是将各组分组,不同字母表示不同组别,具有差异性,结果可以看出3组和1组不具有差异性,和之前做的图也是符合的。
参数事后检验还有其他方法,比如SNK法(Student-Newman-Keuls)事后检验,Duncan事后检验,Scheffe事后比较,这几个方法的检验都在agricolae包中,展现形式不外乎以上两种方式。
非参数事后检验的数据还是使用 统计方法的选择(3)--非参数检验 中的数据。
先加载数据并查看数据
主要探索DEPDC1基因的表达情况
先进性正态性和方差齐性检验
结果如之前所写,正态性检验和方差齐性检验,p值都小于0.05,所以不符合正态性,方差不齐,采用非参数检验。对于多组非参数比较,采用用用kruskal.test()
结果如下
p值小于0.05,多组之间有差异,那么进行组间比较,先看看之前直接比较的结果
对于非参数检验事后比较,这里采用posthoc.kruskal.nemenyi.test方法,操作如下
结果如下
结果还是有点小复杂,好像没有之前直接比较或者与平均值比较更清晰,并且差异性把分组也加入了,这个还要继续再探索一下。
1. 列出包所在库的路径.libPaths()
[1] "C:/Program Files/R/R-3.0.2/library"
2. 安装包,括号里面包的名称要加英文引号,在列出的CRAN镜像站点列表中选择一个进行下载,我一般选的是China(Hefei)
install.packages()
例如,install.packages("ggplot2")
3. 包的载入library()或require(),安装完包后,需要加载才能使用其中的函数,此时括号中不使用引号。两者的不同之处在于library()载入之后不返回任何信息,而require()载入后则会返回TRUE,因此require()适合用于程序的书写。
例如
library(ggplto2)
>require(foreign)
Loading required package: foreign
>is.logical(require(foreign))
[1] TRUE
4. 包的更新
update.packages()
5. 包的帮助信息 格式如下,可以查看包中的函数以及说明
help(package="ggplot2")
6. 查看本地的包
6.1 查看默认加载的包,忽略基本的包
getOption("defaultPackages")
>getOption("defaultPackages")
[1] "datasets" "utils" "grDevices" "graphics" "stats" "methods"
[7] "ggplot2"
6.2 查看当前已经加载过的包
(.packages())
[1] "ggplot2" "stats" "graphics" "grDevices" "utils" "datasets" "methods" "base"
6.3 要显示所有可用的包
(.packages(all.available=TRUE))
>(.packages(all.available=TRUE))
[1] "abind" "agricolae" "aplpack" "base" "bitops"
[6] "boot" "car" "caTools" "class" "cluster"
[11] "codetools" "colorRamps" "colorspace" "compiler" "datasets"
[16] "Defaults" "devtools" "dichromat" "digest" "doBy"
[21] "e1071" "effects" "ellipse" "evaluate" "foreign"
[26] "formatR" "Formula" "gdata" "ggplot2" "ggthemes"
[31] "gmodels" "gplots" "graphics" "grDevices" "grid"
[36] "gtable" "gtools" "highr" "Hmisc" "httr"
[41] "KernSmooth" "knitr" "labeling" "lattice" "latticeExtra"
[46] "leaps" "lme4" "lmtest" "LSD" "manipulate"
[51] "markdown" "MASS" "Matrix" "matrixcalc" "memoise"
[56] "methods" "mgcv" "minqa" "multcomp" "munsell"
[61] "mvtnorm" "nlme" "nnet" "nortest" "parallel"
[66] "pixmap" "plyr" "proto" "psych" "quantmod"
[71] "Rcmdr" "RColorBrewer" "Rcpp" "RcppEigen" "RCurl"
[76] "relimp" "reshape2" "rgl" "rJava" "RODBC"
[81] "rpart" "rstudio" "samplesize" "sandwich" "scales"
[86] "schoolmath" "sciplot" "sem" "spatial" "splines"
[91] "stats" "stats4" "stringr" "survival" "tcltk"
[96] "tcltk2" "TH.data" "tools" "TTR" "utils"
[101] "VennDiagram" "whisker" "XLConnect" "xts" "zoo"
7. 卸载包detach(),这是library()的反向操作,此操作主要是为了避免某些包中的函数名称相同,造成冲突,注意与library()的参数不同,detach()参数为detach(package:包的名称),library(包的名称)。
例如
>library(ggplot2) #加载包
>(.packages()) #列出当前已经加载的包
[1] "ggplot2" "stats" "graphics" "grDevices" "utils" "datasets"
[7] "methods" "base"
>detach(package:ggplot2) # 卸载ggplot2包
>(.packages()) #列出当前已经加载的包
[1] "stats" "graphics" "grDevices" "utils" "datasets" "methods"
[7] "base"
8. 自定义启动时候的加载包
如果需要长期使用某个包的话,每次开启都需要输入library(),比较麻烦,因此可以让R启动时自动加载某些包。在R的安装目录/etc/Rprofile.site加入下载语句:
例如让R启动时自动加载ggplot2包
local({old <- getOption("defaultPackages")
options(defaultPackages = c(old, "ggplot2"))})
9. 在文章中引用R软件包,例如引用ggplot2包:
citation(package="ggplot2")
To cite ggplot2 in publications, please use:
H. Wickham. ggplot2: elegant graphics for data analysis. Springer New
York, 2009.
A BibTeX entry for LaTeX users is
@Book{,
author = {Hadley Wickham},
title = {ggplot2: elegant graphics for data analysis},
publisher = {Springer New York},
year = {2009},
isbn = {978-0-387-98140-6},
url = {http://had.co.nz/ggplot2/book},
}