2016-07-11 9 views
0

Ich habe versucht, das dist-Paket zu verwenden, um eine zufällige Variable zu erstellen, bei der die Start- und Stopp-Punkte einen Grad an Unsicherheit haben (gemessen innerhalb einer Sekunde), aber ich komme nicht um Warnung:Warnungen mit Verteilerpaket; "Grid für carfun zu breit"

1: In .discretizeP (e1, unteren, oberen, h):
Grid for approxfun zu breit, erhöht DefaultNrFFTGridPointsExponent

Manchmal die Fehler ersten Parameter e2 anstelle von e1.

Hier ist ein MWE meine Probleme zu zeigen:

require (distr) 
require (distrEx) 

distroptions("DefaultNrFFTGridPointsExponent" = 12) 
U <- Unif(Min = 0, Max = 1) 
t1 <- 2*U + 53 + 2*U 
t2 <- 1*U + 39 + 1*U 
t3 <- 1*U + 40 + 1*U  # Warning, e1 and e2 
t4 <- convpow(U,2) + 39 
t5 <- convpow(U,2) + 40 
t6 <- 2*U + 39 + 1*U  # Warning, e2 only 

distroptions("DefaultNrFFTGridPointsExponent" = 18) 
U <- Unif(Min = 0, Max = 1) 
t7 <- 1*U + 40 + 1*U  # Warning, e1 and e2 
t8 <- 2*U + 39 + 1*U  # Warning, e2 only 

Während die convpow besser zu funktionieren scheint, ist es nicht helfen, wenn ich wie in t8 an beiden Enden unterschiedliche Unsicherheiten haben. Die Änderung der Abweichungen scheint auch keine Wirkung zu haben.

Ich bin überrascht, dass die Verschiebung der Verteilung (40 statt 39 hinzufügen) eine solche Wirkung hat. Mache ich etwas falsch? Kann ich dies mit etwas wie Convpow oder durch Ändern einer anderen Option beheben? ODER muss ich "meine eigene" Approximation durchführen? Es scheint kein Problem mit den Distributionen zu geben, aber die Genauigkeit zu kennen ist sehr wichtig für dieses Projekt, auch wenn ich den erlaubten Fehler in irgendeiner Weise erhöhe.

Ich sollte hinzufügen, dass ich beabsichtige, mehr mit dem Ergebnis zu tun, wie zum Beispiel eine r.v. durch einen anderen r.v., der mein ist, entschied ich mich, Distr zu versuchen, anstatt mich zu integrieren.

Wahrscheinlich unnötiger Hintergrund

Ich habe nur die Programmierung ausgeschaltet worden und in R für ein paar Jahre. Ich versuche, das Verteiler Paket für die folgende Situation zu verwenden; Eine Anzahl von Versuchen wird zeitlich festgelegt, wobei sich ein Objekt mit einer bekannten Geschwindigkeit (die von Versuch zu Versuch variieren kann) über eine feste Distanz bewegt. Mehrere Versuche werden verwendet, um die Schätzung der Entfernung zu verbessern.

Die Zeit kann nicht genau gemessen werden. Aus Gründen der Argumentation hat der Timer 1s Genauigkeit. Das Objekt beginnt nicht zum Zeitpunkt 0, daher kann die Zeit am Anfang und am Ende um bis zu eine Sekunde variieren. Wenn das Objekt beispielsweise den Start bei etwa 10 Sekunden und dann das Ende bei 51 Sekunden durchläuft, könnte es irgendwo zwischen 40 und 42 Sekunden liegen.

Antwort

0

Während ich immer noch nicht weiß, warum U+40+U ist so viel schlimmer als U+39+U, habe ich herausgefunden, wie ich mein Problem beheben.

Die Faltung funktioniert viel besser als mit t4 und t5 vs t2 und t3 gesehen. Das Problem war dann, dass ich zwei verschiedene uniforme Verteilungen nicht falten konnte, da convpow nur mit einem einzigen Verteilungstyp funktioniert.

Der Schlüssel ist, dass der Operator + in distr überlastet ist, um dies zu nutzen. So neu zu ordnen, die Bedingungen (und die nutzlosen Koeffizienten fallen, obwohl ich denke, das ist überflüssig sein kann) erzeugt ein anderes Ergebnis:

U + 40 + U  # Generates warnings 
U + U + 40  # No warnings 

Es ist zwar nicht das seltsame Verhalten nicht erklären, zumindest ist es das Problem behebt.