gpt4 book ai didi

r - 在插入符号中拟合无截距模型

转载 作者:行者123 更新时间:2023-12-03 22:34:59 25 4
gpt4 key购买 nike

在 R 中,我指定了一个没有截距的模型,如下所示:

data(iris)
lmFit <- lm(Sepal.Length ~ 0 + Petal.Length + Petal.Width, data=iris)
> round(coef(lmFit),2)
Petal.Length Petal.Width
2.86 -4.48

但是,如果我使用插入符号拟合相同的模型,则生成的模型将包含一个截距:
library(caret)
caret_lmFit <- train(Sepal.Length~0+Petal.Length+Petal.Width, data=iris, "lm")
> round(coef(caret_lmFit$finalModel),2)
(Intercept) Petal.Length Petal.Width
4.19 0.54 -0.32

我怎么告诉 caret::train排除拦截项?

最佳答案

@rcs 已经告诉您需要更改哪个函数中的哪一行。

只需使用 trace修改该函数:

trace(caret::createModel, 
quote(modFormula <- as.formula(".outcome ~ .-1")), at=5, print=FALSE)
caret_lmFit <- train(Sepal.Length~0+Petal.Length+Petal.Width, data=iris, "lm")
round(coef(caret_lmFit$finalModel),2)
#Petal.Length Petal.Width
# 2.86 -4.48
untrace(caret::createModel)

但是,我不使用插入符号。可能会有不可预见的后果。从模型中排除截距通常也不是一个好主意。

关于r - 在插入符号中拟合无截距模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12394855/

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