使用predict.glm与用户自定义函数

3
我最近拟合了一个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

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

2个回答

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    

太棒了!感谢你的帮助 :) - Error404

2
当您使用glm函数时,您正在创建一个“glm”类的实例并将其命名为“fit”。
> fit <- glm(formula = am ~ wt+cyl , family = binomial, data = mtcars)
> class(fit)
[1] "glm" "lm"

如果您想访问实例的任何参数,您需要在名称末尾使用"$"标识符来访问许多不同的参数。 "coefficients"只是glm类的众多参数之一。
> 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和残差,在模型生成时同时被计算。手动编辑函数意味着所有这些值都没有更新,因此是不准确的。

感谢您提供详细的解释,特别是强调了关于未更新的准确性度量部分。 - Error404

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接