2017-03-04 9 views
0

Ich bin ein Anfänger in R und begann mit Grafiken vor kurzem.Glatte Kurve durch Punkte und beinhalten den Ursprung in R

Ich habe eine Arbeits empirische kumulative Verteilungsfunktion programmieren verwaltet (Benutzer-generierte, nicht den Standard ECDF() -Funktion) und einen Plot zu erzeugen. Allerdings ist die Handlung nicht so, wie es sein sollte, es gibt zwei Probleme damit und ich bin mir nicht sicher, wie ich sie lösen soll (ich habe meine "Forschung" gemacht, aber ich habe keine Lösung gefunden).

Dies ist mein Code:

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) 

Es gibt zwei Probleme mit diesem Grundstück:

  1. Die Linien sind gerade, aber es sollte eine glatte Kurve durch alle Punkte sein.

  2. Der Ursprung ist nicht enthalten (jetzt beginnt die Kurve bei x = 1).

Wie können diese Probleme elegant gelöst werden?

+0

Vielleicht 'ecdf' sehen? – Axeman

+0

Nein, ich möchte nicht die integrierte Standardfunktion ecdf() verwenden. Vorschläge zu meiner Funktion (vorzugsweise Ergänzungen zur Funktion plot()) sind willkommen. – Anna

+0

Ersetzen Sie 'v = c()' durch 'v = 0', und ändern Sie Ihren Plotaufruf in' plot (0: max (x), v, type = "l", .......) '. Für so reibungslose Linie müssen Sie etwas mehr Arbeit leisten. Schauen Sie sich zum Beispiel 'Löss' an. – Axeman

Antwort

0

Versuchen Sie, die folgenden Splineinterpolator:

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

Vielen Dank, das war's! – Anna

Verwandte Themen