Я хочу сделать некоторые прогнозы, используя регрессионный анализ.
После подгонки модели с помощью функции 'lm', я пытаюсь сделать некоторый прогноз, используя функцию 'Предсказание'.
Но прогнозне появляется с этим сообщением
'Ошибка в model.frame.default (Условия, новые данные, na.action = na.action, xlev = object $ xlevels): фактор g2 имеет новый уровень28 и т. Д. '
и вот код, который я использовал.
testid2<-sample(1:length(h2),0.8*length(h2))
h2data<-data.frame(h2,e2,g2,i2,k2)
h2.train<-h2data[testid2,]
h2.test<-h2data[-testid2,]
str(h2data)
'data.frame': 1936 obs. of 5 variables:
$ h2: int 30 41 41 40 35 35 31 44 35 37 ...
$ e2: int 374 362 814 719 704 724 714 689 687 660 ...
$ g2: Factor w/ 76 levels "1","2","3","4",..: 6 7 26 27 28 36 40 41 42 43 ...
$ i2: num 0.913 0.666 0.946 0.971 0.935 0.977 0.838 0.972 0.985 0.996 ...
$ k2: int 50 36 172 187 170 173 166 145 157 157 ...
rreg2<-lm(log(h2+1)~e2+g2+i2+k2,data=h2.train)
pred2<-predict(rreg2,newdata=h2.test)
При поиске в Google я обнаружил, что эта ошибка происходит из-за того, что в моих тестовых данных есть несколько уровней g2, которых нет в подобранной модели.
Но в данных тренировки, которые я использовал для подбора модели, есть все необходимые уровни.
Я обнаружил, что некоторые уровни факторов исчезли по ходу подходящей модели.
уровней (h2.train $ g2)
[1] "1" "2" "3" "4" "25" "26" "27" "28" "29" "30" "31" "32" "33" "34" "35" "36" "37"
[18] "38" "39" "40" "41" "42" "43" "44" "45" "46" "47" "48" "49" "50" "51" "52" "53" "54"
[35] "55" "56" "57" "58" "59" "60" "61" "62" "63" "64" "65" "66" "67" "68" "69" "70" "71"
[52] "72" "73" "74" "75" "76" "77" "78" "79" "80" "81" "82" "83" "84" "85" "86" "87" "88"
[69] "89" "90" "91" "92" "93" "94" "95" "96"
уровней (h2.test $ g2)
[1] "1" "2" "3" "4" "25" "26" "27" "28" "29" "30" "31" "32" "33" "34" "35" "36" "37"
[18] "38" "39" "40" "41" "42" "43" "44" "45" "46" "47" "48" "49" "50" "51" "52" "53" "54"
[18] "38" "39" "40" "41" "42" "43" "44" "45" "46" "47" "48" "49" "50" "51" "52" "53" "54"
[35] "55" "56" "57" "58" "59" "60" "61" "62" "63" "64" "65" "66" "67" "68" "69" "70" "71"
[52] "72" "73" "74" "75" "76" "77" "78" "79" "80" "81" "82" "83" "84" "85" "86" "87" "88"
[69] "89" "90" "91" "92" "93" "94" "95" "96"
rreg2 $ xlevels $ g2
[1] "26" "27" "38" "40" "41" "42" "43" "44" "45" "46" "47" "49" "50" "56" "57" "58" "59"
[18] "61" "62" "63" "65" "66" "67" "68" "69" "70" "71" "72" "77" "84" "88" "91" "95"
Итак, вот вопрос, чтобы все уровни остались в модели и получить прогноз без ошибок, что мне делать?
Спасибо за вашу помощь заранее. С уважением.