• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

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

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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

 

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
用R语言在机器学习中建立集成模型?发布时间:2022-07-18
下一篇:
六、R语言可视化--ggplot2定位之分面发布时间:2022-07-18
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap