Comment la puissance d'une régression logistique et d'un test t se compare-t-elle?


18

La puissance d'une régression logistique et d'un test t est-elle équivalente? Dans l'affirmative, elles devraient être «équivalentes à la densité de données», ce qui signifie que le même nombre d'observations sous-jacentes donne la même puissance, étant donné un alpha fixe de 0,05. Considérons deux cas:

  1. [Le test paramétrique t]: 30 tirages d'une observation binomiale sont effectués et les valeurs résultantes sont moyennées. Cela se fait 30 fois pour le groupe A (qui a un Pr binomial de 0,70 d'occurrence) et 30 fois pour le groupe B (qui a un Pr binomial de 0,75 d'occurrence). Cela donne 30 moyennes par groupe qui représentent un résumé de 1 800 tirages d'une distribution binomiale. Un test t de 58df est effectué pour comparer les moyennes.
  2. [La régression logistique]: Une régression logistique est effectuée avec une pente codée factice représentant l'appartenance au groupe et chacun des 1 800 tirages.

Ma question comporte deux parties:

  1. Étant donné un ensemble alpha de 0,05, la puissance de ces méthodologies sera-t-elle identique ou différente? Pourquoi? Comment puis-je le prouver?
  2. La réponse à la question 1 est-elle sensible à la taille des échantillons entrant dans le test t, à la taille de l'échantillon de chaque groupe du test t, aux probabilités binomiales sous-jacentes ou à un autre facteur? Si oui, comment puis-je savoir (sans simulation) que la puissance est bien différente et quel type de changements produira quel type de changements de puissance? Vous pouvez également fournir un code R élaboré qui résout le problème à l'aide de la simulation.

Réponses:


19

Si j'ai calculé correctement, la régression logistique a asymptotiquement la même puissance que le test t. Pour le voir, notez sa log log vraisemblance et calculez l'attente de sa Hesse à son maximum global (son négatif estime la matrice variance-covariance de la solution ML). Ne vous embêtez pas avec le paramétrage logistique habituel: il est plus simple de le paramétrer avec les deux probabilités en question. Les détails dépendront exactement de la façon dont vous testez la signification d'un coefficient de régression logistique (il existe plusieurs méthodes).

Que ces tests aient des pouvoirs similaires ne devrait pas être trop surprenant, car la théorie du chi carré pour les estimations de ML est basée sur une approximation normale de la vraisemblance logarithmique, et le test t est basé sur une approximation normale des distributions de proportions. Le nœud du problème est que les deux méthodes font les mêmes estimations des deux proportions et que les deux estimations ont les mêmes erreurs types.


Une analyse réelle pourrait être plus convaincante. Adoptons une terminologie générale pour les valeurs d'un groupe donné (A ou B):

  • est la probabilité de 1.p
  • est la taille de chaque série de tirages.n
  • est le nombre d'ensembles de tirages.m
  • est la quantité de données.N=mn
  • (égal à 0 ou 1 ) est la valeur du j ème résultat du i ème jeu de tirages.kij01jthith
  • est le nombre total de uns dans le i ème jeu de tirages.kiith
  • est le nombre total de uns.k

La régression logistique est essentiellement l'estimateur ML de . Son logarithme est donné parp

log(L)=klog(p)+(Nk)log(1p).

Ses dérivées par rapport au paramètre sontp

Journal(L)p=kp-N-k1-p et

-2Journal(L)p2=kp2+N-k(1-p)2.

Réglage des premier à zéro l'estimation ML des rendements p = k / N , et de brancher ce que dans l'inverse de la seconde expression donne la variance p ( 1 - p ) / N , qui est le carré de l'erreur standard.p^=k/Np^(1-p^)/N

La statistique t sera obtenue à partir d'estimateurs basés sur les données regroupées par ensembles de tirages; à savoir, comme la différence des moyennes (l'une du groupe A et l'autre du groupe B) divisée par l'erreur-type de cette différence, qui est obtenue à partir des écarts-types des moyennes. Examinons donc la moyenne et l'écart-type pour un groupe donné. Les moyennes égales , qui est identique à l'estimateur ML p . L'écart type en question est l' écart type des moyens d'étirage; c'est-à-dire qu'il s'agit de l'écart type de l'ensemble de k i / n . Voici le nœud du problème, alors explorons quelques possibilités.k/Np^ki/n

  1. Supposons que les données ne sont pas regroupés en tire du tout: qui est, et m = N . Les k i sont les moyens de tirage. Leur échantillon variance est égale à N / ( N - 1 ) fois p ( 1 - p ) . Il en résulte que l'erreur-type est identique à l'erreur-type ML à l'exception d'un facteur n=1m=NkiN/(N1)p^(1p^) , qui est essentiellement1lorsqueN=1800. Par conséquent - à part cette petite différence - tout test basé sur la régression logistique sera le même qu'un test t et nous obtiendrons essentiellement la même puissance.N/(N1)1N=1800

  2. Lorsque les données sont regroupées, la (vraie) variance des est égale à p ( 1 - p ) / n car les statistiques k i représentent la somme de n variables de Bernoulli ( p ), chacune avec la variance p ( 1 - p ) . Par conséquent, l' erreur type attendue de la moyenne de m de ces valeurs est la racine carrée de p ( 1 - p ) / n / m =ki/np(1p)/nkinpp(1p)m , comme précédemment.p(1p)/n/m=p(1p)/N

Le chiffre 2 indique que la puissance du test ne devrait pas varier sensiblement selon la répartition des tirages (c'est-à-dire avec la façon dont et n varient en fonction de m n = N ), à part peut-être un effet assez faible de l'ajustement dans l'échantillon variance (sauf si vous étiez assez stupide pour utiliser extrêmement peu de jeux de tirages au sein de chaque groupe).mnmn=N

Simulations limitées pour comparer à p = 0,74 (avec 10 000 itérations chacune) impliquant m = 900 , n = 1 (régression essentiellement logistique); m = n = 30 ; et m = 2 , n = 450 (maximisation de l'ajustement de la variance de l'échantillon) le confirment: la puissance (à α = 0,05p=0.70p=0.74m=900,n=1m=n=30m=2,n=450α=0.05, unilatéral) dans les deux premiers cas est de 0,59 alors que dans le troisième, où le facteur d'ajustement fait un changement important (il n'y a maintenant que deux degrés de liberté au lieu de 1798 ou 58), il tombe à 0,36. Un autre test comparant à p = 0,52 donne des puissances de 0,22, 0,21 et 0,15, respectivement: encore une fois, nous observons seulement une légère baisse de l'absence de regroupement en tirages (= régression logistique) au regroupement en 30 groupes et une baisse substantielle à seulement deux groupes.p=0.50p=0.52

La morale de cette analyse est:

  1. Vous ne perdez pas grand-chose lorsque vous partitionnez vos valeurs de données en un grand nombre m de groupes de "tirages" relativement petits.Nm
  2. Vous pouvez perdre une puissance appréciable en utilisant un petit nombre de groupes ( est petit, n - la quantité de données par groupe - est grande).mn
  3. Il vaut mieux ne pas regrouper vos valeurs de données en "tirages" du tout. Il suffit de les analyser tels quels (en utilisant tout test raisonnable, y compris la régression logistique et les tests t).N

1
@suncoolsu C'est dommage que nous ne puissions pas voter pour la mise à jour ...
chl

2
@chl .. Je suis d'accord, j'aurais aimé donner (+2) :-), en fait, je n'ai jamais réfléchi aussi profondément à cette question jusqu'à cette mise à jour.
suncoolsu

Comme d'habitude, un tour de force de Bill Huber. Je regarde la question de savoir comment comparer la puissance du test t avec une régression logistique. Mais il semble que le point commun consiste à mettre les deux méthodes à l'épreuve des proportions.
Michael R. Chernick

8

Voici le code en R qui illustre la simulation de la réponse de whuber . Les commentaires sur l'amélioration de mon code R sont plus que bienvenus.

N <- 900            # Total number data points
m <- 30;            # Size of draw per set
n <- 30;            # No of sets

p_null <- 0.70;     # Null hypothesis
p_alternate <- 0.74 # Alternate hypothesis
tot_iter <- 10000;

set.seed(1);        # Initialize random seed
null_rejected <- 0; # Set counter to 0
for (iter in 1:tot_iter)
{
    draws1 <- matrix(0,m,n);
    draws2 <- matrix(0,m,n);
    means1 <- matrix(0,m);
    means2 <- matrix(0,m);

    for (obs in 1:m)
    {
        draws1[obs,] <- rbinom(n,1,p_null);
        draws2[obs,] <- rbinom(n,1,p_alternate);

        means1[obs,] <- mean(draws1[obs,]);
        means2[obs,] <- mean(draws2[obs,]);
    }
    if (t.test(means1,means2,alternative="l")$p.value <= 0.05)
    {
        null_rejected <- null_rejected + 1; 
    }
}
power <- null_rejected / tot_iter

1
Merci de partager ça! (J'aime votre style de faire toutes les variables de paramètres et de les commenter clairement.) Je n'ai plus de votes aujourd'hui :-( donc je vais devoir attendre pour voter.
whuber

2
replicate()rbinom() k{*}apply()

@chl Merci. J'utilise ces questions pour apprendre R! Ainsi, les commentaires tels que le vôtre sont précieux.

@Skrikant LOL J'étais en train d'ajouter: "BTW j'aime la façon dont vous apprenez R!"
chl

Je suis confus; cela ne donne-t-il pas seulement la puissance du t.test?
russellpierce
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.