r - 将正态分布拟合到分组数据,给出预期频率

标签 r ggplot2 histogram normal-distribution

我有观察结果的频率分布,按类(class)间隔内的计数进行分组。 我想拟合正态(或其他连续)分布,并根据该分布找到每个间隔中的预期频率。

例如,假设以下情况,我想计算另一列,expected给予 胸围在 chest 给出的区间内的士兵的预期数量,其中这些 假设以标称值为中心。例如,35 =34.5 <= y < 35.5 。我见过的一项分析给出了该单元格中的预期频率为 72.5,而观察到的频率为 81。

> data(ChestSizes, package="HistData")
> 
> ChestSizes
   chest count
1     33     3
2     34    18
3     35    81
4     36   185
5     37   420
6     38   749
7     39  1073
8     40  1079
9     41   934
10    42   658
11    43   370
12    44    92
13    45    50
14    46    21
15    47     4
16    48     1
> 

> # ungroup to a vector of values
> chests <- vcdExtra::expand.dft(ChestSizes, freq="count")

这个问题有很多变体,其中大多数与在直方图上绘制正态密度有关,缩放以表示计数而不是密度。但没有一个明确显示预期频率的计算。一个接近的问题是 R: add normal fits to grouped histograms in ggplot2

我可以很好地完成标准图(如下),但对于其他事情,例如卡方检验或 vcd::rootogram绘图,我需要同一类间隔内的预期频率。

> bw <- 1
n_obs <- nrow(chests)
xbar <- mean(chests$chest)
std <- sd(chests$chest)

plt <-
ggplot(chests, aes(chest))  + 
  geom_histogram(color="black", fill="lightblue",  binwidth = bw) + 
  stat_function(fun = function(x) 
    dnorm(x, mean = xbar, sd = std) * bw * n_obs,
    color = "darkred", size = 1)

plt

enter image description here

最佳答案

以下是如何在假设正态性的情况下计算每个组的预期频率。

xbar <- with(ChestSizes, weighted.mean(chest, count))
sdx <- with(ChestSizes, sd(rep(chest, count)))
transform(ChestSizes, Expected = diff(pnorm(c(32, chest) + .5, xbar, sdx)) * sum(count))

   chest count     Expected
1     33     3    4.7600583
2     34    18   20.8822328
3     35    81   72.5129162
4     36   185  199.3338028
5     37   420  433.8292832
6     38   749  747.5926687
7     39  1073 1020.1058521
8     40  1079 1102.2356155
9     41   934  943.0970605
10    42   658  638.9745241
11    43   370  342.7971793
12    44    92  145.6089948
13    45    50   48.9662992
14    46    21   13.0351612
15    47     4    2.7465640
16    48     1    0.4579888

关于r - 将正态分布拟合到分组数据,给出预期频率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65382638/

相关文章:

r - 将平均值添加到构面

r - 绘制表格和连接它们的箭头

c++ - 与已知图像匹配的局部二进制模式

r - 在构面的第一个情节中的位置图例

运行函数而不执行其 print() 语句

r - 按 id 为两个特定变量合并日期并创建新变量

r - 如何在 R 中创建直方图,其中 x 坐标显示非数字标签和频率总计

r - 绘制函数和导数函数

r - 无法在 r 中构建等值线图

r - R中大矩阵的直方图