Получить тестовую ошибку в модели логистической регрессии в R

Я провожу несколько экспериментов с логистической регрессией в R с набором данных Auto, включенным в R.

У меня есть обучающая часть (80%) и тестовая часть (20%), нормализующая каждую часть по отдельности.

Я могу создать модель без проблем со строкой:

mlr<-glm(mpg ~ 
displacement + horsepower + weight, data =train)

Я даже могу предсказать train$mpg с набором поездов:

trainpred<-predict(mlr,train,type="response")

И с этим вычислить ошибку выборки:

etab <- table(trainpred, train[,1])
insampleerror<-sum(diag(etab))/sum(etab)

Проблема возникает, когда я хочу предсказать с помощью набора тестов. Я использую следующую строку:

testpred<-predict(model_rl,test,type="response")

Что дает мне это предупреждение:

'newdata' было 79 строк, но найденные переменные имеют 313 строк

но это не работает, потому что testpred имеют ту же длину, что и trainpred (должно быть меньше). Когда я хочу рассчитать ошибку в тесте, используя testpred со следующей строкой:

etabtest <- table(testpred, test[,1])

Я получаю следующую ошибку:

Ошибка в таблице (testpred, test[, 1]):
все аргументы должны иметь одинаковую длину

Что я делаю неправильно?


person Carlos    schedule 19.05.2016    source источник
comment
Одна вещь, которая, вероятно, не будет иметь значения: измените регрессию на mlr<-glm(mpg ~ displacement + horsepower + weight, data =train). Вам не нужен train$, если вы указали аргумент данных. Что еще более важно, вы можете проверить, создает ли это логистическую регрессию. Я думаю, что это на самом деле OLS. Вы должны установить ссылку и семейные аргументы. На SO есть много примеров.   -  person lmo    schedule 19.05.2016


Ответы (2)


Я отвечаю на свой вопрос, если у кого-то такая же проблема:

Когда я помещаю аргументы в glm, я говорю то, что хочу предсказать, это метки Auto$mpg с данными train, следовательно, мой вызов glm должен быть:

attach(Auto)
mlr<-glm(mpg ~ 
displacement + horsepower + weight, data=Auto, subset=indexes_train)

Если сейчас я назову predict, table и т. д., проблем с размерами структур не возникнет. Изменение этой ошибки работает для меня.

person Carlos    schedule 20.05.2016

Как говорит imo: «Что еще более важно, вы можете проверить, создает ли это логистическую регрессию. Я думаю, что это на самом деле OLS. Вы должны установить ссылку и семейные аргументы».

установить семейство = 'биномиальное'

person srutis    schedule 05.11.2018