在R中统计数据的频数或者密度分布并图形化

本文介绍如何利用R语言中的hist、density和barplot函数来分析iris数据集中的Sepal.Length数据的分布情况,包括频率分布、密度分布及详细频数分布,并通过代码示例展示具体实现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在进行数据分析之前,我们往往要首先对数据有一个大致的了解。对于统计性的数据,最好首先看看数据是如何分布,并把分布图示化,可以帮助我们确定后续的分析策略。现在,以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)
[转载]在R中统计数据的频数或者密度分布并图形化

#通过breaks参数可以设置计算分布的数据区间
> hist(iris$Sepal.Length,breaks=seq(4,8,by=1))
[转载]在R中统计数据的频数或者密度分布并图形化
2. 可选的办法:density
查看density的帮助文档,可以发现函数density计算的是数据的核心密度(kernal density)分布,大多数时候该函数并非我们想要的。但是有些时候,density可以帮助我们计算数据的密度分布,计算结果是 continuous的,图形化的结果也是continuous的曲线。density的计算可以通过bw参数(bandwidth)来控制,bw参数最直观的影响就是曲线的平滑性。默认的bw是通过函数bw.nrd0()计算得出,也可以手动设置。
> plot(density(iris$Sepal.Length))
[转载]在R中统计数据的频数或者密度分布并图形化
#改变bw参数来改变density的结果
> plot(density(iris$Sepal.Length,bw=0.2))
[转载]在R中统计数据的频数或者密度分布并图形化
3. 计算频度分布并用barplot作图
我经常用的办法,比较繁琐一些,但是感觉图形化的结果也更美观。首先用cut和table计算数据的频数分布,在用barplot作图。table函数计算的是每个数据在数据集中出现的次数,但是无法计算数据区间内的数据频数分布,需要用cut辅助。
> summary(iris$Sepal.Length)#看数据的分布区间
     Min. 1st Qu.   Median      Mean 3rd 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)))#作图
[转载]在R中统计数据的频数或者密度分布并图形化
>barplot(table(cut(iris$Sepal.Length,seq(4,8,by=0.1))))#更详细的频数分布
[转载]在R中统计数据的频数或者密度分布并图形化
转自:http://blog.sina.com.cn/s/blog_7b41b6910102v3s5.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值