почему некоторые уровни факторов исчезли в ходе модели регрессии - PullRequest
0 голосов
/ 23 октября 2019

Я хочу сделать некоторые прогнозы, используя регрессионный анализ.

После подгонки модели с помощью функции '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"

Итак, вот вопрос, чтобы все уровни остались в модели и получить прогноз без ошибок, что мне делать?

Спасибо за вашу помощь заранее. С уважением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...