描述性統計分析
關注於連續性變量的中心趨勢、變化性和分佈形狀
> summary(object,...)
> # 返回最小值、最大值、四分位數和平均值
> sapply(x,FUN,options)
> library(Hmisc)
> describe(x,...)
> # 返回變量和觀測的數量、缺失值和唯一值得數目、平均值、分位數,以及
# 五個最大和五個最小的值
> library(pastecs)
> stat.desc(x,basic=TRUE,desc=TRUE,norm=FALSE,p=0.95)
> # basic=TRUE:
# 所有值、空值、缺失值的數量, 最小值、最大值、值域、總和
# desc=TRUE:
# 中位數、平均值、平均值的標準誤、平均值置信度爲95%的置信區間、
# 方差、標準差以及變異係數
# norm=TRUE:
# 偏度、峯度以及它們的統計顯著程度和Shapiro-Wilk正態檢驗結果
分組聚合
> library(doBy)
> summaryBy(var1+var2~group1+group2,data,FUN)
> library(psych)
> describe.by(y,g)
> library(reshape)
> dfm <- melt(dataframe,measure.vars=y,id.vars=g)
> cast(dfm,group1+group2+...+variable~.,FUN)
頻數統計
> table(var1,var2,var3)
> xtab(~var1+var2+var3,data)
> prop.table(table,margins)
> margin.table(table,margins)
> addmargins(table,margins)
> ftable(table)
列聯分析
兩個標稱變量之間的相關性
卡方獨立性檢驗
H0 : x 和 y 獨立
> mytable <- xtabs(~x+y,data)
> chisq.test(mytable)
> ##p_value < 0.05 => x和y不獨立
Fisher精確檢驗
解決卡方檢驗由於有頻數<5時算法不精確問題
> fisher.test(mytable)
Cochran-Mantel-Haenszel檢驗
H0 : 兩個名義變量在第三個變量的每一層中都是條件獨立的
> mytable <- xtabs(~x+y+z,data)
> chisq.test(mytable)
> ##p_value < 0.05 => x和y在z的每一水平下並不獨立
相關性度量
度量相關性強弱
> assocstats(mytable)
相關
相關係數
pearson相關係數:衡量兩個定量變量之間的線性相關程度
spearman相關係數:衡量兩個定序變量之間的線性相關程度
kendall相關係數:衡量兩個定序變量之間的線性相關程度的非參數方法
> cor(x,y=NULL,use="everything",method = c("pearson", "kendall", "spearman"))
相關性的顯著性檢驗
H0 : 相關係數爲0
> cor.test(x,y)
> library(psych)
> corr.test(x, y = NULL, use = "pairwise", method = "pearson")
兩組間差異
H0 : 兩組間差異不明顯
t.test
獨立樣本
> t.test(y~x,data)
> t.test(y1,y2)
匹配樣本,假定組間差異呈正態分佈
> t.test(y1,y2,paired=TRUE)
非參數檢驗
曼-惠特尼-威爾科克森檢驗
獨立樣本
> wilcox.test(y~x,data)
> wilcox.test(y1,y2)
威爾科克森符號秩檢驗
匹配樣本,重複測量設計
> wilcox.test(y1,y2,paired=TRUE)
多組間差異
H0 : 多組間差異不明顯
ANOVA
單因素方差分析
比較分類因子定義的兩個或多個組別中的因變量均值
> library(doBy)
> summaryBy(y~A,data,FUN=function(x)(c(mean=mean(x),sd=sd(x)))
> fit <- aov(y~A,data)
> summary(fit)
> library(gplots)
> plotmeans(y~A,data,main='Mean Plot\nwith 95%CI')
> TukeyHSD(fit) #多重比較
> par(las=2,mar=c(5,8,4,2))
> plot(TukeyHSD(fit))
> library(multcomp)
> par(mar=c(5,4,6,2))
> tuk <- glht(fit,linfct=mcp(trt="Tukey"))
> plot(cld(tuk,level=.05),col='lightgrey') ##相同字母,均值差異不明顯
待續
非參數方法
克魯斯卡爾-沃利斯檢驗
獨立樣本
> kruskal.test(y~A,data)
Friedman檢驗
不獨立,重複測量設計,隨機區組設計
> friedman.test(y~A|B,data) ##y是結果變量,A是分組變量,B是區組變量
多組比較
> library(npmc)
> mydata <- df[c('y','A')]
> summary(npmc(mydata),type="BF")