【问题标题】:How to Plot Density from Frequency Table如何从频率表中绘制密度
【发布时间】:2012-05-02 10:54:09
【问题描述】:

给定下面的频率表:

> print(dat)
V1    V2
1  1 11613
2  2  6517
3  3  2442
4  4   687
5  5   159
6  6    29

# V1 = Score
# V2 = Frequency

我们如何绘制 密度,(即 y 轴范围从 0 到 1.0)。

目前我有以下 频率 图:

plot(0,main="table",type="n");
lines(dat,lty=1)

# I need to use lines() and plot() here, 
# because need to make multiple lines in single plot

不知道如何处理密度。

【问题讨论】:

    标签: r plot


    【解决方案1】:

    假设每一行是一个单独的块,每个块的密度将为V2 / sum(V2)

    为了您的数据

    dat <- data.frame(V1 = 1:6, V2 = c(11613, 6517, 2442, 687, 159, 29))
    

    我明白了:

    > with(dat, V2 / sum(V2))
    [1] 0.541474332 0.303865342 0.113862079 0.032032452 0.007413624 0.001352170
    

    我们可以使用 R 的工具进行检查。首先扩展您的紧凑频率表

    dat2 <- unlist(apply(dat, 1, function(x) rep(x[1], x[2])))
    

    然后使用hist()计算我们想要的值

    dens <- hist(dat2, breaks = c(0:6), plot = FALSE)
    

    查看生成的对象:

    > str(dens)
    List of 7
     $ breaks     : int [1:7] 0 1 2 3 4 5 6
     $ counts     : int [1:6] 11613 6517 2442 687 159 29
     $ intensities: num [1:6] 0.54147 0.30387 0.11386 0.03203 0.00741 ...
     $ density    : num [1:6] 0.54147 0.30387 0.11386 0.03203 0.00741 ...
         $ mids       : num [1:6] 0.5 1.5 2.5 3.5 4.5 5.5
     $ xname      : chr "dat2"
     $ equidist   : logi TRUE
     - attr(*, "class")= chr "histogram"
    

    注意density 组件是:

    > dens$density
    [1] 0.541474332 0.303865342 0.113862079 0.032032452 0.007413624 0.001352170
    

    这与我根据原始频率表表示的手动计算一致。

    至于绘图,如果您只想绘制密度,请尝试:

    dat <- transform(dat, density = V2 / sum(V2))
    plot(density ~ V1, data = dat, type = "n")
    lines(density ~ V1, data = dat, col = "red")
    

    如果您想强制轴限制,请执行以下操作:

    plot(density ~ V1, data = dat, type = "n", ylim = c(0,1))
    lines(density ~ V1, data = dat, col = "red")
    

    【讨论】:

      猜你喜欢
      • 2019-07-19
      • 1970-01-01
      • 2016-06-30
      • 1970-01-01
      • 2021-08-17
      • 1970-01-01
      • 2011-04-23
      • 2011-08-11
      • 2013-01-27
      相关资源
      最近更新 更多