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

时间:2015-11-21 15:42:00

标签: r class glm predict

我最近安装了一个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预测? 我不是核心统计学家,所以我希望这一切都有道理。 谢谢

2 个答案:

答案 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和残差等精度度量。手动编辑这样的函数意味着所有这些值都不会更新且不准确。