打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
[转载]在R中统计数据的频数或者密度分布并图形化
userphoto

2015.12.20

关注
在进行数据分析之前,我们往往要首先对数据有一个大致的了解。对于统计性的数据,最好首先看看数据是如何分布,并把分布图示化,可以帮助我们确定后续的分析策略。现在,以R中著名的iris数据为例来计算其中一组数据的分布情况。
> data(iris)
> names(iris)
[1] "Sepal.Length" "Sepal.Width" "Petal.Length""Petal.Width" 
[5] "Species"
> length(iris$Sepal.Length)
[1] 150

1. 最简单的办法:hist
hist可以很直接的看到各组数据的Frequency或者Density分布情况,计算Frequency或者Density依据参数而定,比较粗糙。
> hist(iris$Sepal.Length)


#通过breaks参数可以设置计算分布的数据区间
> hist(iris$Sepal.Length,breaks=seq(4,8,by=1))
2. 可选的办法:density
查看density的帮助文档,可以发现函数density计算的是数据的核心密度(kernaldensity)分布,大多数时候该函数并非我们想要的。但是有些时候,density可以帮助我们计算数据的密度分布,计算结果是continuous的,图形化的结果也是continuous的曲线。density的计算可以通过bw参数(bandwidth)来控制,bw参数最直观的影响就是曲线的平滑性。默认的bw是通过函数bw.nrd0()计算得出,也可以手动设置。
>plot(density(iris$Sepal.Length))
#改变bw参数来改变density的结果
> plot(density(iris$Sepal.Length,bw=0.2))
3. 计算频度分布并用barplot作图
我经常用的办法,比较繁琐一些,但是感觉图形化的结果也更美观。首先用cut和table计算数据的频数分布,在用barplot作图。table函数计算的是每个数据在数据集中出现的次数,但是无法计算数据区间内的数据频数分布,需要用cut辅助。
> summary(iris$Sepal.Length)#看数据的分布区间
   Min. 1st Qu. Median    Mean3rd Qu.   Max. 
  4.300   5.100  5.800   5.843  6.400  7.900 
> m<-seq(4,8,by=1)#设置一个区间范围
> table(cut(iris$Sepal.Length,m))#计算各个区间的频数
(4,5] (5,6] (6,7] (7,8] 
   32   57    49   12 
barplot(table(cut(iris$Sepal.Length,m)))#作图
>barplot(table(cut(iris$Sepal.Length,seq(4,8,by=0.1))))#更详细的频数分布

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
R最快且比dplyr最高效的大数据处理R包:tidyfst
统计学中基础概念说明
一条指令把统计 画图都给做了?似乎太美好!
R|散点图+边际图(柱形图,小提琴图),颜值区UP
排序和去重|数据处理
一个用R语言进行Kmeans聚类分析的例子
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服