【问题标题】:Multiple regression predicting using R, predicting a data.frame使用 R 进行多元回归预测,预测 data.frame
【发布时间】:2015-07-11 12:38:39
【问题描述】:

我在名为 petrol 的 data.frame 中获得了数据,它有 125 行和以下列:
hydrcarb、tanktemp、disptemp、tankpres、disppres、@ 987654327@, sqrdisppres

我被要求从 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 的预测值。

【问题讨论】:

  • predict 的第一个参数是模型,在本例中为 petrol.lmB。看看?predict。

标签: r dataframe regression lm predict


【解决方案1】:

Alex A. 已经指出 predict 需要一个模型作为第一个参数。除此之外,您应该一次传递您想要预测的所有行 predict。此外,我建议您“即时”对数据框进行子集化,而不是创建不必要的副本。最后,还有一种更短的方式来编写传递给 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,])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-20
    • 2018-10-19
    • 1970-01-01
    • 2015-10-13
    • 1970-01-01
    • 1970-01-01
    • 2017-04-15
    • 1970-01-01
    相关资源
    最近更新 更多