R语言统计分析——直方图、核密度图

参考资料:R语言实战【第2版】

1、直方图

        直方图通过在x轴上讲值域分割为一定数量的组,在y轴上显示相应值得频数,展示了连续型变量的分布。可以使用如下函数创建直方图:

        hist(x)

其中的x是一个由数据值组成的数值向量。参数freq=FALSE表示根据概率密度而不是频数绘制图形。参数breaks用于控制组的数量。在定义直方图中的单元时,默认将生成等距切分。

# 设置画布参数
par(mfrow=c(2,2))

# 绘制简单直方图
hist(mtcars$mpg)

# 直方图中指定组数和颜色
hist(
  mtcars$mpg,
  breaks=12,
  col="red",
  xlab="Miles Per Gallen",
  main="Colored histogram with 12 bins"
)

# 添加轴须图
hist(
  mtcars$mpg,
  freq=FALSE,
  breaks=12,
  col="red",
  xlab="Miles Per Gallen",
  main="Histogram, rug plot, density curve"
)
rug(jitter(mtcars$mpg))
lines(density(mtcars$mpg),col="blue",lwd=2)

# 添加正态密度曲线和外框
x<-mtcars$mpg
h<-hist(
  x,
  breaks=12,
  freq=FALSE,
  col="red",
  xlab="Miles Per Gallen",
  main="Histogram with normal curve and box"
)
xfit<-seq(min(x),max(x),length=40)
yfit<-dnorm(xfit,mean=mean(x),sd=sd(x))
lines(xfit,yfit,col="blue",lwd=2)
box()

2、核密度图

        和密度估计是用于估计随机变量概率密度函数的一种非参数方法,可以作为一种用来观察连续型变量分布的有效方法。绘制密度图的方法(不叠加到另一幅图上)为:

        plot(density(x))

其中的x是一个数值型向量。由于plot()函数会创建一幅新的图形,所以要向一幅已经存在的图形上叠加一条密度曲线,可以使用lines()函数。

par(mfrow=c(2,1))
d<-density(mtcars$mpg)
# 完全使用默认设置
# 创建核密度图
plot(d)
# 给核密度图进行相关设置
d<-density(mtcars$mpg)
# 添加标题
plot(d,
     main="Kernel Density of Miles Per Gallen")
# 将曲线改为蓝色,并使用实心红色
# 填充曲线下方的区域
polygon(d,col="red",border="blue")
# 添加棕色的周线图
rug(mtcars$mpg,col="brown")

        使用sm包中的sm.density.compare()函数可向图形叠加两组或更多的核密度图。使用格式为:

        sm.density.compare(x,factor)

其中的x是一个数值型向量,factor是一个分组变量。

library(sm)
attach(mtcars)
# 创建分组因子
cyl.f<-factor(cyl,levels=c(4,6,8),
              labels=c("4 cylinder","6 cylinder","8 cylinder"))
# 绘制密度图
sm.density.compare(mpg,cyl,xlab="Miles Per Gallon")
# 添加标题
title(main="MPG Distribution by Car Cylinders")
# 通过鼠标单击添加图例
colfill<-c(2:(1+length(levels(cyl.f))))
legend(locator(1),levels(cyl.f),fill=colfill)
detach(mtcars)

其中legend()函数是相同图形上添加一个图例,第一个参数locator(1)表示用鼠标点击想让图例出现的位置来交互地放置这个图例。第二个参数值则是由标签组成的字符向量。第三个参数值使用向量colfill为cyl的每一个水平指定了一种颜色。

  • 21
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值