r - 使用 nls 进行预测,总是返回训练数据集的预测值
问题描述
我有 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)
解决方案
您需要将数据框或命名列表作为newdata
.
使用与原始预测器相同的名称 ( HD
)。否则,newdata
将被视为缺失,并返回来自原始训练数据的拟合值。
从nls 文档:
newdata
一个命名列表或数据框,在其中查找用于预测的变量。如果 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
推荐阅读
- css - 移动设备上纯导航菜单背景的 CSS 代码
- bash - 如何自动化 helm 包 -- 在 bash 中以非交互方式签名
- java - 正确使用 Java 接口
- javascript - 如何创建一个新的对象数组表单对象而不重复?(ES6)
- azure-active-directory - 使用委派权限和 Microsoft Graph 自动创建用户/驱动器
- go - 如何将传递参数的值记录到函数中?
- c# - 在 .NET 中创建一种方法来确定 PDF 上的 X、Y 位置以进行打印
- c# - 使用 Linq 选择 max 作为第二个条件
- django - Django 表单未按应有的方式保存或发送电子邮件
- r - ks.test 和 ties 的问题