Как вы получаете нулевые и остаточные отклонения R в Matlab fitglm?

r matlab glm

786 просмотра

2 ответа

7878 Репутация автора

В R после подбора glm вы можете получить сводную информацию, содержащую остаточное отклонение и нулевое отклонение, которое говорит вам, насколько хороша ваша модель по сравнению с моделью только с термином перехвата, для примерной модели:

model <- glm(formula = am ~ mpg + qsec, data=mtcars, family=binomial)

у нас есть:

> summary(model)
...
    Null deviance: 43.2297  on 31  degrees of freedom
Residual deviance:  7.5043  on 29  degrees of freedom
AIC: 13.504
...

В Matlab при использовании fitglmвы возвращаете объект GeneralizedLinearModelкласса, у которого есть Devianceсвойство, содержащее остаточное отклонение. Тем не менее, я не могу найти ничего, что напрямую связано с нулевым отклонением. Какой самый простой способ рассчитать это?

Пример кода Matlab:

load fisheriris.mat
model = fitglm(meas(:, 1), ismember(species, {'setosa'}), 'Distribution', 'binomial')

производит:

model = 


Generalized Linear regression model:
    logit(y) ~ 1 + x1
    Distribution = Binomial

Estimated Coefficients:
                       Estimate                SE                  tStat                 pValue       
                   _________________    _________________    _________________    ____________________

    (Intercept)     27.8285213954246      4.8275686220899     5.76450042948896    8.19000695766331e-09
    x1             -5.17569812610148    0.893399843474784    -5.79326061438645    6.90328570107794e-09


150 observations, 148 error degrees of freedom
Dispersion: 1
Chi^2-statistic vs. constant model: 119, p-value = 9.87e-28

с остаточным отклонением model.Deviance:

>> model.Deviance

ans =

          71.8363992272217
Автор: Alex Источник Размещён: 18.07.2016 06:18

Ответы (2)


0 плюса

7878 Репутация автора

Если вызов to fitglmиспользуется с таблицей, а регрессия указана с использованием нотации Уилкинсона, то результирующий GeneralizedLinearModelобъект modelимеет свойства, которые позволяют нам извлекать таблицу, используемую для соответствия модели, имени ответа и распределения.

Поскольку нулевое отклонение от R - это просто отклонение модели с установленным перехватом, мы можем найти его, подгоняя a, null_deviance_modelиспользуя приведенную выше информацию:

null_deviance_model = model.fit(model.Variables, ...
      [model.ResponseName, ' ~ 1'], 'Distribution', model.Distribution.Name);

Нулевое отклонение от R определяется как null_deviance_model.Deviance.

Я не уверен, распространяется ли это на регрессии с использованием матриц и векторов для ковариат / ответа.

Автор: Alex Размещён: 19.07.2016 12:01

2 плюса

9937 Репутация автора

Я написал GLMкласс для Matlab, который дает точно такие же результаты:

Обобщенные линейные модели в Matlab (те же результаты, что и в R)

Например, GLM с логарифмической связью с гамма-распределением на данных образца дает это в R:

Call:
glm(formula = MilesPerGallon ~ Horsepower + Acceleration + Cylinders, 
    family = Gamma(link = log), data = data)

Deviance Residuals: 
      Min         1Q     Median         3Q        Max  
-0.116817  -0.075084   0.004179   0.060545   0.197108  

Coefficients:
              Estimate Std. Error z value Pr(>|z|)    
(Intercept)   4.955205   0.509903   9.718  < 2e-16 ***
Horsepower   -0.017605   0.004352  -4.046 5.21e-05 ***
Acceleration -0.026137   0.015540  -1.682   0.0926 .  
Cylinders     0.093277   0.054458   1.713   0.0867 .  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for Gamma family taken to be 0.0133)

    Null deviance: 0.388832  on 10  degrees of freedom
Residual deviance: 0.093288  on  7  degrees of freedom
AIC: 64.05

Number of Fisher Scoring iterations: 4

Pearson MSE:  0.008783281 
Deviance MSE:  0.008480725 
McFadden R^2:  0.7600815 

Используя пакет, эта же оценка дает следующий результат в Matlab:

 :: convergence in 4 iterations
 ------------------------------------------------------------------------------------------
    dependent: MilesPerGallon
  independent: (Intercept),Horsepower,Acceleration,Cylinders
 ------------------------------------------------------------------------------------------
  log(E[MilesPerGallon]) = ß1×(Intercept) + ß2×Horsepower + ß3×Acceleration + ß4×Cylinders
 ------------------------------------------------------------------------------------------
 distribution: GAMMA
         link: LOG
       weight: -
       offset: -
 ============================================================
     Variable    Estimate     S.E.    z-value    Pr(>|z|)
 ============================================================
   (Intercept)      4.955     0.510    9.708     0.00000
    Horsepower     -0.018     0.004   -4.042     0.00005
  Acceleration     -0.026     0.016   -1.680     0.09290
     Cylinders      0.093     0.055    1.711     0.08706
 ============================================================
  Residual deviance:     0.0933     Deviance MSE: 0.0085
  Null deviance:         0.3888     Pearson MSE:  0.0088
  Dispersion:            0.0133     Deviance IC:  0.1026
  McFadden R^2:          0.7601     Residual df:  7.0000
 ============================================================

Так что примерно такой же вывод. Надеюсь, это поможет кому-то.

Автор: Jean-Paul Размещён: 14.02.2017 08:12
Вопросы из категории :
32x32