2016-07-19 3 views
0

私はいくつかの日付と数値変数を持つ回帰モデルを構築しています。私は、モデルへの予測影響を測定するために、日付変数の1つ日付変数の予測力がas.Dateからas.numericに変更されると減少します

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

にクイックチェックを実行します。これは分散の41%を占めた。私は今、日付を数値に変更しようとしましたので、変数でうまく動作するようになりました。私が欲しいものではありません - 私はこれが10%に分散を減少行うコマンド

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

を使用しました。私は間違って何をしているのですか?それについてどうすればいいですか?

私はhttps://stats.stackexchange.com/questions/65900/does-it-make-sense-to-use-a-date-variable-in-a-regressionを見ましたが、答えは私には分かりません。

編集1:

私がやったことの再現可能なコードサンプルを以下に示します。

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 

数値に変更するには:

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

私は今取得

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

[1] 0.1035539 
+0

あなたは[再現可能な例]をご提供しますデータおよび/またはコードを含めてくださいことができます(http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-再現可能な例)? –

答えて

3

あなたの起源日付のリストは実際には日付シーケンス情報のない単なるアイテムのリストです。

同じ結果を得るには、以下のように任意の文字に変更します。 3番目のコードスニペットは、最初のコードスニペットと同じr2を返します。

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

非常に真実!私があなたを正しく理解していれば、日付関連の結果よりもパターン認識の結果が多いです。その場合、「日付」アイテムのリストを元のパターンを取り込む数値フォーマットに変換するにはどうすればよいですか? – user1783739

+0

時系列解析の後にあるかもしれないように聞こえます。 – ddunn801

関連する問題