2016-07-19 10 views
0

Ich baue ein Regressionsmodell mit mehreren Datums- und numerischen Variablen. Ich überprüfe kurz eine der DatumsvariablenVorhersagekraft der Datumvariablen reduziert sich, wenn von as.Datum zu as.numeric geändert wird

lm.fit = lm(label ~ Firstday, data = rawdata) 
    summary(lm.fit)$r.squared 

, um ihren prädiktiven Einfluss auf das Modell zu messen. Dies entspricht 41% der Varianz. Ich habe nun versucht, das Datum in numerisch zu ändern, damit ich besser mit der Variablen arbeiten kann. Ich habe den Befehl

Doing dies reduziert die Varianz zu 10% - was ist nicht das, was ich will. Was mache ich falsch und wie gehe ich vor?

Ich habe mir https://stats.stackexchange.com/questions/65900/does-it-make-sense-to-use-a-date-variable-in-a-regression angesehen, aber die Antwort ist mir nicht klar.

Edit 1:

Ein reproduzierbares Codebeispiel von dem, was ich tat, ist unten gezeigt:

label = c(0,1,0,0,0,1,1) 
Firstday = c("2016-04-06", "2016-04-05", "2016-04-04", 
    "2016-04-03", "2016-04-02", "2016-04-02","2016-04-01") 
lm.fit <- lm(label ~ Firstday) 
summary(lm.fit)$r.squared 

[1] 0.7083333 

On numerischer Wechsel:

Firstday = as.numeric(as.POSIXct(Firstday, format="%Y-%m-%d")) 

ich jetzt

lm.fit <- lm(label ~ Firstday) 
summary(lm.fit)$r.squared 

[1] 0.1035539 
+0

Können Sie bitte Daten und/oder Code enthalten, der uns mit einem [reproduzierbaren Beispiel] liefert (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r- reproduzierbares Beispiel)? –

Antwort

3

Es ist wegen Ihrer Herkunft Eine Liste von Daten ist eigentlich nur eine Liste von Daten, ohne Datumsangaben.

Siehe unten, wie ich sie in beliebige Buchstaben ändern, um das gleiche Ergebnis zu erhalten. Das dritte Code-Snippet gibt dasselbe r2 wie das erste Code-Snippet zurück.

label <- c(0,1,0,0,0,1,1) 
Firstday1<- c("2016-04-06","2016-04-05","2016-04-04","2016-04-03","2016-04-02","2016-04-02","2016-04-01") 
str(Firstday1) 
lm.fit1 <- lm(label~Firstday1) 
summary(lm.fit1)$r.squared 
[1] 0.7083333 


Firstday2 <- as.numeric(as.POSIXct(Firstday1,format="%Y-%m-%d")) 
str(Firstday2) 
lm.fit2 <- lm(label ~ Firstday2) 
summary(lm.fit2)$r.squared 
[1] 0.1035539 


Firstday3<- c("a","b","c","d","e","e","f") 
str(Firstday3) 
lm.fit3 <- lm(label~Firstday3) 
summary(lm.fit3)$r.squared 
[1] 0.7083333 
+0

Sehr wahr! Wenn ich Sie richtig verstehe, ist es eher ein Mustererkennungsergebnis als ein datumsbezogenes Ergebnis. Wenn dies der Fall ist, wie konvertiere ich die Liste der "Datum" -Einträge in ein numerisches Format, das immer noch das ursprüngliche Muster einnimmt? – user1783739

+0

Es klingt wie, was Sie möglicherweise nach Zeitreihenanalyse ist. – ddunn801