2017-04-18 11 views
0

私は2000年から2011年の期間のデータと2012年から2016年の期間のテストセットを持っています。私はトレーニングセット(2000年から2011年までの期間)の固定効果を持つロジットモデルを実行し、テストセットの予測値を使用したいと考えています。テストセットに固定された効果を使用する

トレーニングセットで使用されているモデルがまったく別の年(2000年から2011年)で使用されているため、テストセット(2012年~2016年)の固定効果を追加するのに問題があります。

どのようにこの違いを調整できますか?ここに私が直面している問題があります。何か案が?

model.2 <- glm(MAKE ~ NAME + DIST + DIST2 + DIST3 + SEASON + 
      GRASS + COLD49 + WINDY + ALTITUDE + PRECIP -1, 
      family = "binomial"(link = logit), data = df.train) 

テストセットモデル:モデル

トレーニングセット

df.test$model.2.predictions <- predict(model.2, newdata = df.test, 
            type = "response") 

Error in model.frame.default(Terms, newdata, na.action = na.action, xlev = object$xlevels) : 
factor SEASON has new levels 2012, 2013, 2014, 2015, 2016 
+0

シーズン(年をレベルとして)を使用すると、各レベルの具体的な効果を自分のレスポンスに見ようとしていますか?そのような影響は因子レベルに特化しているため(例えば、年Aは年Bと比較して確率がx増加する)、訓練に含まれていない年の影響をモデルがどのように予測すると思いますか? - 私は本当に興味があります。すべての年を含むトレーニングセットを持つことは可能でしょうか? – din

+0

それは本当です。その季節の固定効果の係数はその特定の季節に推定され、これらの係数に新しい季節のダミー変数(2012年〜2016年)を掛けても意味がありません。私は2012 - 2016年の季節の係数の新しい見積もりを考え出す必要があります。 私はすべての年を含むトレーニングセットを構築することはできません。 – josehernandez

+0

年変数をそのままにするか、トレンドを想定している場合は数値としてモデル化します。 –

答えて

0

エラーが列車セットにappeares決してテストセット中のレベルがあることを述べています。 予測を実行してモデルをトレーニングする前にmodel.2$xlevels$SEASON <- union(model.2$xlevels$SEASON, levels(df.test$SEASON))を試してください。

+0

あなたのお勧めを試みましたが、同じエラーメッセージが表示されます。理由は何ですか?ありがとう。 – josehernandez

関連する問題