Nos données sont donc structurées comme suit:
Nous avons participants, chaque participant peut être classé en 3 groupes ( G ), et pour chaque participant, nous avons échantillons d'une variable continue. Et nous essayons de prédire des valeurs qui sont soit 0 soit 1.
Comment utiliserait-on matlab pour tester une interaction entre la variable continue et la variable catégorielle pour prédire ces valeurs?
logistic
matlab
interaction
mpacer
la source
la source
Réponses:
La façon la plus simple, IMO, est de construire vous-même la matrice de conception, car elleX (continu) et g (catégorique, avec trois niveaux non ordonnés, disons g= 1 , 2 , 3 ). En utilisant la notation de Wilkinson, nous écririons ce modèle comme
glmfit
accepte soit une matrice de valeurs brutes (observées), soit une matrice de conception. Le codage d'un terme d'interaction n'est pas si difficile une fois que vous avez écrit le modèle complet. Disons que nous avons deux prédicteurs,y ~ x + g + x:g
, en négligeant le côté gauche (pour un résultat binomial, nous utiliserions une fonction de lien logit). Nous avons seulement besoin de deux vecteurs fictifs pour coder lesg
niveaux (présents / absents pour une observation particulière), nous aurons donc 5 coefficients de régression, plus un terme d'interception. Cela peut être résumé commeoùje représente une matrice d'indicateurs codant le niveau de g .
Dans Matlab, en utilisant l'exemple en ligne, je ferais ce qui suit:
Je n'ai pas inclus de colonne pour l'interception car elle est incluse par défaut. La matrice de conception ressemble à
et vous pouvez voir que les termes d'interaction sont simplement codés comme le produit de
x
avec la colonne correspondante deg
(g = 2 et g = 3, car nous n'avons pas besoin du premier niveau).Les résultats sont donnés ci-dessous, sous forme de coefficients, d'erreurs standard, de statistiques et de valeurs de p (à partir de la
stats
structure):Maintenant, tester l'interaction peut être fait en calculant la différence de déviance du modèle complet ci-dessus et d'un modèle réduit (en omettant le terme d'interaction, c'est-à-dire les deux dernières colonnes de la matrice de conception). Cela peut être fait manuellement ou en utilisant la
lratiotest
fonction qui fournit le test d'hypothèse du rapport de vraisemblance. La déviance pour le modèle complet est de 4,3122 (dev
), tandis que pour le modèle sans interaction, elle est de 6,4200 (j'ai utiliséglmfit(X(:,1:3), [y n], 'binomial', 'link', 'probit');
), et le test LR associé a deux degrés de liberté (la différence de nombre de paramètres entre les deux modèles). Comme la déviance à l'échelle est deux fois plus faible que la probabilité logarithmique pour les GLM, nous pouvons utiliseroù la statistique est distribuée commeχ2 avec 2 df (la valeur critique est alors 5,9915, voir
chi2inv(0.95, 2)
). Le résultat indique un résultat non significatif: nous ne pouvons conclure à l'existence d'une interaction entrex
etg
dans l'échantillon observé.Je suppose que vous pouvez conclure les étapes ci-dessus dans une fonction pratique de votre choix. (Notez que le test LR peut être fait à la main avec très peu de commandes!)
J'ai vérifié ces résultats par rapport à la sortie R, qui est donnée ensuite.
Voici le code R:
Voici les résultats, pour les coefficients du modèle complet,
Pour la comparaison des deux modèles imbriqués, j'ai utilisé les commandes suivantes:
qui donne le "tableau de déviance" suivant:
la source