目的:服務器
1.描述性統計分析app
2.頻數表和;列連表函數
3.相關係數和協方差spa
4.t檢驗.net
5.非參數統計3d
在上一節中使用了圖形來探索數據,下一步就是給出具體的數據來描述每一個變量的分佈和關係code
1.描述性統計分析blog
探究案例:各種車型的油耗如何?對車型的調查中,每加侖汽油行駛的英里數分佈是什麼形式(均值,標準差,中位數,值域等)it
1.1使用內置的summary函數來獲取最小值,最大值,四分位數和數值型變量的均值io
1 myvals <- c('mpg','hp','wt') 2 head(mtcars[myvals]) 3 summary(mtcars[myvals])
1.2.使用sapply和自定義函數計算描述性統計量
計算均值,長度,偏度,丰度
1 mystats <- function(x,na.omit=F){ 2 if(na.omit){ 3 x <- x[!is.na(x)] 4 } 5 m <- mean(x) 6 n <- length(x) 7 s <- sd(x) 8 skew <- sum((x-m)^3/s^3)/n 9 kurt <- sum((x-m)^4/s^4)/n-3 10 return(c(n=n,mean=m,stdev=s,skew=skew,kurtois=kurt)) 11 } 12 myvals <- c('mpg','hp','wt') 13 sapply(mtcars[myvals], mystats)
1.3第三方包實現描述性統計分析
1 library(Hmisc) 2 describe(mtcars[myvals])
1.4分組計算描述性統計量
# by()第一個參數數數據集,第二個參數是要分組的項,第三個參數是要執行的統計函數
1 dstats <- function(x){sapply(x, mystats)} 2 by(mtcars[myvals],mtcars$am,dstats)
2.頻數表和列連表
探究案例:在進行新葯試驗後,用藥組和安慰劑組的治療結果相好比何?實驗參與者的性別是否對結果有影響?
2.1一維列聯表
1 library(vcd) 2 # 使用table韓式生成頻數表 3 mytable <- with(Arthritis,table(Improved)) 4 mytable 5 # 轉化成比例值 6 prop.table(mytable) 7 # 轉化成百分比 8 prop.table(mytable)*100
2.2二維列聯表
結論:與接受安慰劑的治癒率16%相比,使用特效藥的治癒率達到了51%
# 使用xtab函數實現多變量頻數
1 mytable <- xtabs(~ Treatment + Improved,data = Arthritis) 2 mytable
# 下標1表示mytable數據集的第一個變量 3 margin.table(mytable,1) 4 prop.table(mytable,1)
2.3多維連列表
結論:在治療組中男性有36%的改善,女性有59%的改善,說明性別對於藥效有影響
1 mytable <- xtabs(~ Treatment+Sex+Improved,data=Arthritis) 2 mytable 3 ftable(mytable) 4 # 計算單獨變量的編輯頻數 5 margin.table(mytable,1) 6 margin.table(mytable,2) 7 margin.table(mytable,3) 8 # 治療狀況和改善狀況的邊際頻數 9 margin.table(mytable,c(1,3)) 10 # 治療狀況和性別的改善狀況比例 11 ftable(prop.table(mytable,c(1,2))) 12 ftable(addmargins(prop.table(mytable,c(1,2)),3))
3.相關
探究案例:收入和預期壽命的相關性如何
3.1使用cor.test()來查看兩個變量是否相關接近1爲正相關,接近-1位負相關,接近0無關
1 cor.test(states[,3],states[,5])
3.2查看多個變量之間的相關性
結論:謀殺率與文盲率是最大的相關變量,與天氣是最小的相關變量
1 library(psych) 2 corr.test(states, use="complete")
4.t檢驗
4.1 獨立樣本t檢驗
探究案例:若是你在南方犯罪,是否更有可能被判監禁?
結論:是的,在南方犯罪更容易判監禁
1 library(MASS)
# 在如下的代碼中,使用了雙馬尾t檢驗,生成了南方group1和非南方的group0的值 2 t.test(Prob~So,data = UScrime)
4.2 非獨立樣本t檢驗
探究案例:年輕男性的失業率是否要比年長男性要高
結論:年輕男性的失業率高於年長男性
1 sapply(UScrime[c('U1','U2')], function(x){c(mean=mean(x),sd=sd(x))}) 2 with(UScrime,t.test(U1,U2,paired = T))
5 組間差別的非參數校驗
5.1兩組的比較
結論:和4.1,4.2的結論相同
1 # 使用wilcox函數秩和檢驗 2 with(UScrime,by(Prob,So,median)) 3 wilcox.test(Prob ~ So,data=UScrime) 4 5 sapply(UScrime[c('U1','U2')],median) 6 with(UScrime,wilcox.test(U1,U2,paired = T))
5.2大於兩組的比較
案例探究:比較美國四個地區的文盲率是否相同
結論:四個地區的文盲率不一樣,南部文盲率最高,北部最低
1 state <- data.frame(state.region,state.x77) 2 kruskal.test(Illiteracy~state.region,data=states)
5.3自定義遠程函數處理多組因子
source('http://www.statmethods.net/RiA/wmc.txt') state <- data.frame(state.region,state.x77) # wmc是在遠程服務器的自定義函數 wmc(Illiteracy~state.region,data=states,method='holm')