Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R-黑箱范式中lm对象的预测_R - Fatal编程技术网

R-黑箱范式中lm对象的预测

R-黑箱范式中lm对象的预测,r,R,我有一个返回lm对象的函数。我想根据一些新数据得出预测值。新数据是一个data.frame,其格式与传递给lm函数的数据完全相同,但响应已被删除(因为我们是预测,而不是训练)。我希望执行以下操作,但得到一个错误: predict( model , newdata ) "Error in eval(expr, envir, enclos) : object 'ModelResponse' not found" 在我的例子中,ModelResponse是我最初培训的数据中响应列的名称。因此,为了刺

我有一个返回lm对象的函数。我想根据一些新数据得出预测值。新数据是一个data.frame,其格式与传递给lm函数的数据完全相同,但响应已被删除(因为我们是预测,而不是训练)。我希望执行以下操作,但得到一个错误:

predict( model , newdata )
"Error in eval(expr, envir, enclos) : object 'ModelResponse' not found"
在我的例子中,ModelResponse是我最初培训的数据中响应列的名称。因此,为了刺激,我尝试插入NA响应:

newdata$ModelResponse = NA
predict( model , newdata )
Error in terms.default(object, data = data) : no terms component nor attribute
非常令人沮丧!R的模型/回归概念与我的不匹配:1。我用一些数据训练一个模型,得到一个模型对象。2.我可以对来自任何环境/函数/框架等的新数据进行评分。只要我将数据输入到模型对象中,“看起来”与我训练的数据(即相同的列名)。这是一个标准的黑盒范例

下面是我的问题:
1.我在这里遗漏了什么概念?
2.我如何让我的场景工作?
3.如何使模型对象可移植?str(model)告诉我模型对象保存了它训练过的原始数据!所以模型对象是巨大的。我希望我的模型能够移植到任何函数/环境等,并且只包含它需要评分的数据。

在模型或提供给模型的数据上没有str()的情况下,以下是我对此错误消息的猜测:

predict( model , newdata )
"Error in eval(expr, envir, enclos) : object 'ModelResponse' not found"
我猜您创建了一个名为“model”的模型对象,并且您的结果变量(公式的左侧)(在最初对lm的调用中被命名为“ModelResponse”,然后您在newdata中以相同的名称命名了一列。但是您应该做的是省略“ModelResponse”列(因为这就是您所预测的)并输入“Model_predictor 1”、“Model_predictor 2”等,即公式右侧的所有名称

函数的作用是:提取使模型可移植所需的信息

mod.coef <- coef(model)
mod.coef
(我从经验中了解到,来自rms的受限三次样条拟合函数需要添加空格和回车,以提高可读性。)

在模型或提供给模型的数据上都没有str()的情况下,以下是我对此错误消息的猜测:

predict( model , newdata )
"Error in eval(expr, envir, enclos) : object 'ModelResponse' not found"
我猜您创建了一个名为“model”的模型对象,并且您的结果变量(公式的左侧)(在最初对lm的调用中被命名为“ModelResponse”,然后您在newdata中以相同的名称命名了一列。但是您应该做的是省略“ModelResponse”列(因为这就是您所预测的)并输入“Model_predictor 1”、“Model_predictor 2”等,即公式右侧的所有名称

函数的作用是:提取使模型可移植所需的信息

mod.coef <- coef(model)
mod.coef

(我从经验中了解到,来自rms的受限三次样条拟合函数需要添加空格和回车,以提高可读性。)

从长远来看,您可能应该看看
caret
软件包。许多或大多数建模函数都使用数据帧和矩阵,其他函数也有自己的偏好,它们的期望可能会有其他变化。快速了解每种函数很重要,但是如果您想要一个简单的包装器,那么为你的生活做准备,把错综复杂的事情变成一个“黑匣子”,然后插入符号就离你越近越好


作为免责声明:我不使用
插入符号
,因为我认为建模不应该是一个黑匣子。我收到过几封电子邮件给建模包的维护者,他们查看了他们的代码,发现了一些错误。将其包装到另一层不会符合我的兴趣。因此,从长远来看,避免
插入符号
并开发一种分析不同建模功能的乐趣。:)

从长远来看,您可能应该看看
caret
软件包。许多或大多数建模函数都使用数据帧和矩阵,其他函数也有自己的偏好,它们的期望可能会有其他变化。快速了解每种函数很重要,但是如果您想要一个简单的包装器,那么为你的生活做准备,把错综复杂的事情变成一个“黑匣子”,然后插入符号就离你越近越好


作为免责声明:我不使用
插入符号
,因为我认为建模不应该是一个黑匣子。我收到过几封电子邮件给建模包的维护者,他们查看了他们的代码,发现了一些错误。将其包装到另一层不会符合我的兴趣。因此,从长远来看,避免
插入符号
并为剖析不同建模功能的进出创造一种乐趣。

这是一种“标准的黑箱范式”?你不会碰巧在攻读MBA吧?不会。我不会用“黑箱”来解释“我不知道里面发生了什么”(我知道lm在做什么).我的意思是用一些数据训练一个模型,然后用一些新的数据对模型进行评分,并使其变得简单。你能提供一些产生错误的样本数据吗?好的,你在胡说。你的代码有问题,因为R是“黑盒范式”按照您描述的方式工作(在
?predict.lm
中有一个例子)。您是直接使用
predict
,还是在包装器函数中使用它?一些代码和数据将有助于了解发生了什么,这是一个“标准黑盒范式”?您不会碰巧正在攻读MBA,是吗?不,我没有使用“黑盒”从某种意义上说,“我不知道里面发生了什么”(我知道lm在做什么)。我指的是用一些数据训练一个模型,然后能够给模型打分的范例