R语言hist函数调整breaks参数后sum(h$density)结果异常问询
R语言hist()函数密度值求和异常的成因
- 核心逻辑:直方图返回的
density字段是概率密度值,计算公式为单区间频数 / (总样本量 * 单区间宽度),根据概率密度的定义,只有所有区间密度乘以对应区间宽度的求和结果才固定为1,直接对density列求和没有固定的标准值。 - 默认参数下求和为1的原因:
hist()默认生成的区间宽度为1,此时sum(h$density) = sum(h$density * 1),刚好等于概率密度的积分结果,符合你的预期。 - FD/Scott规则下求和为2的原因:这两种区间分割规则会根据数据离散程度、样本量自动计算最优区间宽度,你遇到的求和结果为2的场景,说明此时自动生成的区间宽度均为0.5,代入校验公式
sum(h$density * 区间宽度)会得到标准值1,反向推导自然得到sum(h$density)=2。
你可以运行以下代码验证逻辑:
# 输出所有区间的宽度,FD/Scott规则下会得到统一的0.5 diff(h$breaks) # 概率密度的正确校验方式,返回结果恒为1 sum(h$density * diff(h$breaks))
内容的提问来源于stack exchange,提问作者Serena Negroni
相关产品推荐
相关产品推荐

