码迷,mamicode.com
首页 > 编程语言 > 详细

R语言--基本统计分析(基本统计方法、频数表、列联表、独立性检验、相关性计算)

时间:2021-07-06 16:23:03      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:std   ret   imp   情况下   操作   ack   reg   gate   var   

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

 技术图片

 

R语言--基本统计分析(基本统计方法、频数表、列联表、独立性检验、相关性计算)

标签:std   ret   imp   情况下   操作   ack   reg   gate   var   

原文地址:https://www.cnblogs.com/YY-zhang/p/14972922.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!