Ich versuche, einen vorhandenen Vorhersagealgorithmus zu reproduzieren, der von einem pensionierten Forscher überliefert wurde. Der erste Schritt besteht darin, einige beobachtete Daten an eine Weibull-Verteilung anzupassen, um eine Form und einen Maßstab zu erhalten, die zur Vorhersage zukünftiger Werte verwendet werden. Ich benutze R, um dies zu tun. Hier ist ein Beispiel für meinen Code:
x<-c(23,19,37,38,40,36,172,48,113,90,54,104,90,54,157,51,77,78,144,34,29,45,16,15,37,218,170,44,121)
f<-fitdistr(x, 'weibull')
Dies funktioniert einwandfrei, es sei denn, das Eingabearray enthält Nullen, wodurch ein vollständiger Fehler auftritt. Dasselbe passiert in SAS. Ich verstehe das, weil einer der Schritte bei der Berechnung der Weibull-Verteilung das natürliche Protokoll ist, das für 0 undefiniert ist. Gibt es eine vernünftige Möglichkeit, dies zu umgehen?
Das Beste, was ich bisher gefunden habe, ist, zu allen meinen Eingabewerten 1 hinzuzufügen, die Kurve anzupassen und dann einen von meinen vorhergesagten Werten zu subtrahieren (die Kurve um 1 nach oben und dann wieder nach unten "verschieben"). Dies passt ziemlich gut zu den vorhergesagten Daten, scheint aber ein falscher Weg zu sein.
Bearbeiten: Die Werte im Eingabearray werden für einen Zeitraum von Jahren als reale Daten (die Anzahl der Vorkommen von etwas) betrachtet. So war in einigen Jahren die Anzahl der Vorkommen Null. Ob es nun der beste Weg ist oder nicht (ich stimme dem zu), der ursprüngliche Algorithmusautor behauptet, die Weibull-Distribution verwendet zu haben, und ich muss versuchen, ihren Prozess zu replizieren.