2016-03-30 18 views
0

Ich bin ein wenig Forschung über abgeschnittene Verteilungen, insbesondere auf die Truncated Pareto-Verteilung. Dies hat eine bekannte Dichtefunktion und Wahrscheinlichkeitsfunktion, so dass man in der Lage ist, die Quantilfunktion und damit eine Funktion "Zufallszahlen generieren" zu entwerfen.Verteilungen und Dichten in R

Aber jetzt, da ich diese Funktionen habe, lassen Sie uns sagen, dass dtp(x,lower,upper,alpha) ist meine Dichte-Funktion, wie zeichne ich tatsächlich die Dichte? Ich weiß, dass es Befehle wie density() gibt, die Kernel-Schätzung verwenden, aber sollte man in der Lage sein, die Dichtefunktion mit Hilfe der Dichtefunktion selbst und mit Zufallszahlen nach dieser Verteilung zu plotten?

+0

Vielleicht wie 'Kurve (dtp (x, untere, obere, Alpha))'. Wenn ja, dann können wir Ihre Frage als ein Betrogen gegen diese schließen: http://StackOverflow.com/q/26091323 – Frank

+0

@Frank, ich werde es sofort überprüfen! – Riley

+1

Guter Fund auf dem Betrogenen. Nichts Besonderes beim Plotten von * Dichte * Funktionen. – Gregor

Antwort

1

Die Standardmethode zum Plotten ist x Werte und y Werte, und dann plotten sie. Sie haben eine Funktion, die x-Werte auf y-Wert konvertiert, was bedeutet, dass alles, was Sie tun müssen, x Werte auswählen, um sie zu Ihrer Funktion plotten und geben, so etwas wie:

x = seq(0, 10, length.out = 100) 
y = dtp(x = x) 
plot(x, y, type = "l") 

Bitte beachten, dass ich keine Ahnung habe, ob dies ist eine vernünftige Domain für Ihre Dichte, wenn Sie für lower geeignete Standardwerte haben, upper, alpha oder wenn Sie sie angeben, usw.

einige Funktionen wie curve für Grundstück Alternativ nur eine Funktion übernehmen und ein Domäne können Sie zusätzliche Argumente übergeben.

curve(dtp, from = 0, to = 10, n = 101) 
curve(dtp, from = 0, to = 10, n = 101, alpha = 0.2) # specifying alpha 

Wenn Sie ggplot bevorzugen, dann ist stat_function die Funktion für Sie.

library(ggplot2) 
ggplot(data.frame(x = c(0, 10), aes(x = x)) + 
    stat_function(fun = dtp) 

ggplot(data.frame(x = c(0, 10), aes(x = x)) + 
    stat_function(fun = dtp, args = list(alpha = 0.2)) 
    # passing alpha to dtp via args