如何用偏移量解释 glm 和 ols

机器算法验证 回归 广义线性模型 最小二乘 解释 抵消
2022-04-04 11:14:32

我运行了一些带有偏移的 glm 和线性模型。数据集中的每一行都是医疗保健用户。数据包含 2000 年至 2007 年间每位用户的医疗费用和 icu 天数。由于用户与机构接触的年数不同(例如,有些人在 2001-2003 年来到医疗机构,而有些人在所有年份都来了),我认为我应该抵消“观察期”的年数。而且接触时间越长,支付和ICU天数越高,这是常识。

伽玛:

    Call:
    glm(formula = payment_amt ~ offset(log(years)) + 
        as.factor(gender) + age, 
        family = Gamma(link = "log"), data = pm, control = glm.control(maxit = 50))
    
    Deviance Residuals: 
        Min       1Q   Median       3Q      Max  
    -3.8787  -1.2142  -0.5339   0.1904  15.1442  
    
    Coefficients:
                                       Estimate Std. Error z value Pr(>|z|)    
    (Intercept)                       4.6718536  0.0134132   348.3   <2e-16 ***
    as.factor(gender)M 0.7800695  0.0024625   316.8   <2e-16 ***
    age           0.0642834  0.0001908   337.0   <2e-16 ***
    ---
    Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
    
    (Dispersion parameter for Gamma family taken to be 1.238685)
    
        Null deviance: 1520252  on 852449  degrees of freedom
    Residual deviance: 1251859  on 852447  degrees of freedom
    AIC: 20497443
    
    Number of Fisher Scoring iterations: 8

OLS:

    Call:
    lm(formula = payment_amt ~ offset(years) + 
        as.factor(gender) + age, 
        data = pm)
    
    Residuals:
        Min      1Q  Median      3Q     Max 
    -170257  -53628  -23808   15835 8808825 
    
    Coefficients:
                                        Estimate Std. Error t value Pr(>|t|)    
    (Intercept)                       -206943.18    1425.83  -145.1   <2e-16 ***
    as.factor(gender)M   48794.00     261.77   186.4   <2e-16 ***
    age              3547.31      20.28   174.9   <2e-16 ***
    ---
    Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
    
    Residual standard error: 118300 on 852447 degrees of freedom
    Multiple R-squared:  0.07811,   Adjusted R-squared:  0.0781 
    F-statistic: 3.611e+04 on 2 and 852447 DF,  p-value: < 2.2e-16

Poisson:

    Call:
    glm(formula = icu_days ~ offset(log(years)) + as.factor(gender) + 
        age, family = poisson(link = "log"), 
        data = pm)
    
    Deviance Residuals: 
       Min      1Q  Median      3Q     Max  
    -56.95  -15.11   -7.11    3.22  747.64  
    
    Coefficients:
                                        Estimate Std. Error z value Pr(>|z|)    
    (Intercept)                       -5.518e-01  9.058e-04  -609.2   <2e-16 ***
    as.factor(gender)M  6.357e-01  1.341e-04  4738.9   <2e-16 ***
    age            6.395e-02  1.246e-05  5130.9   <2e-16 ***
    ---
    Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
    
    (Dispersion parameter for poisson family taken to be 1)

负二项式:

    Call:
    glm.nb(formula = icu_days ~ offset(log(years)) + 
    as.factor(gender) + 
    age, data = pm, init.theta = 0.9279403178, 
    link = log)
    Deviance Residuals:
    Deviance Residuals: 
            Min       1Q   Median       3Q      Max  
         -2.7720  -1.0788  -0.4652   0.1641  17.2095  

        Coefficients:
                                        Estimate Std. Error z value Pr(>|z|)    
        (Intercept)                       -1.0038131  0.0126237  -79.52   <2e-16 ***
        as.factor(gender)M  0.5977179  0.0023017  259.69   <2e-16 ***
        age            0.0708916  0.0001795  394.97   <2e-16 ***
        ---
        Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

        (Dispersion parameter for Negative Binomial(0.9279) family taken to be 1)

我可以知道如何解释系数吗?

2个回答

你展示了四个模型,其中一个很奇怪(标记的那个OLS)所以我将首先讨论其他三个。常见的是响应变量(支付的金额,Gamma其他人的天数)被建模为协变量的函数,但建模的是每年的价值,即:

EYyears=exp(βTx)=exp(η),say
(因为您正在使用日志链接功能)。两边取对数(自然)给出:
logEYlogyears=η
并在右侧移动一个术语:
logEY=logyears+η
这回答了您的问题:日志链接函数、非负响应和曝光日志偏移量的组合意味着您正在建模总金额除以曝光的比率,即每年支付或每天支付的天数年。其他变量的解释(线性预测器中的线性参数)η然后应该清楚,它在回归模型中被解释为通常。请注意,上面解释中的分配系列的确切选择没有任何作用!

您的第四个模型对我来说没有多大意义,您当然可以使用高斯模型进行非负面响应,这本身不是问题。但是,据我所知,使用身份链接功能和日志曝光的偏移量是没有意义的。让我们试着模仿上面的逻辑:

EYyears=βTx=η,say
请注意,我们更改为身份链接功能。但是现在获取日志并不能像上面那样工作,这只是因为我们有一个日志链接功能。所以我不会试图解释你OLS模型中的参数,它们是没有意义的。但是你可以尝试一个高斯族,但是有日志链接!有关上述论点的更广泛讨论,请参阅拟合优度以及选择线性回归或泊松的模型

EDIT  

对于评论中的附加问题: So does that mean offset only works for log links? 不,但日志链接和速率建模是主要用例。这个网站上的大多数帖子都提到offset了这种情况。一些讨论其他用途的帖子: 具有对数偏移的二元模型(Probit 和 Logit),二项式模型中使用偏移来解释患者数量的增加Logistic 回归中的偏移:典型的用例是什么?

您的 OLS 型号:

lm(formula = payment_amt ~ offset(years) + 
    as.factor(gender) + age, 
    data = pm)

是相同的:

lm(formula = payment_amt - years ~ as.factor(gender) + age,
   data = pm)

使用对数链接,您可以使用偏移量来模拟速率,因为数学如何与对数一起使用,但对于身份链接,使用偏移量确实没有意义。