R語言--基本統計分析(基本統計方法、頻數表、列聯表、獨立性檢驗、相關性計算)


1 基本統計分析

1.1 描述性統計分析

myvar<-c("mpg","hp","wt")

head(mtcars[myvar])  #顯示數據框的頭部信息

 

dat<-mtcars[myvar]   #查看數據框

1.1.1 方法

1)簡單分析:summary()

 

 

 結果分析:計算了最值、分位數、均值等

2)自定義函數FUN     sapply(dat,FUN)

mysta<-function(x,na.omit=F){

  if(na.omit)

     x<-x[!is.na(x)]  #缺失值刪除

  m<-mean(x)

  n<-length(x)

  s<-sd(x)  #標准差

  skew<-sum((x-m)^3/s^3)/n  #偏度

  kurt<-sum((x-m)^4/s^4)/n-3  #風度

  return(c(n=n,mean=m,stdev=s,skew=skew,kurtosis=kurt))

}

sapply(dat, mys)

 

1.1.2 方法+1

(1)調用包:Hmisc

library(Hmisc)

describe(dat)

 

(2) 調用包:pastecs

library(pastecs)

stat.desc(dat)

 

1.1.3 分租計算描述性統計量

1)每次只能返回一個統計量  aggregate()

aggregate(dat,by=list(am=mtcars$am),mean)  

解釋:aggregate()分組函數,dat分組對象,by=list(am=mtcars$am)根據什么分租,mean分組做什么事情

 

2)返回多個統計量  by()

dsta<-function(x)sapply(x,mysta)  #定義函數dsta,直接引用sapply(x,mysta)

by(dat,mtcars$am,dsta)

 

1.1.4 分組計算的擴展

library("doBy")

summaryBy(mpg+hp+wt~am,data=mtcars,FUN=mysta )

解釋:~前面mpg+hp+wt是要顯示的變量,~后面是根據am進行分組,data指明數據集,FUN指明用到的函數

  

 

1.2 頻數表和列聯表

1.2.1 生成頻數表

1)一維頻數表

 mytable<-with(Arthritis,table(Improved)) #把變量中的每一個取值列出來統計和

解釋:with第一個參數Arthritis是確定數據框(數據集),table()統計頻率

 

返回百分比:prop.table(mytable)

 

2二維頻數表 xtabs()

mytable1<-xtabs(~Treatment+Improved,data=Arthritis)    #生成列聯表

 

3)邊際操作:1代表對行操作,2代表對列操作

 margin.table(mytable1,1)  #統計每行的和

 

prop.table(mytable1,1)  #計算每行的百分比

 

 

1.2.2 獨立性檢驗(檢驗數據框中的兩列是否相互獨立)

1)卡方檢驗 原假設是相互獨立的

library(vcd)

mytable2<-xtabs(~Treatment+Improved,data=dat)  #生成一個列聯表

mytable2

 

chisq.test(mytable2)

 

 結果分析:結果分析:p-value值小於0.05,拒絕原假設,說明用葯與否與病人的改善效果不互相獨立,即有關

 

mytable3<-xtabs(~Sex+Improved,data=dat)

mytable3

chisq.test(mytable3)

 

結果分析:p-value值大於0.05,接受原假設,認為性別與改善效果相互獨立,即沒有關系

2)精確性檢驗

fisher.test(mytable3)

 

結果分析:p-value值大於0.05,接受原假設,認為性別與改善效果相互獨立,即沒有關系

3)分層獨立性檢驗  分男性和女性來說,用葯與改善效果相互獨立

mytable4<-xtabs(~Treatment+Improved+Sex,data=dat)  #生成列聯表

 

mantelhaen.test(mytable4)

 

 

結果分析:p-value值小於0.05,拒絕原假設,無論對於男性還是女性,用葯與否對症狀的改善都不是相互獨立的,即該葯無論是對男性還是女性,都是有效果的

 

2 相關

2.1 相關性度量

mytable2<-xtabs(~Treatment+Improved,data=dat)  #生成一個列聯表

mytable2

 

assocstats(mytable2)

 

結果:phi系數 phi-Coefficient:只對兩個變量有效,即行變量兩個,列變量也兩個

列連系數 Contingency Coeff

克萊姆系數 Cramers v

 

2.2 相關系數的類型

1Peason相關系數,Spearman相關系數,Kendall相關系數

dat<-state.x77  #指定數據集

states<-dat[,1:6]  #只取前6

cor(states)  #列出所有變量兩兩之間的相關性,默認相關系數為Peason相關系數

 

cor(states,method = "spearman") #指定是Spearman相關系數

 

 cov(states)  #計算協方差矩陣

 

2)偏相關系數

install.packages("ggm")

library(ggm)

colnames(states)  #顯示出表的列名

 

pcor(c(1,5,2,3,6),cov(states))  

解釋:pcor()計算偏相關系數,c(1,5,2,3,6)在控制第236列的情況下,計算第1列和第5列的偏相關性,cov(states)協方差矩陣

 

 2.3相關系數顯著性檢驗  

原假設變量之間不相關,相關系數是接近於0

cor.test(states[,3],states[,5])

 

結果分析:p-value值小於0.05,拒絕原假設,即折兩列是相關的,同時也可以看到相關系數 cor 比較高

計算相關系數的另一個函數corr.test()

library("psych")

corr.test(states,use="complete")

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM