1
考虑这个玩具的例子:当数值具有不同的抽样概率时,计算中位数的最快方法是什么?
一位老师想要计算他班上学生的中位身高。但并不是所有的学生每天都会上课,所以在任何一天,计算出的中间身高可能不同。下表列出了他们在课堂上的可能性及其高度。有了这些信息,他可以估计预期的中位数。
>set.seed(123)
>data1 <- data.frame(Student=c(LETTERS[1:10]), Height.cm=sort(rnorm(n=10, mean=140, sd=10)), Prob.in.class=c(1,.75,1,.5,1,1,1,.25,1,.5))
>data1
Student Height.cm Prob.in.class
1 A 127.3494 1.00
2 B 133.1315 0.75
3 C 134.3952 1.00
4 D 135.5434 0.50
5 E 137.6982 1.00
6 F 140.7051 1.00
7 G 141.2929 1.00
8 H 144.6092 0.25
9 I 155.5871 1.00
10 J 157.1506 0.50
在R中估计这种分布的中位数(或任意分位数)的最快方法是什么?
对于我的实际计算,我需要估计数百个具有数万个点(及相关概率)的不同向量的中位数和任意分位数。我已经看到这个概率密度函数是用梯形方法估计的,但我不确定这是最好的方法。
任何意见,你可以提供将不胜感激。谢谢!
没有,我觉得这(加权位数)要小心的权重向量是罚款。谷歌搜索“加权分位数r”,https://artax.karlin.mff.cuni.cz/r-help/library/reldist/html/wtd.quantile.html或http://artax.karlin.mff.cuni .cz/r -help/library/PSCBS/html/weightedQuantile.html或https://github.com/hadley/bigvis/blob/master/R/weighted-stats.r?你可以基准一些这些解决方案... –
感谢您指着我在正确的方向@BenBolker。它看起来像'PSCBS :: weightedQuantile'和'reldis :: wtd.quantile'只是使用'Hmisc :: wtd.quantile',所以我会坚持原来的。 – Ricola