R語言- 基本統計分析

目的:服務器

  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')

  

相關文章
相關標籤/搜索