绘图的频率分布

我有一系列值(即一列数据),我想创建一个绘图,其中x轴上的数据值范围和每个值出现在y轴上的数据集中的频率。

我想要的是非常接近核密度图:

# Kernel Density Plot
d <- density(mtcars$mpg) # returns the density data 
plot(d) # plots the results

和频率分布在R在计算器上。

但是,我想在y轴上的频率(而不是密度)。

具体来说,我正在使用网络程度分布,并且希望使用开放圆点(即此图像)的双对数比例。

我已经研究了相关资源和问题,但还没有找到我想要的:

R的绘图分布食谱接近我想要的,但不是精确。 我想用直方图示例中定义的“count”替换密度曲线示例中的y轴。

R中的ecdf()函数(也就是这个问题)可能是我想要的,但我希望观察到的频率,而不是y轴上0和1之间的归一化值。

这个问题与频率分布有关,但我想要点,而不是酒吧。

编辑:

数据是一个标准的幂律分布,即

dat <- c(rep(1, 1000), rep(10, 100), rep(100, 10), 100)

如果您有观测值的离散值,并且想要在对数刻度上绘制点,那么

dat <- c(rep(1, 1000), rep(10, 100), rep(100, 10), 100)

dd<-aggregate(rep.int(1, length(dat))~dat, FUN=sum)
names(dd)<-c("val","freq")

plot(freq~val, dd, log="xy")

可能是你在做什么。

在这里输入图像描述


密度的积分大约为1,因此将密度$ y估计乘以值的数量应该可以给出一些关于频率范围的内容。 如果你想要一个“真实”的频率,那么你应该使用直方图:

d <- density(mtcars$mpg) 
d$y <- d$y * length(mtcars$mpg)  ; plot(d)

这是一个间隔为1个单位的直方图:

hist(mtcars$mpg, 
     breaks=trunc(min(mtcars$mpg)):(1+trunc(max(mtcars$mpg))), add=TRUE)

所以这是叠加的比较:

d <- density(mtcars$mpg) 
d$y <- d$y * length(mtcars$mpg)  ; plot(d, ylim=c(0,4) )
hist(mtcars$mpg, breaks=trunc(min(mtcars$mpg)):(1+trunc(max(mtcars$mpg))), add=TRUE)

在这里输入图像描述

您需要查看默认密度带宽选择受到批评并提供备选方案的密度页面。 如果使用调整参数,则可能会看到更接近(平滑对应于直方图的对象)

在这里输入图像描述

链接地址: http://www.djcxy.com/p/89769.html

上一篇: Plot Frequency Distribution of One

下一篇: How to calculate gray intensity variation across closely spaced parallel lines