[PYTHON] Introduction à la modélisation statistique pour l'analyse des données Test de rapport de ressemblance GLM et asymétrie de test

Effectuez un test pour comparer les modèles statistiques estimés. Ce chapitre traite du ** test du rapport de vraisemblance **.

Cadre de test statistique

procédure

  1. Déterminez les données à utiliser
  2. Concevoir un modèle statistique approprié correspondant à l'objectif et à la structure des données, et estimer le paramètre le plus probable.

Dans le test, un modèle avec peu de paramètres et un modèle avec de nombreux paramètres (modèle simple et modèle complexe) sont testés. Ils sont appelés ** hypothèse nulle ** et ** hypothèse alternative **.

Cadre de test Neyman-Pearson

Le test du modèle statistique examine si la proposition «l'hypothèse nulle est correcte» peut être niée.

  1. Traitez la qualité du modèle comme des ** statistiques de test **
  2. Supposons que l'hypothèse nulle est un "vrai modèle"
  3. Examiner la variation (distribution de probabilité) de la statistique de test et déterminer la "plage probable" de la valeur statistique de test.
  4. Lorsque la taille de la "plage commune" est de 95%, on peut dire qu'un niveau de signification de 5% est fixé.
  5. Si les statistiques de test obtenues par le modèle de l'hypothèse alternative sont en dehors de la «plage commune», rejetez l'hypothèse nulle et soutenez l'hypothèse alternative.

Exemple de test du rapport de vraisemblance: examen de la différence de degré d'écart

Modèle statistique à utiliser:

modèle Nombre de paramètresk \log L ^ \ast deviance(-2\log L ^ \ast residual deviance AIC
Constant 1 -237.6 475.3 89.5 477.3
x 2 -235.4 470.8 85.0 474.8
full 100 -192.9 385.6 0.0 585.8

Dans le test du rapport de vraisemblance, la différence de degré d'écart obtenue en multipliant le logarithme du rapport de vraisemblance par -2 est utilisée. Dans le cas de cet exemple

\begin{eqnarray}
\frac{L_1 ^\ast}{L_2 ^\ast} &=& \frac{Probabilité maximale d'un modèle constant:\exp(-237.6)}{Probabilité maximale du modèle x:\exp(-235.4)} \\
\Delta D_{1,2} &=& -2 * (\log L_1 ^ \ast - \log L_2 ^ \ast) \\
\Delta D_{1,2} &=& D_1 - D_2 \\
\Delta D_{1,2} &=& 4.5
\end{eqnarray}

On évalue que ce degré d'écart est amélioré de 4,5.

L'hypothèse nulle est \Delta D_{1,2}Rarement différence (rejet) \Delta D_{1,2}Est une différence commune (ne peut pas être rejetée)
Un vrai modèle Erreur de première classe (aucun problème)
Pas un vrai modèle (aucun problème) Deuxième type d'erreur

Le framework de test Neyman-Pearson est ** dédié à l'examen des erreurs de première classe **

Comme procédure

  1. Supposons qu'un modèle constant qui est une hypothèse nulle est correct (un vrai modèle)
  2. Lorsqu'un certain modèle est appliqué aux données observées, il devient $ \ hat {\ beta_1} = 2,06 $, donc cela est considéré comme le même que le vrai modèle.
  3. Créez des données à partir d'un vrai modèle et appliquez le modèle x à chaque fois pour calculer $ \ Delta D_ {1, 2} $ et trouver la distribution de $ \ Delta D_ {1,2} $
  4. La probabilité P que la différence entre le degré de déviation du modèle constant et du modèle x soit $ \ Delta D_ {1,2} \ geq 4,5 $ est obtenue.
  5. Si $ \ Delta D_ {1,2} = 4,5 $ est considéré comme une valeur impossible, l'hypothèse nulle est rejetée et l'hypothèse alternative est automatiquement adoptée.

La probabilité $ P $ que la différence entre le degré de déviation du modèle constant et du modèle x soit $ \ Delta D_ {1,2} \ geq 4,5 $ est appelée ** valeur P **.

Déterminez le ** niveau de signification ** à l'avance (par vous-même)

Laisser.

Hypothèse nulle: calcule la probabilité que $ \ Delta D_ {1,2}, qui est une statistique de test dans le monde où un modèle constant est un vrai modèle, soit supérieure à 4,5 (fait une erreur de première classe).

Méthode bootstrap paramétrique

Au-dessus de 3. L'invention concerne un procédé dans lequel le processus de génération des données de est effectué sur la base d'une simulation utilisant des nombres aléatoires. Supposons que le résultat d'un certain modèle soit stocké dans «fit1» et que le résultat du modèle x soit stocké dans «fit2».

>>> model1 = smf.glm('y~1', data=d, family=sm.families.Poisson())
>>> model2 = smf.glm('y~x', data=d, family=sm.families.Poisson())
>>> fit1 = model1.fit()
>>> fit2 = model2.fit()

# fit1$deviance - fit2$deviance
>>> fit1.deviance - fit2.deviance
4.5139410788540459

A partir du nombre moyen de graines estimé par un certain modèle $ \ lambda = \ exp (2,06) = 7,85 $ Les données à générer sont «** 100 nombres aléatoires de Poisson avec une moyenne de 7,85 **».

# d$y.rnd <- rpois(100, lambda=mean(d$y))
>>> d.y.rnd = sci.poisson.rvs(d.y.mean(), size=100)
# fit1 <- glm(y.rnd ~ 1, data=d, family=poisson)
>>> model1 = smf.glm('y.rnd ~ 1', data=d, family=sm.families.Poisson())
>>> fit1 = model1.fit()
# fit2 <- glm(y.rnd ~ x, data=d, family=poisson)
>>> model2 = smf.glm('y.rnd ~ x', data=d, family=sm.families.Poisson())
>>> fit2 = model2.fit()
# fit1$deviance - fit2$deviance
>>> fit1.deviance - fit2.deviance
0.63270346107955788

La différence de degré d'écart est de 1,92 pour les données dont la valeur moyenne est un nombre aléatoire de Poisson constant.

Le modèle x avec des variables explicatives sans signification est meilleur que le modèle constant, qui est le «vrai modèle»

En répétant cette étape environ 1 000 fois, la ** distribution des statistiques de test ** et la "distribution de la différence de degré de déviation $ \ Delta D_ {1, 2} $" dans cet exemple peuvent être prédites.

def get_dd(d):
    sample_d = len(d)
    mean_y = d.y.mean()
    d.y.rnd = sci.poisson.rvs(mu=mean_y, size=sample_d)
    model1 = smf.glm('y.rnd ~ 1', data=d, family=sm.families.Poisson())
    model2 = smf.glm('y.rnd ~ x', data=d, family=sm.families.Poisson())
    fit1 = model1.fit()
    fit2 = model2.fit()
    return fit1.deviance - fit2.deviance


def pb(d, bootstrap=1000):
    return pandas.Series([get_dd(d) for _ in xrange(bootstrap)])

results = pb(d)
results.describe()

results[results >= 4.5].count()


results[results>= 4.5].count()
# 32

results.quantile(.95)
# 3.6070094508948025

results.hist()


D'après les résultats ci-dessus, la «probabilité que la différence d'écart soit supérieure à 4,5» est de 32 $ / 1000 $, c'est-à-dire $ P = 0,032 $. Aussi, si vous trouvez la différence de degré de déviation $ \ Delta D_ {1,2} $ où $ P = 0,05 $. Il devient $ \ Delta D_ {1,2} \ leq 3.61 $.

De ce qui précède, Il y a une différence significative parce que «la valeur P de la différence de degré d'écart de 4,5 était de 0,032, donc c'est plus petit que le niveau de signification de 0,05». On juge que "l'hypothèse nulle (modèle constant) est rejetée et le modèle x demeure, donc ceci est adopté".

Méthode de calcul approximative utilisant la distribution du chi carré

La distribution de probabilité de la différence de degré d'écart $ \ Delta D_ {1,2} $ peut être approximée par la distribution $ \ chi ^ 2 $ du degré de liberté $ k_2 --k_1 = 2-1 = 1 $.

Apparemment, il n'y a pas d'ANOVA pour GLM dans les modèles de statistiques ...

L'approximation de la distribution $ \ chi ^ 2 $ est ** un calcul d'approximation qui est efficace lorsque la taille de l'échantillon est grande **.

La méthode PB semble être meilleure pour les petits échantillons avec un petit nombre d'individus étudiés, ou pour les cas où la variation des données n'est pas une distribution de Poisson mais une distribution normale uniformément répartie.

Résumé

Le test du rapport de vraisemblance et la sélection du modèle par l'AIC se concentrent sur la statistique de l'écart.

--AIC: Le but est de sélectionner un "modèle qui fait de bonnes prédictions"

Il semble qu'il n'y ait pas d'autre choix que de choisir en fonction du but.

Recommended Posts

Introduction à la modélisation statistique pour l'analyse des données Test de rapport de ressemblance GLM et asymétrie de test
Introduction à la modélisation statistique pour l'analyse des données Sélection du modèle GLM
Introduction à la modélisation statistique pour l'analyse des données
Introduction à la modélisation statistique pour le modèle linéaire généralisé d'analyse de données (GLM)
Introduction à la modélisation statistique pour l'analyse des données Élargissement de la gamme d'applications de GLM
Notes de lecture (en Python et Stan) pour une introduction à la modélisation statistique pour l'analyse de données (Midorimoto)
"Introduction à l'analyse de données par modélisation statistique bayésienne à partir de R et Stan" implémenté en Python
Organisation des procédures de base pour l'analyse des données et le traitement statistique (4)
Organisation des procédures de base pour l'analyse des données et le traitement statistique (2)
[Introduction aux Data Scientists] Statistiques descriptives et analyse de régression simple ♬
Comment utiliser les outils d'analyse de données pour les débutants
[Introduction à minimiser] Analyse des données avec le modèle SEIR ♬
Une introduction à l'analyse vocale pour les applications musicales
[Pour les débutants] Comment étudier le test d'analyse de données Python3
Note de lecture: Introduction à l'analyse de données avec Python
Méthodes de traitement des données pour les ingénieurs mécaniciens et les ingénieurs non informaticiens (Introduction 2)
[Livre technique] Introduction à l'analyse de données avec Python -1 Chapitre Introduction-
Méthodes de traitement des données pour les ingénieurs mécaniciens et les ingénieurs non informaticiens (Introduction 1)
[Introduction à cx_Oracle] (Partie 6) Mappage des types de données DB et Python
[Introduction à l'application Udemy Python3 +] 42. pour instruction, instruction break et instruction continue
20200329_Introduction à l'analyse de données avec Python 2nd Edition Personal Summary
[Introduction to Data Scientists] Bases de Python ♬ Fonctions et classes
[Introduction à Python] Combinaison des données Nikkei Average et NY Dow CSV
[Python] Introduction à la création de graphiques à l'aide de données de virus corona [Pour les débutants]
Python pour l'analyse des données Chapitre 4
Python pour l'analyse des données Chapitre 2
Modélisation de données point et figure
Introduction à Python pour, pendant
Conseils et précautions lors de l'analyse des données
Python pour l'analyse des données Chapitre 3
Résolution de l'introduction d'AOJ aux algorithmes et aux structures de données en Python -Partie1-
Introduction à l'analyse de données avec Python P32-P43 [ch02 3.US Baby Names 1880-2010]
Introduction à l'analyse de données par Python P17-P26 [ch02 1.usa.gov données de bit.ly]
Résolution de l'introduction d'AOJ aux algorithmes et aux structures de données en Python -Partie2-
Résolution de l'introduction d'AOJ aux algorithmes et aux structures de données en Python -Partie4-
Comment faire un test unitaire Part.1 Modèle de conception pour l'introduction
Introduction à la modélisation statistique bayésienne avec python ~ Essai de régression linéaire avec MCMC ~
Résolution de l'introduction d'AOJ aux algorithmes et aux structures de données en Python -Partie3-
[Introduction to Data Scientists] Bases de Python ♬ Branchements conditionnels et boucles
[Introduction aux Data Scientists] Bases de Python ♬ Fonctions et fonctions anonymes, etc.