【发布时间】:2015-11-25 10:46:53
【问题描述】:
我有一个包含学生分数的变量。我正在寻找绘制分数百分位数的最佳方法。让我们一睹我的数据,
[1] 26 30 27 28 27 27 29 28 3 12 27 24 29 25 26 30 25 27 28 27 25 14 30 28 24 28 27
[28] 19 18 25 28 24 24 6 20 28 28 27 22 27 19 22 21 20 30 29 26 30 28 29 28 29 25 25
[55] 27 26 20 26 10 21 20 16 24 24 26 27 28 27 29 29 27 23 20 18 19 26 21 25 17 22 28
[82] 26 27 27 25 26 25 29 29 28 25 22 30 29 28 28 25 29 30 27 28 28 30 28 29 29 30 29
[109] 27 27 28 24 25 15 20 25 24 25 28 26 27 21 18 24 24 23 30 23 28 22 29 26 29 25 29
[136] 20 25 28 12 16 23 13 17 12 17 26 13 26 28 26 25 27 21 30 30 30 27 20 24 21 28 26
[163] 22 21 26 29 28 24 30 22 21 25 26 28 26 23 27 25 24 27 15 21 13 28 30 29 28 27 23
[190] 27 23 28 29 18 27 23 24 28 30 30 30 29 18 24 21 17 16 12 28 22 23 26 21 12 20 20
[217] 26 28 27 27 30 26 29 27 24 23 27 26 14 23 16 15 26 28 27 27 25 29 15 23 22 29 26
[244] 20 20 21 21 24 24 20 25 23 22 24 22 26 28 28 27 24 28 28 27 27 27 21 23 21 24 28
[271] 25 23 19 21 20 21 23
出于可重现的目的,我使用了以下代码,
x <- seq(0,50,length=100)
quantile(x,c(.10,.20,.30,.40,.50,.60,.70,.80,.90,1))
10% 20% 30% 40% 50% 60% 70% 80% 90% 100%
5 10 15 20 25 30 35 40 45 50
我尝试了plot(quantile(x,c(.10,.20,.30,.40,.50,.60,.70,.80,.90,1))),但情节并未显示出理想的方式。我看起来像一个正态分布钟形曲线,它会显示如下所示的百分比,
为此,我认为我应该将变量转换为正态分布变量并使用以下变量,
y <- dnorm(x)
plot(x,y,type="l")
得到以下输出,
> z <- scale(x)
> y <- dnorm(z)
> plot(z,y, type= "l")
【问题讨论】:
-
x <- seq(-3,3,0.01); y <- dnorm(x); plot(x,y, type='l'); -
@Barranka 我已经试过了。对于我的输出,我只得到上述输出。你能检查一下吗?
-
你显然没有按照巴兰卡的建议去做。他的输出是准确的。不知道你实际上做了什么。但我猜
z <- scale(x); y <- dorm(z); plot(z,y, type= "l")是你的本意(但做错了)。 -
@Alex 我试过 Barranka 的代码,我也试过 urs。但是我得到的输出不是钟形的。请查看更新后的问题。
-
@Observer 您需要绘制直方图。试试`?hist'。另外,请阅读The Quick-R tutorial: Density plots
标签: r