2016-12-03 2 views
-1

Dataset Я пытаюсь предсказать задержки авиакомпании, и я испытываю трудности, когда я предсказываю значения моих тестовых данных. Выход выходит в бесконечный цикл, и я не могу понять, почему. Ниже приведен воспроизводимый код.Сложность с использованием прогноза()

arrdelaymodel <- lm(ArrDelay ~ DepDelay + Distance + Distance*AirTime + HDAYS +DepTime*DepDelay) 
summary(arrdelaymodel) 

what.are.my.chances <- function(DepDelay, Distance, AirTime, DepTime, HDAYS){ 
new.values <- data.frame("DepDelay" = testing_data$DepDelay, "Distance" = testing_data$Distance, "AirTime"= 
         testing_data$AirTime, "DepTime"= testing_data$DepTime, "HDAYS"=testing_data$HDAYS) 
output <- predict(arrdelaymodel, newdata = new.values) 
return(output) 
} 

what.are.my.chances(DepDelay = 10, Distance = 200, AirTime = 100, DepTime = 1700, HDAYS= 7) 
+1

Ваша функция не использует свои параметры. Кроме того, не используйте 'attach'; используйте параметр 'data'' lm'. – alistaire

ответ

2

Я думаю, что проблема в том, что вы ошибаетесь с подмножеством данных. Например. вы вызываете функцию с помощью DepDelay' = 10. Таким образом, функция затем пытается сделать следующее: testing_data$10.

Простое удаление 'testing_data $' часть должна решить проблему, т.е .:

new.values <- data.frame("DepDelay" = DepDelay, ..)

Удачи!

+0

Как он узнает, что он должен проверить данные теста? Модель запускается на основе данных обучения. Я просто скажу ниже? new.values ​​<- data.frame ("DepDelay" = Depdelay, .... data = testing_data) – Anu

+0

Или просто присоедините (testing_data) непосредственно перед предсказанием? – Anu

+0

Я предполагаю, что значения, которые вы предоставляете аргументам функции, являются значениями из testdata? Если у вас есть/создайте фреймворк данных, содержащий тестовые данные, вы можете сделать следующее: 'what.are.my.chances <- function (testdata) { new.values ​​<- data.frame (" DepDelay "= testdata [, «DepDelay»], «Distance» = testdata [, «Distance»], «AirTime» = testdata [, «AirTime»], «DepTime» = testdata [, «DepTime»], «HDAYS» = testdata [, 'HDAYS ']) выход <- предсказать (arrdelaymodel, newdata = new.values) return (output) } – PaulH

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