首页 文章

使用R进行多元回归预测,预测data.frame

提问于
浏览
1

我在一个名为 petrol 的data.frame中获得了数据,该数据包含125行和以下列:
hydrcarbtanktempdisptemptankpresdisppressqrtankpressqrdisppres

我被要求删除 petrol 中的最后25行,适合模型,其中 hydrcarb 是响应变量,其余是解释变量,并且对前100行执行此操作 . 然后使用拟合模型预测剩余的25个 .

这是我到目前为止所做的:

#make a new table that only contains first 100 
petrold <- petrol[-101:-125,]
petrold

#FITTING THE MODEL
petrol.lmB <- lm(hydrcarb~ tanktemp + disptemp + tankpres + disppres + sqrtankpres + sqrdisppres, data=petrol)

#SELECT LAST 25 ROWS FROM PETROL
last25rows <-petrol[101:125,c('tanktemp','disptemp','tankpres','disppres','sqrtankpres','sqrdisppres')]


#PREDICT LAST 25 ROWS
predict(petrold,last25rows[101,c('tanktemp','disptemp','tankpres','disppres','sqrtankpres','sqrdisppres')])

我知道我为 predict 命令做错了,因为R给了我错误信息:

Error in UseMethod("predict") : 
  no applicable method for 'predict' applied to an object of class "data.frame"

所以我不知道如何获得25个不同数据集的 hydrcarb 的预测值 .

1 回答

  • 0

    Alex A.已经指出 predict 期望一个模型作为第一个参数 . 除此之外,您应该立即传递 predict 您想要预测的所有行 . 此外,我建议您对数据框"on-the-fly"进行子集化,而不是创建不必要的副本 . 最后,有一个更短的方法来编写传递给 lm 的fromula:

    # data for example
    data(Seatbelts)
    petrol <- as.data.frame(Seatbelts[1:125, 1:7])
    colnames(petrol) <- c("hydrcarb", "tanktemp", "disptemp", "tankpres", "disppres", "sqrtankpres", "sqrdisppres")
    
    # fit model using observations 1:100
    petrol.lmB <- lm(hydrcarb ~ ., data = petrol[1:100,])
    
    #predict last 25 rows
    predict(petrol.lmB, newdata = petrol[101:125,])
    

相关问题