Problemet med överdispersion

Generaliserade linjära modeller i Python

Ita Cirovic Donev

Data Science Consultant

Förstå datan

Fördelningsplot för antalet satelliter (krabba)

# mean of y
y_mean = crab['sat'].mean()
2.919
# variance of y
y_variance = crab['sat'].var()
9.912
Generaliserade linjära modeller i Python

Medelvärde skilt från varians

  • $variance > mean$ $\rightarrow$ överdispersion
  • $variance < mean$ $\rightarrow$ underdispersion

Konsekvenser:

  • Små standardfel
  • Litet p-värde
Generaliserade linjära modeller i Python

Hur kontrollerar man överdispersion?

Sammanfattning av den anpassade modellen med markeringar på df-residualer och Pearson chi-kvadratstatistikan.

Generaliserade linjära modeller i Python

Beräkna uppskattad överdispersion

ratio = crab_fit.pearson_chi2 / crab_fit.df_resid
print(ratio)
3.134
  • Kvot $ =1$ $\rightarrow$ ungefär Poisson

  • Kvot $ <1$ $\rightarrow$ underdispersion

  • Kvot $ >1$ $\rightarrow$ överdispersion

Generaliserade linjära modeller i Python

Negativ binomialregression

  • $E(y)=\lambda$
  • $Var(y) = \lambda+\alpha\lambda^2$
  • $\alpha$ – dispersionsparameter
Generaliserade linjära modeller i Python

GLM negativ binomial i Python

import statsmodels.api as sm
from statsmodels.formula.api import glm
model = glm('y ~ x', data = my_data, 
            family = sm.families.NegativeBinomial(alpha = 1)).fit()
Generaliserade linjära modeller i Python

Nu kör vi en övning!

Generaliserade linjära modeller i Python

Preparing Video For Download...