【问题标题】:Smooth curve through points and include the origin in R通过点平滑曲线并在 R 中包含原点
【发布时间】: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)

这个情节有两个问题:

  1. 线条是直的,但应该是通过所有点的平滑曲线。

  2. 不包括原点(现在曲线从 x = 1 开始)。

如何以优雅的方式解决这些问题?

【问题讨论】:

  • 或许可以看到?ecdf
  • 不,我不想使用标准的内置函数 ecdf()。欢迎对我的函数提出建议(最好是添加到 plot() 函数中)。
  • v=c() 替换为v = 0,并将您的绘图调用更改为plot(0:max(x),v,type="l", .......)。对于流畅的线条,您将不得不做一些额外的工作。以?loess 为例。
  • 我查看了 loes() 和 lowess() 但似乎平滑效果很小。我认为这是由于我的数据。你认为有可能创造出漂亮的平滑曲线吗?

标签: r plot


【解决方案1】:

试试下面的样条插值器:

plot(spline(c(0, v)), type = "l")

【讨论】:

  • 非常感谢,就这样!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-20
  • 2017-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多