2016-12-03 53 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';使用'lm'的'data'參數。 – 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 ']) output < - predict(arrdelaymodel,newdata = new.values) return(output) } – PaulH