为何statsmodels的Qn估计器输入不同却输出相同结果?
关于statsmodels中qn_scale的两个问题解析
1. 不同输入结果一致的原因
statsmodels的qn_scale函数对小样本有明确的分支处理:
- 当样本量
n=2时,函数直接返回参数c的取值(默认值为0.7413),不会执行两两绝对差的计算逻辑。 - 若你测试
sm.robust.scale.qn_scale([1,2,3,4,500])得到的结果和n=2时一致,大概率是测试误差或版本问题:正常情况下,n=5时函数会计算所有两两绝对差(共10个),取排序后的第7个值(索引6)为4,再通过0.5 * 4 * 0.7413得到1.4826,和n=2的结果0.7413明显不同。如果确实出现结果一致,建议检查statsmodels版本,或确认输入数据是否正确。
另外,Qn估计器本身是高稳健性的尺度估计量,异常值500对其结果影响极小,但不会让结果和n=2的情况完全一致。
2. 参数c"未生效"的本质
当你传入[1,2](n=2)并设置c=0.399时,函数返回0.399是符合设计逻辑的:源码中明确规定,当样本量为2时,直接返回参数c的值,而非进行Qn的标准计算。这不是参数失效,而是函数针对极小样本的特殊处理——因为n=2时仅能得到1个两两绝对差,无法满足Qn估计器基于分位数计算的要求,因此直接返回缩放系数c作为结果。
内容的提问来源于stack exchange,提问作者travkin6524
相关产品推荐
相关产品推荐

