我最近安装了一个glm模型。我目前正在尝试更改其中一个参数(例如拦截,同时保持其他参数不变),以查看它如何影响预测。我想到了两种方法,我都失败了:
手动更改glm模型(我无法做到) 要么 自己编写一个函数并将其作为一个glm类
我想使用我的"用户定义的"使用predict.glm()的模型来看看它如何影响预测。 下面给出了一个类似于我的模型的例子:
> fit <- glm(formula = am ~ wt+cyl , family = binomial, data = mtcars)
> fit
Call: glm(formula = am ~ wt + cyl, family = binomial, data = mtcars)
Coefficients:
(Intercept) wt cyl
15.749 -7.864 1.322
Degrees of Freedom: 31 Total (i.e. Null); 29 Residual
Null Deviance: 43.23
Residual Deviance: 14.73 AIC: 20.73
有没有办法可以编辑#34; fit&#34;手动建模并将其用作glm预测? 我不是核心统计学家,所以我希望这一切都有道理。 谢谢
答案 0 :(得分:2)
您只需手动更改fit
中的系数,然后使用predict
功能。
# Fit the model:
fit <- glm(formula = am ~ wt+cyl , family = binomial, data = mtcars)
# Look at the first few predictions:
head(predict(fit, mtcars))
Mazda RX4 Mazda RX4 Wag Datsun 710 Hornet 4 Drive
3.0761275 1.0708076 2.7918672 -1.6029523
Hornet Sportabout Valiant
-0.7288921 -3.5296322
# Change the intercept to 10 for example:
fit$coefficients[1] <- 10
# Look at the first few predictions again (notice they are different):
print(head(predict(fit, mtcars)))
head(predict(fit, mtcars))
Mazda RX4 Mazda RX4 Wag Datsun 710 Hornet 4 Drive
-2.673299 -4.678619 -2.957559 -7.352378
Hornet Sportabout Valiant
-6.478318 -9.279058
答案 1 :(得分:2)
当你使用glm函数时,你正在创建一个“glm”类的实例并命名为“fit”。
> fit <- glm(formula = am ~ wt+cyl , family = binomial, data = mtcars)
> class(fit)
[1] "glm" "lm"
如果要访问该实例的任何参数,可以使用名称末尾的“$”符号来访问许多不同的参数。 “系数”只是glm类的许多参数之一。
> fit$coefficients
(Intercept) wt cyl
15.74943 -7.86400 1.32173
如果要访问和更改任何参数,可以使用赋值“&lt; - ”符号为参数指定新值。
> fit$coefficients[1]
(Intercept)
15.74943
> fit$coefficients[1]<-15.75
> fit$coefficients
(Intercept) wt cyl
15.75000 -7.86400 1.32173
如果要使用调整后的glm函数预测值,则可以在新拟合上使用相同的预测函数。
统计上,在生成模型的同时计算AIC和残差等精度度量。手动编辑这样的函数意味着所有这些值都不会更新且不准确。