如何解决如何在Excel公式中匹配Stata百分位数计算?
Stata 使用称为 R-2 (https://en.wikipedia.org/wiki/Quantile) 的分位数计算方法,而 Excel 使用带有 percentile.inc 函数的 R-7。我的目标是在 Excel 中找到一个正确的公式,该公式可以使用 R-2 方法给出与 Stata 中相同的结果。
现在,我可以看到 percentile.inc 仅匹配奇数和离散样本的 Stata 结果(我正在处理离散样本)。但是,即使 samples shown here
从概念上讲,在 Excel 中使用 percentile.inc 似乎并不正确,因为它是一种 R-7 方法,即使它与奇数和离散样本的 R-2 方法相匹配。
我的问题是,在 Excel 中可以正确使用以匹配 Stata 百分位数结果的最简单公式是什么?
解决方法
因此,将 R-2 相当直白地翻译成 N=4 的 Excel 将如下所示(假设数据已排序):
=(INDEX(A$2:A$5,CEILING(C2*4,1))+INDEX(A$2:A$5,FLOOR(C2*4+1,1)))/2
如果您尝试将分位数设为 0,则确实会出错,因此这与分位数为 1 一样必须是特殊情况。我假设 Stata 在这两种情况下给出了集合中的最低和最高值?
包含所有检查的更动态的公式如下所示:
=IFS(OR(C2<0,C2>1),"Out of range",C2=0,A$2,C2=1,INDEX(A:A,COUNT(A:A)+1),TRUE,(INDEX(A$2:INDEX(A:A,CEILING(C2*COUNT(A:A),1))+INDEX(A$2:INDEX(A:A,FLOOR(C2*COUNT(A:A)+1,1)))/2)
尽管您可以使用 Microsoft 365 中的 Let 构造使其更短。
在 VBA 中将此作为函数实现可能会很好,它可以对数据进行排序并返回分位数值,或者当然您也可以在 Microsoft 365 公式中进行排序:
=LET(N,COUNT(A:A),sortedRange,SORT(A$2:INDEX(A:A,N+1)),IFS(OR(C2<0,INDEX(sortedRange,1),N),(INDEX(sortedRange,CEILING(C2*N,1))+INDEX(sortedRange,FLOOR(C2*N+1,1)))/2))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。