2014-06-14 5 views
0

Мой набор данных состоит из 60 наблюдений в трех переменных, x1 и x2, которые являются моими предикторами, и y, который является моим ответом. Проблема в том, что последние 20 наблюдений в y отсутствуют, поэтому я установил модель линейной регрессии, которую я назвал fit, на первые 40 наблюдений, и теперь я пытаюсь использовать функцию predict для генерации отсутствующих значений.Функция предсказания возвращает больше значений, чем требуется

Код для регрессии я использовал это

< подходит -lm (Y1A ~ x1a + X2A)

где Y1A, x1a и X относятся к первым 40 наблюдениям.

код я использую для заполнения остальных значений:

x <- data.frame(data$x1[41:60], data$x2[41:60]) 

predict(fit,x,interval="prediction",level=0.95) 

Но теперь проблема в том, что я получаю 40 новых значений y вместо требуемого 20, вместе с предупреждающим сообщением:

«NewData» было 20 строк, но переменные, найденные у 40 строк

Не могли бы вы сказать мне, что я делаю ж Ронг?

ответ

1

Имена столбцов фрейма данных, отправленного в predict, должны соответствовать именам столбцов фрейма данных, используемым для создания модели. Если вы создадите x, как показано выше, имена не будут одинаковыми, а вместо predict будут использованы исходные данные (кадр, который вы вызываете data).

Попробуйте вместо

fit <- lm(y ~ ., data[1:40,]) 
predict(fit, data[41:60,]) 
+0

Я включил код, который вы запрашиваемую в моем вопросе. – JohnK

+0

Это работает, спасибо. – JohnK

+0

Спасибо! Это очень распространенная проблема, на которую много раз отвечали SO. К сожалению, люди обычно подходят к нему под разными углами и не понимают, что это одна и та же фундаментальная проблема. Сначала я тоже очень смущался. – Backlin

Смежные вопросы