将 predict.glm 与用户定义的函数一起使用

Using predict.glm with a user defined function

我最近装了一个glm模型。我目前正在尝试更改其中一个参数(例如截距,同时保持其他参数不变)以查看它如何影响预测。我想到了两种方法,但都失败了:

手动更改 glm 模型(我做不到) 要么 自己编写一个函数并将其作为 glm class

我想将我的 "user-defined" 模型与 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

有没有办法手动编辑 "fit" 模型并将其作为 glm 用于预测? 我不是核心统计学家,所以我希望这一切都有意义。 谢谢

您可以手动更改 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    

当您使用 glm 函数时,您正在创建 "glm" class 的实例并将其命名为 "fit"。

> fit <- glm(formula = am ~ wt+cyl , family = binomial, data = mtcars)
> class(fit)
[1] "glm" "lm"

如果您想访问该实例的任何参数,您可以在名称末尾使用“$”符号来访问许多不同的参数。 "coefficients" 只是 glm class.

的众多参数之一
> fit$coefficients
(Intercept)          wt         cyl 
   15.74943    -7.86400     1.32173 

如果要访问和更改任何参数,可以使用赋值“<-”符号为参数赋新值。

> fit$coefficients[1]
(Intercept) 
   15.74943 
> fit$coefficients[1]<-15.75
> fit$coefficients
(Intercept)          wt         cyl 
   15.75000    -7.86400     1.32173

如果您想使用调整后的 glm 函数来预测一个值,那么您可以在新拟合上使用相同的预测函数。

从统计学上讲,AIC 和残差等准确度度量是在生成模型的同时计算的。像这样手动编辑函数意味着所有这些值都没有更新并且不准确。