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
克萊姆系數 Cramer’s v
2.2 相關系數的類型
(1)Peason相關系數,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)在控制第2、3、6列的情況下,計算第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")

