gpt4 book ai didi

r - lm 和 predict - data.frame 名称的一致性

转载 作者:行者123 更新时间:2023-12-01 02:20:56 25 4
gpt4 key购买 nike

在 R 中工作以开发回归模型,我有类似的东西:

c_lm = lm(trainingset$dependent ~ trainingset$independent)
c_pred = predict(c_lm,testset$independent))

每次,我都会从 R 收到一个神秘的错误:
Warning message:
'newdata' had 34 rows but variables found have 142 rows

这基本上转化为 R 无法找到测试集 data.frame 的独立列。这仅仅是因为 lm 中公式右侧的确切名称必须在 predict 中。要修复它,我可以这样做:
tempset = trainingset
c_lm = lm(trainingset$dependent ~ tempset$independent)

tempset = testset
c_pred = predict(c_lm,tempset$independent))

或一些类似的变化,但在我看来,这真的很草率。

是否有另一种方法来清理两者之间的转换,以便自变量的数据框在预测中不必与在 lm 中具有完全相同的名称?

最佳答案

不,不,不,不,不,不,不!如果您想要模型公式附带的所有其他糖,请不要以您正在做的方式使用公式界面。你写了:

c_lm = lm(trainingset$dependent ~ trainingset$independent)

你重复 trainingset两次,这是浪费手指/时间,多余的,尤其是导致您遇到的问题。当您现在调用 predict ,它将在 testset 中寻找一个变量名称为 trainingset$independent ,当然不存在。相反,请使用 data您对 lm() 的调用中的参数.例如,这适合与您的公式相同的模型,但效率很高,并且也适用于 predict()
c_lm = lm(dependent ~ independent, data = trainingset)

现在当您调用 predict(c_lm, newdata = testset) ,您只需要一个带有名称为 independent 的变量的数据框(或模型公式中的任何内容)。

正如我所展示的那样,编写公式的另一个原因是易读性。从公式中获取对象名称可以让您更轻松地查看模型是什么。

关于r - lm 和 predict - data.frame 名称的一致性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20623935/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com