【发布时间】:2017-03-04 10:37:21
【问题描述】:
我是 R 的初学者,最近开始接触图形。
我设法编写了一个有效的经验累积分布函数(用户生成,不使用标准 ecdf() 函数)并生成了一个绘图。然而,情节不是它应该的样子,它有两个问题,我不确定如何解决它们(我已经完成了我的“研究”,但没有找到解决方案)。
这是我的代码:
set.seed(1)
n = 50
x = rpois(n, 2.2)
cdf = function(x,n)
{
v=c()
for(z in 1:max(x))
{
a = length(x[x<=z])/n
v = c(v, a)
}
plot(v,type="l", main="empirical cumulative distribution function", xlab="x", ylab="cumulative probability", xlim=c(0,6), ylim=c(0,1.0))
}
cdf(x, n)
这个情节有两个问题:
线条是直的,但应该是通过所有点的平滑曲线。
不包括原点(现在曲线从 x = 1 开始)。
如何以优雅的方式解决这些问题?
【问题讨论】:
-
或许可以看到
?ecdf? -
不,我不想使用标准的内置函数 ecdf()。欢迎对我的函数提出建议(最好是添加到 plot() 函数中)。
-
将
v=c()替换为v = 0,并将您的绘图调用更改为plot(0:max(x),v,type="l", .......)。对于流畅的线条,您将不得不做一些额外的工作。以?loess为例。 -
我查看了 loes() 和 lowess() 但似乎平滑效果很小。我认为这是由于我的数据。你认为有可能创造出漂亮的平滑曲线吗?