我发现一篇文章提供了计算分位数的算法,而 R 显然没有遵循该文章。
文章为: https://www-users.york.ac.uk/~mb55/intro/quantile.htm
在 R 中,我有以下代码:
nv<-c(10,20,30,40)
quantile(nv)
0% 25% 50% 75% 100%
10.0 17.5 25.0 32.5 40.0
Run Code Online (Sandbox Code Playgroud)
然而,75%结果的分位数似乎是错误的,根据文章,公式是:
i = q(n+1)
Run Code Online (Sandbox Code Playgroud)
在我的例子中(75%)q=0.75 且 n=4(我的组合中有 4 个观察值)
X_j + (X_j+1 - X_j) times (i - j)
Run Code Online (Sandbox Code Playgroud)
这意味着它应该是:
30 + (40-30)*(3.75-3) = 37.5而不是32.5
我很难认为 R 犯了一个错误。
我在这里缺少什么?
谢谢。
如果您查看帮助页面quantile:
?quantile
Run Code Online (Sandbox Code Playgroud)
您将看到分位数可以通过不同的方式计算,可以使用参数指定type =,参数为 1-9 之间的整数。
类型 6 给出了您期望的结果:
quantile(c(10, 20, 30, 40), type = 6)
0% 25% 50% 75% 100%
10.0 12.5 25.0 37.5 40.0
Run Code Online (Sandbox Code Playgroud)