2016-11-07 4 views
2

Ich habe eine Zeitreihe von Niederschlagswerten in einer CSV-Datei. Ich zeichnete das Histogramm der Daten. Das Histogramm ist nach links geneigt. Ich wollte die Werte so transformieren, dass sie normal verteilt sind. Ich verwendete die Yeo-Johnson-Transformation, die in R verfügbar ist. Die transformierten Werte sind here.Schätzung Lambda für Yeo und Johnson-Transformation

Meine Frage ist:

In der obigen Transformation, habe ich einen Testwert von 0,5 für Lambda, der gut arbeitet. Gibt es einen Weg, um den optimalen Wert von Lambda basierend auf der Zeitreihe zu bestimmen? Ich werde alle Vorschläge zu schätzen wissen.

Bisher hier ist der Code:

library(car) 
dat <- scan("Zamboanga.csv") 
hist(dat) 
trans <- yjPower(dat,0.5,jacobian.adjusted=TRUE) 
hist(trans) 

Here is the csv file.

Antwort

2

Suchen Sie zuerst den optimalen Lambda mit der Funktion boxCox aus dem Fahrzeugpaket, um λ nach maximaler Wahrscheinlichkeit zu schätzen.

Sie können es so Grundstück:

boxCox(your_model, family="yjPower", plotit = TRUE) 

example from CV

Als Ben Bolker sagte in einem Kommentar, hier das Modell so etwas wie

your_model <- lm(dat~1) 

dann die optimierte Lambda verwenden könnte in Ihrem vorhandenen Code.

+1

Ich bin verwirrt, was für ein Modell (Objekt im Box-Cox-Befehl) für meine Daten gilt. Ab sofort passe ich kein Modell an die Daten an. – Lyndz

+2

Die offensichtlichste Sache wäre, ein triviales lineares Modell zu passen: 'your_model <- lm (dat ~ 1)'. –

+0

@Lyndz Ja, ich würde den Rat von Ben Bolker nehmen –