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

R语言统计分析篇

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

1.描述性统计分析

(1)方法云集

通过summary,sapply()计算描述性统计量

[plain] view plain copy
  1. vars<-c("mpg","hp","wt")  
  2. vars  
  3. head(mtcars[vars])  
  4. #通过summary()函数来获取描述性统计量  
  5. summary(mtcars[vars])  
  6. #sapply()函数,格式:sapply(x,FUN,options)x:数据框或矩阵;FUN:为任意的函数;options:若被指定,则将被传递给FUN  
  7. #通过sapply()计算描述性统计量  
  8. mystats<-function(x,na.omit=FALSE){  
  9.   if(na.omit)  
  10.     x<-x[!is.na(x)]  
  11.   m<-mean(x)  
  12.   n<-length(x)  
  13.   s<-sd(x)  
  14.   skew<-sum((x-m)^3/s^3)/n  
  15.   kurt<-sum((x-m)^4/s^4)/n-3  
  16.   return(c(n=n,mean=m,stdev=s,skew=skew,kurtosis=kurt))  
  17. }  
  18. sapply(mtcars[vars],mystats)  



通过Hmisc包中的describe()函数计算描述性统计量

[plain] view plain copy
  1. library(Hmisc)  
  2. describe(mtcars[vars])  


通过pastecs包中的stat.desc()函数计算描述性统计量

格式:stat.desc(x,basic=TRUE,desc=TRUE,norm=FALSE,p=0.95)

x 是一个数据框或时间序列
basic=TRUE 计算其中所有值、空值、缺失值的数量
以及最小值 、最大值、值域还有总和
desc=TRUE 计算中位数、平均数、平均数的标准误,
平均数置信度为95%的置信区间、方差、标准差以及变异系数
norm=TRUE 返回正态统计量,包括信度和峰度(以及它们的统计显著程度)
及Shapiro-Wilk正态检验结果
p  

[plain] view plain copy
  1. library(pastecs)  
  2. stat.desc(mtcars[vars])  


通过psych包中的describe()计算描述性统计量

可计算非缺失值的数量、平均数、标准差、中位数、截尾均值、绝对中位差、最小值、最大值、值域、偏度、峰度和平均值的标准误

[plain] view plain copy
  1. library(psych)  
  2. describe(mtcars[vars])  

(2)分组计算描述性统计量

使用aggregate()分组获取描述性统计量

注意:aggregate()仅允许在每次调用中使用平均数、标准差这样的单返回值函数 

[plain] view plain copy
  1. aggregate(mtcars[vars],by=list(am=mtcars$am),mean)  
  2. aggregate(mtcars[vars],by=list(am=mtcars$am),sd)  


使用by()分组计算描述性统计量

by(data,INDICES,FUN)

[plain] view plain copy
  1. dstats<-function(x)(c(mean=mean(x),sd=sd(x)))  
  2. by(mtcars[vars],mtcars$am,dstats)  

使用doBy包中的summaryBy()分组计算概述统计量


[plain] view plain copy
  1. library(doBy)  
  2. summaryBy(mpg+hp+wt~am,data=mtcars,FUN=mystats)  

使用psych包中的describe.by()分组计算概述统计量

[plain] view plain copy
  1. library(psych)  
  2. describeBy(mtcars[vars],mtcars$am)  



使用reshape包分组计算概述统计量

[plain] view plain copy
  1. library(reshape)  
  2. dstats<-function(x)(c(n=length(x),mean=mean(x),sd=sd(x)))  
  3. dfm<-melt(mtcars,measure.vasrs=c("mpg","hp","wt"),id.vars=c("am","cyl"))  
  4. cast(dfm,am+cyl+variable~.,dstats)  

2.频数表和列联表

(1)生成频数表

用于创建和处理列联表的函数

函数 描述
table(var1,var2,…,varN) 使用N个类别变量(因子)
创建一个N维列联表
xtabs(forula,data) 根据一个公式和一个矩阵或数据框创建一个N维列联表
prop.table(table,margins) 依margins定义的边际列表中条目表示为分数形式
margin.table(table,margins) 依margins定义的边际列表计算表中条目的和
addmargins(table,margins) 将概述边margins放入表中
ftable(table) 创建一个紧凑的”平铺“式列联表



(2)一维列联表

eg

[plain] view plain copy
  1. install.packages("vcd")  
  2. library(vcd)  
  3. mytable<-with(Arthritis,table(Improved))  
  4. mytable  
  5. #使用prop.table()将频数转化为比例值:  
  6. prop.table(mytable)  
  7. #使用prop.table()*100转化为百分比  
  8. prop.table(mytable)*100  


(3)二维列联表

table()

格式:
table(A,B)#A是行变量,B是列变量
xtabs(~A+B,data=mydata)#其中mydata是一个矩阵或数据框;要进行交叉分类的变量应出现在公式的右侧(即~符号的右方),以+作为分隔符

eg:
[plain] view plain copy
  1. mytable<-xtabs(~Treatment+Improved,data=Arthritis)  
  2. mytable  
  3. #可以使用margin.table()和prop.table()函数分别生成边际频数和比例  
  4. margin.table(mytable,1) #下标1指代table()语句中的第一个变量  
  5. prop.table(mytable,1)  
  6. #列和列比例可以这样计算  
  7. margin.table(mytable,2)#下标2指代table()语句中的第二个变量  
  8. prop.table(mytable,2)  
  9. #各单元所占比例可用如下语句获取  
  10. prop.table(mytable)  
  11. #可使用addmargins()函数为表格添加边际和;使用addmargins()时,默认行为是为表中所有的变量创建边际和  
  12. addmargins(mytable)  
  13. addmargins(prop.table(mytable))  
  14. #仅添加各行的和  
  15. addmargins(prop.table(mytable,1),2)  
  16. #仅添加各列的和  
  17. addmargins(prop.table(mytable,2),1)  


注意:table()函数默认忽略缺失值(NA),要在频数统计中将NA视为一个有效的类别,请设定参数useNA="ifany"

使用CrossTable生成二维列联表

[plain] view plain copy
  1. install.packages("gmodels")  
  2. library(gmodels)  
  3. CrossTable(Arthritis$Treatment,Arthritis$Improved)  

(4)多维列联表

table()

xtabs()

margin.table()

prop.table()

addmargins()

ftable()


eg:

[plain] view plain copy
  1. mytable<-xtabs(~Treatment+Sex+Improved,data=Arthritis)  
  2. mytable  


上一篇:
《数据科学:R语言实现》——2.9 使用twitteR发布时间:2022-07-18
下一篇:
R语言学习——循环判断语句发布时间: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