2017-03-04 5 views
0

私はRの初心者で、最近グラフィックスを始めました。点を通る曲線が滑らかで、Rの起点を含む

経験豊富な累積分布関数(ユーザ生成、標準ecdf()関数を使用しない)をプログラムし、プロットを生成することができました。しかし、プロットはそうではありません、それには2つの問題があり、私はそれらを解決する方法についてはわかりません(私は「研究」を行っていますが、解決策を見いだせませんでした)。

これは私のコードです:

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) 

このプロットには2つの問題があります。

  1. ラインが直線であるが、それはすべての点を滑らかな曲線でなければなりませんが。

  2. 原点は含まれていません(現在の曲線はx = 1から始まります)。

どのようにこれらの問題を洗練された方法で解決できますか?

+0

はおそらく 'ecdf'参照してください? – Axeman

+0

いいえ、私は標準の組み込み関数ecdf()を使いたくありません。私の関数への提案(できればplot()関数への追加)は大歓迎です。 – Anna

+0

'v = c()'を 'v = 0'に置き換え、プロットコールを' plot(0:max(x)、v、type = "l"、.......) 'に変更します。滑らかな線のためには、余分な作業をする必要があります。例えば ​​'' loess'を見てみましょう。 – Axeman

答えて

0

は、次のスプライン補間を試してみてください:?

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

ありがとうございました! – Anna

関連する問題