【问题标题】:Prediction with nls, always return prediction values of train data set使用 nls 进行预测,总是返回训练数据集的预测值
【发布时间】:2018-11-07 11:52:07
【问题描述】:

我有 4 个训练集点,我使用“nls”来拟合训练集,然后预测包含 2 个点的测试集的响应。但是,“预测”命令总是返回训练集的值。

The code is attached below:

##Following is train set
HD = c(714,715,716.6,717.6)
p_l = c(0.5,0.1,0.05826374, 0.005982334)
##Fitting with nls
raw_data = data.frame(HD,p_l)
exp_fit = nls(p_l~exp(a+b*HD),data = raw_data,trace = T,start = list(a = 0,b 
= 0))
##Following is test set
HD_test = c(718.2,719.17)
p_l_test = predict(exp_fit,newdata = HD_test)

【问题讨论】:

    标签: r regression prediction nls


    【解决方案1】:

    您需要将数据框或命名列表作为newdata 传递。

    使用与原始预测器相同的名称 (HD)。否则,newdata 将被视为缺失,并返回来自原始训练数据的拟合值。

    来自nls docs

    新数据
    一个命名列表或数据框,在其中查找用于预测的变量。如果 newdata 缺失,则返回原始数据点处的拟合值。

    HD_test = data.frame(HD = c(718.2,719.17)) # wrap in data frame, name "HD"
    p_l_test = predict(exp_fit, newdata = HD_test)
    
    p_l_test
    [1] 0.0009320202 0.0002184518
    

    【讨论】:

      猜你喜欢
      • 2021-11-22
      • 2014-08-02
      • 1970-01-01
      • 2018-07-29
      • 1970-01-01
      • 2017-01-15
      • 1970-01-01
      • 1970-01-01
      • 2017-11-06
      相关资源
      最近更新 更多