2017-03-04 83 views
0

我是R中的初學者,最近從圖形開始。通過點的平滑曲線並將起點包含在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開始)。

這些問題如何以優雅的方式解決?

+0

也許看到'ecdf'? – Axeman

+0

不,我不想使用標準的內置函數ecdf()。對我的功能的建議(最好添加到plot()函數中)是值得歡迎的。 – Anna

+0

將'v = c()'替換爲'v = 0',並將您的圖表調用改爲'plot(0:max(x),v,type =「l」,.......)'。爲了流暢的線條,你必須做一些額外的工作。例如,看看「黃土」。 – Axeman

回答

0

試試下面的樣條插補:

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

非常感謝,就是這樣! – Anna