2017-05-09 6 views
0

Ich habe den folgenden Vektor:Wie ein Vektor basierend auf lognormal Parameter konstruieren

foo <- c(1.376, 1.132, 0.828, 0.88, 1.124, 0.955, 1.292, 0.995, 1.207, 
1.076, 1.085, 1.061, 0.918, 1.097, 1.505, 1.141, 1.001, 0.927, 
1.339, 1.07, 1.332, 0.951, 0.969, 0.904, 0.89, 0.942, 1.141, 
0.798, 0.856, 0.819, 1.055, 1.262, 0.919, 1.024, 1.034, 1.088, 
1.183, 1.214, 1.159, 0.952, 0.912, 0.812, 0.985, 1.097, 0.948, 
1.168, 1.052, 0.922, 1.06, 0.741, 0.797, 0.952, 1.024, 1.858, 
1.073, 1.107, 0.853, 0.931, 0.732, 1.218, 1.09, 1.177, 0.931, 
1.105, 1.115, 1.221, 0.948, 1.146, 1.201, 1.16, 0.542, 1.067, 
1.056, 1.013, 0.986, 0.971, 1.125, 1.127, 0.971, 1.167, 1.148, 
1.074, 1.089, 1.001, 0.715, 0.945, 1.319, 1.15, 0.861, 0.733, 
0.783, 0.704, 1.176, 0.766, 1.466, 0.88, 0.873, 1.906, 1.584, 
1.076) 

Und ich kann den folgenden Parameter erhalten:

> broom::tidy(MASS::fitdistr(foo,"lognormal")) 
    term estimate std.error 
1 meanlog 0.03062806 0.01947609 
2 sdlog 0.19476092 0.01377168 

Meine Frage ist, wie kann ich den neuen Vektor erstellen (Nennen wir es bar) der gleichen Länge wie foo mit dem obigen Parameter?

Ich habe versucht, diese (wahrscheinlich falsch):

> rnorm(foo,mean=log(0.03062806), sd=log(0.19476092)) 
    [1] NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
[39] NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
[77] NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
+2

Ich verstehe nicht. Was willst du im Vektor 'bar'? – MrFlick

+0

@MrFlick 'bar' ist nur ein Platzhalter eines neuen gewünschten Vektors. Siehe auch mein Update. – neversaint

Antwort

0

Ich glaube, Sie, so etwas zu tun:

rnorm(foo,mean=0.03062806,sd=0.01947609) 

Das Problem ist, dass Sie log Funktion innerhalb der Parameter verwenden rnorm.

Mathematisch, wenn Sie sehen das Protokoll (0,01947609) ist eine negative Menge (-3,938568) für sie die in der Dokumentation angegeben wird, es wäre eine NaN für Fälle geben, wo < sd 0 und würden ein NaN Rückkehr ich gegeben habe, unter der Referenz.

Aus der Dokumentation von ?rnorm:

Die numerische Argumente anders als n sind mit der Länge des Ergebnis zurückgeführt. Nur die ersten Elemente der logischen Argumente werden verwendet.

und

Für sd = 0 diese die Grenze gibt, wie sd auf 0 abnimmt, eine Punktmasse bei mu. sd < 0 ist ein Fehler und gibt NaN zurück.

Probe des Ausgangs Befehl:

> rnorm(foo,mean=0.03062806,sd=0.01947609) 
    [1] 0.032124378 0.042014230 0.045366499 -0.001474950 
    [5] 0.061332938 0.008669682 0.019695857 0.042559250 
    [9] 0.041862975 -0.010617882 0.067133856 0.016494814 
Verwandte Themen