Estimation des pourcentages comme variable dépendante dans la régression

13

J'ai les pourcentages de classement des étudiants dans 38 examens comme variable dépendante dans mon étude. Un pourcentage de classement est calculé par (rang / nombre d'élèves dans un examen). Cette variable dépendante a une distribution presque uniforme et je veux estimer les effets de certaines variables sur la variable dépendante.

Quelle approche de régression dois-je utiliser?

siren99
la source
2
La régression régulière (OLS) ne fait pas d'hypothèses sur la distribution de la variable dépendante, elle fait des hypothèses sur la distribution de l'erreur (estimée par les résidus) à partir d'un modèle. Si le nombre d'étudiants par examen varie, vous pouvez probablement commencer par la régression OLS et vérifier les hypothèses.
Peter Flom - Réintègre Monica
2
C'est une bonne suggestion, @Peter, mais je m'inquiète des violations plus subtiles mais importantes des hypothèses OLS. Le classement d'un étudiant à un examen dépendra des attributs de tous les autres étudiants passant l'examen. Cette interdépendance n'est capturée par aucune application (de routine) d'OLS.
whuber
Une autre façon d'apprécier ce qui se passe ici est de considérer l'exemple le plus simple de ce problème, où chaque "examen" implique exactement deux des étudiants. La variable dépendante indique quel élève a fait mieux. Si nous considérons chaque examen comme un concours, cela équivaut à organiser un tournoi. La question, en effet, veut aboutir à une formule pour la «force» de chaque acteur en termes de variables explicatives.
whuber
Vous avez raison @whuber. Comment y remédier? Je pense qu'un modèle IRT le ferait, mais cela fait longtemps que je ne les ai pas étudiés.
Peter Flom - Réintègre Monica
@whuber Je pense que l'IRT pourrait être une possibilité, un probit ordonné (ou logit) par exemple. Mais il est également possible de considérer le rang en pourcentage comme une variable continue bornée (comme la régression logistique suggérée par Mike), ce serait une approximation valide , tandis que le probit ordonné serait un modèle direct du problème. L'avantage de la logistique est la parcimonie; pour tenir compte de la corrélation des étudiants, un estimateur de variance blanc ou sandwich pourrait être implémenté. J'ai compris que l'échantillon comportait 38 examens pour plusieurs étudiants (longitudinal), cela devrait donc être possible.
JDav

Réponses:

3

Si vous travaillez avec Stata, consultez l'exemple suivant: http://www.ats.ucla.edu/stat/stata/faq/proportion.htm

Voici une citation de cette page Web:

"Comment faire une régression lorsque la variable dépendante est une proportion?

Les données de proportion ont des valeurs comprises entre zéro et un. Naturellement, il serait bien que les valeurs prévues se situent également entre zéro et un. Une façon d'y parvenir est d'utiliser un modèle linéaire généralisé (glm) avec un lien logit et la famille binomiale. Nous inclurons l'option robuste dans le modèle glm pour obtenir des erreurs standard robustes qui seront particulièrement utiles si nous avons mal spécifié la famille de distribution. "

majom
la source
2
C'est bien, et dans d'autres contextes, ce serait un excellent conseil, mais l'utilisation d'un GLM ne résoudra pas les problèmes identifiés dans ma réponse.
whuber
9

Synopsis

Les résultats de la régression peuvent avoir une valeur limitée lorsqu'ils sont interprétés avec soin. Des formes de variation inévitables entraîneront une réduction substantielle des estimations de coefficient vers zéro. Un meilleur modèle est nécessaire pour gérer la variation de manière plus appropriée.

(Un modèle de maximum de vraisemblance peut être construit mais peut être impraticable en raison du calcul nécessaire, qui implique une évaluation numérique des intégrales multidimensionnelles. Le nombre de dimensions est égal au nombre d'élèves inscrits dans les classes.)

introduction

Pour raconter notre intuition, imaginez que ces 38 examens ont été dispensés dans 38 cours distincts pendant un semestre dans une petite école avec 200 étudiants inscrits. Dans une situation réaliste, ces élèves auront différentes capacités et expériences. En tant que mesures de substitution de ces capacités et expériences, nous pourrions prendre, par exemple, des scores aux tests SAT de mathématiques et verbaux et l'année au collège (1 à 4).

En règle générale, les étudiants s'inscriront à des cours en fonction de leurs capacités et de leurs intérêts. Les étudiants de première année suivent des cours d'introduction et les cours d'initiation sont principalement dispensés par des étudiants de première année. Les classes supérieures et les étudiants de première année et les étudiants de deuxième année talentueux suivent les cours de niveau avancé et supérieur. Cette sélection stratifie partiellement les étudiants sorte que les capacités innées des élèves au sein de n'importe quelle classe sont généralement plus homogènes que la répartition des capacités à travers l'école.

Ainsi, les élèves les plus capables peuvent se retrouver près du bas des classes avancées et difficiles auxquelles ils s'inscrivent, tandis que les élèves les moins capables peuvent marquer près du haut des classes d'introduction faciles qu'ils suivent. Cela peut confondre une tentative directe de relier les classements d'examen directement aux attributs des étudiants et des classes.

Une analyse

Indexez les élèves avec et laissez les attributs de l'élève i être donnés par le vecteur x i . Indexez les classes avec j et laissez les attributs de la classe j être donnés par le vecteur z j . L'ensemble des élèves inscrits en classe j est A jjejeXjejjzjjUNEj .

Supposons que la «force» de chaque élève est fonction de leurs attributs plus une valeur aléatoire, qui peut également avoir une moyenne nulle:sje

sje=F(Xje,β)+εje.

Nous modélisons l'examen en classe en ajoutant des valeurs aléatoires indépendantes à la force de chaque élève inscrit dans la classe et en les convertissant en rangs. D'où, si l'élève i est inscrit dans la classe j , son rang relatif r i , j est déterminé par sa position dans le tableau de valeurs triéjjejrje,j

(sk+δk,j,kUNEj).

Ce poste est divisé par un de plus que l'effectif total de la classe pour donner à la variable dépendante, le rang en pourcentage:rje,j

pje,j=rje,j1+|UNEj|.

Je prétends que les résultats de la régression dépendent (pas mal) des tailles et de la structure des valeurs aléatoires (non observées) et δ i , j . εjeδje,j Les résultats dépendent également précisément de la façon dont les étudiants sont inscrits dans les classes. Cela devrait être intuitivement évident, mais ce qui n'est pas si évident - et semble difficile à analyser théoriquement - c'est comment et combien les valeurs non observées et les structures de classe affectent la régression.

Simulation

Sans trop d'efforts, nous pouvons simuler cette situation pour créer et analyser des exemples de données. Un avantage de la simulation est qu'elle peut intégrer les véritables forces des étudiants, qui en réalité ne sont pas observables. Un autre est que nous pouvons faire varier les tailles typiques des valeurs non observées ainsi que les affectations de classe. Cela fournit un "bac à sable" pour évaluer les méthodes analytiques proposées telles que la régression.

Pour commencer, définissons le générateur de nombres aléatoires pour des résultats reproductibles et spécifions la taille du problème. J'utilise Rcar il est accessible à tous.

set.seed(17)
n.pop <- 200      # Number of students
n.classes <- 38   # Number of classes
courseload <- 4.5 # Expected number of classes per student

Pour fournir du réalisme, créez des n.classesclasses de difficultés variables sur deux échelles (mathématique et verbale, avec une corrélation négative), menées à différents niveaux académiques (allant de 1 = introduction à 7 = recherche), et avec une facilité variable. (Dans une classe «facile», les différences entre les niveaux d'apprentissage des élèves peuvent être importantes et / ou l'examen peut fournir peu de discrimination entre les élèves. Ceci est modélisé par des termes aléatoires qui, pour la classe j ont tendance à être importants Les résultats de l'examen seront alors presque imprévisibles à partir des données sur la force des élèves. Lorsque la classe n'est pas "facile", ces termes aléatoires sont négligeables et les forces des élèves peuvent parfaitement déterminer le classement de l'examen.)δje,jj

classes <- data.frame(cbind(
  math <- runif(n.classes), 
  rbeta(n.classes, shape1=(verbal <- (1-math)*5), shape2=5-verbal),
  runif(n.classes, min=0, max=7),
  rgamma(n.classes, 10, 10)))
rm(math, verbal)
colnames(classes) <- c("math.dif", "verbal.dif", "level", "ease")
classes <- classes[order(classes$math.dif + classes$verbal.dif + classes$level), ]
row.names(classes) <- 1:n.classes
plot(classes, main="Classes")

Les étudiants sont répartis sur les quatre années et dotés de valeurs aléatoires de leurs attributs. Il n'y a aucune corrélation entre aucun de ces attributs:

students <- data.frame(cbind(
  as.factor(ceiling(runif(n.pop, max=4))),
  sapply(rnorm(n.pop, mean=60, sd=10), function(x) 10*median(c(20, 80, floor(x)))),
  sapply(rnorm(n.pop, mean=55, sd=10), function(x) 10*median(c(00, 80, floor(x)))),
  rnorm(n.pop)
  ))
colnames(students) <- c("year", "math", "verbal", "ability")
plot(students, main="Students")

εjebetabeta

beta <- list(year.1=0, year.2=1, year.3=3, year.4=4, math=1/100, verbal=1/100, ability=2, sigma=0.01)
students$strength <- (students$year==1)*beta$year.1 + 
  (students$year==2)*beta$year.2 +
  (students$year==3)*beta$year.3 +
  (students$year==4)*beta$year.4 +
  students$math*beta$math + 
  students$verbal*beta$verbal + 
  students$ability*beta$ability
students <- students[order(students$strength), ]
row.names(students) <- 1:n.pop

students$abilitybeta$abilitybeta$sigmaeaseδje,j.01.2

classesspreadassignments <-...0

pick.classes <- function(i, k, spread) {
  # i is student strength rank
  # k is number to pick
  p <- pmin(0.05, diff(pbeta(0:n.classes/n.classes, i/spread, (1+n.pop-i)/spread)))
  sample(1:n.classes, k, prob=p)
}
students$n.classes <- floor(1/2 + 2 * rbeta(n.pop,10,10) * courseload)
assignments <- lapply(1:n.pop, function(i) pick.classes(i, students$n.classes[i], spread=1))
enrolment <- function(k) length(seq(1, n.pop)[sapply(assignments, function(x) !is.na(match(k, x)))])
classes$size <- sapply(1:n.classes, enrolment)
classes$variation <- by(data, data$Class, function(x) diff(range(x$strength)))

(Comme exemple de ce que cette étape a accompli, voir la figure ci-dessous.)

n1/(n+1)n/(n+1)1/(n+1) . Cela permettra ultérieurement d'appliquer des transformations telles que la fonction logistique (qui n'est pas définie lorsqu'elle est appliquée à des valeurs de01

exam.do <- function(k) {
  s <- seq(1, n.pop)[sapply(assignments, function(x) !is.na(match(k, x)))]
  e <- classes$ease[k]
  rv <- cbind(rep(k, length(s)), s, order(rnorm(length(s), students$strength[s], sd=e*beta$sigma*classes$variation[k])))
  rv <- cbind(rv, rv[,3] / (length(s)+1))
  dimnames(rv) <- list(NULL, c("Class", "Student", "Rank", "Prank"))
  rv
}
data.raw <- do.call(rbind, sapply(1:n.classes, exam.do))

À ces données brutes, nous attachons les attributs étudiant et classe pour créer un ensemble de données adapté à l'analyse:

data <- merge(data.raw, classes, by.x="Class", by.y="row.names")
data <- merge(data, students, by.x="Student", by.y="row.names")

Orientons-nous en inspectant un échantillon aléatoire des données:

> data[sort(sample(1:dim(data)[1], 5)),]

Row Student Class Rank Prank math.dif verbal.dif  level  ease Size year math verbal ability strength n.classes
118      28     1   22 0.957  0.77997   6.95e-02 0.0523 1.032   22    2  590    380   0.576     16.9         4
248      55     5   24 0.889  0.96838   1.32e-07 0.5217 0.956   26    3  460    520  -2.163     19.0         5
278      62     6   22 0.917  0.15505   9.54e-01 0.4112 0.497   23    2  640    510  -0.673     19.7         4
400      89    10   16 0.800  0.00227   1.00e+00 1.3880 0.579   19    1  800    350   0.598     21.6         5
806     182    35   18 0.692  0.88116   5.44e-02 6.1747 0.800   25    4  610    580   0.776     30.7         4

L'enregistrement 118, par exemple, indique que l'élève n ° 28 s'est inscrit dans la classe n ° 1 et a obtenu le 22e rang (à partir du bas) à l'examen pour un pourcentage de 0,957. Le niveau de difficulté global de cette classe était de 0,0523 (très facile). Au total, 22 étudiants étaient inscrits. Cet étudiant est un étudiant en deuxième année (année 2) avec 590 mathématiques, 380 scores SAT verbaux. Leur force académique inhérente globale est de 16,9. Ils étaient inscrits dans quatre classes à l'époque.

Cet ensemble de données correspond à la description de la question. Par exemple, les rangs en pourcentage sont en effet presque uniformes (comme ils doivent l'être pour tout ensemble de données complet, car les rangs en pourcentage pour une seule classe ont une distribution uniforme discrète).

Rappelez - vous, en vertu des coefficients beta, ce modèle a pris une forte connexion entre les scores d'examen et les variables présentées dans cet ensemble de données. Mais que montre la régression? Regressons la logistique du rang en pourcentage par rapport à toutes les caractéristiques observables des élèves qui pourraient être liées à leurs capacités, ainsi qu'aux indicateurs de difficulté de la classe:

logistic <- function(p) log(p / (1-p))
fit <- lm(logistic(Prank) ~ as.factor(year) + math + verbal + level, data=data)
summary(fit)

Coefficients:
                  Estimate Std. Error t value Pr(>|t|)    
(Intercept)      -2.577788   0.421579   -6.11  1.5e-09 ***
as.factor(year)2  0.467846   0.150670    3.11   0.0020 ** 
as.factor(year)3  0.984671   0.164614    5.98  3.2e-09 ***
as.factor(year)4  1.109897   0.171704    6.46  1.7e-10 ***
math              0.002599   0.000538    4.83  1.6e-06 ***
verbal            0.002130   0.000514    4.14  3.8e-05 ***
level            -0.208495   0.036365   -5.73  1.4e-08 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Residual standard error: 1.48 on 883 degrees of freedom
Multiple R-squared: 0.0661, Adjusted R-squared: 0.0598 
F-statistic: 10.4 on 6 and 883 DF,  p-value: 3.51e-11 

Les tracés de diagnostic ( plot(fit)) semblent fastastiques: les résidus sont homoscédastiques et magnifiquement normaux (quoique légèrement à queue courte, ce qui ne pose aucun problème); pas de valeurs aberrantes; et aucune influence fâcheuse dans aucune observation.

3.5(9,1.6,3.4,3.9,0.009,0.007,0.7)(,1,3,4,0.010,0.010,) représente un coefficient qui n'a pas été explicitement spécifié).

level07level

(Soit dit en passant, l'utilisation des pourcentages non transformés dans la régression ne modifie pas qualitativement les résultats rapportés ci-dessous.)

spread138

Coefficients:
                  Estimate Std. Error t value Pr(>|t|)    
(Intercept)      -4.902006   0.349924  -14.01  < 2e-16 ***
as.factor(year)2  0.605444   0.130355    4.64  3.9e-06 ***
as.factor(year)3  1.707590   0.134649   12.68  < 2e-16 ***
as.factor(year)4  1.926272   0.136595   14.10  < 2e-16 ***
math              0.004667   0.000448   10.41  < 2e-16 ***
verbal            0.004019   0.000434    9.25  < 2e-16 ***
level            -0.299475   0.026415  -11.34  < 2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Residual standard error: 1.3 on 883 degrees of freedom
Multiple R-squared: 0.282,  Adjusted R-squared: 0.277 
F-statistic: 57.9 on 6 and 883 DF,  p-value: <2e-16

Diagramme d'assignation de classe

spread38spread1

Cette fois, le R-carré est beaucoup amélioré (bien que toujours pas génial). Cependant, tous les coefficients ont augmenté de 20 à 100%. Ce tableau les compare avec quelques simulations supplémentaires:

Simulation Intercept Year.2 Year.3 Year.4 Math Verbal Level R^2
Beta               *    1.0    3.0    4.0 .010   .010     *   *
Spread=1        -2.6    0.5    1.0    1.1 .003   .002 -0.21  7%
Spread=38       -4.9    0.6    1.7    1.9 .005   .004 -0.30 25%
Ability=1       -8.3    0.9    2.6    3.3 .008   .008 -0.63 58%
No error       -11.2    1.1    3.3    4.4 .011   .011 -0.09 88%

spread38ability21abilitysigma0εiδi,jlevel

Cette analyse rapide montre que la régression, au moins telle qu'elle est effectuée ici, va confondre les formes inévitables de variation avec les coefficients. En outre, les coefficients dépendent également (dans une certaine mesure) de la répartition des élèves entre les classes. Cela peut être partiellement pris en compte en incluant les attributs de classe parmi les variables indépendantes dans la régression, comme cela est fait ici, mais même ainsi, l'effet de la distribution des élèves ne disparaît pas.

Tout manque de prévisibilité des performances réelles des élèves, et toute variation de l'apprentissage des élèves et des performances réelles aux examens, font apparemment ramener les estimations des coefficients à zéro. Ils semblent le faire de manière uniforme, ce qui suggère que les coefficients relatifs peuvent encore être significatifs.

whuber
la source
εivipijyijyij
Si votre simulation préserve la corrélation positive entre les capacités non observées et le SAT et d'autres scores, alors les paramètres OLS peuvent être biaisés à la hausse? attiré vers zéro?
JDav
+1, je suis un grand fan de l'utilisation de simulations pour aider à travailler sur des idées statistiques.
gung - Rétablir Monica
3

yij

μij

ln(yij/(1yij))=μij+eij+vi

vieijeijμij

(Ce n'est qu'une idée de mon expérience partiale, les commentaires et les critiques sont plus que bienvenus.)

μijvi

JDav
la source
1
L'idée d'utiliser une transformation logistique est bonne, mais ce type de modèle de régression a des problèmes (comme expliqué dans ma réponse).
whuber
μij
2

ln(p1-p)

Mike Anderson
la source
La régression logistique ne s'applique qu'aux variables de réponse binaires, ce qui ne semble pas être le cas ici. Suggérez-vous peut-être ordinaire régression du logit du pourcentage de rang?
whuber
1
Ni la régression logistique ni la régression linéaire ordinaire ne sont appropriées ici pour les raisons invoquées. De plus, si le modèle doit avoir des résidus gaussiens, je ne vois pas comment cela se traduira par une distribution presque uniforme pour la réponse. La dépendance entre les étudiants individuels dans les classements est ce que je pense être le plus crucial pour l'analyse.
Michael R. Chernick
Je suis d'accord avec Mike. Serait-ce un autre problème de nomenclature? la régression logistique fait également référence au modèle suivant:ln(p/1-p)=βXje+ujepjeest délimité entre 0 et 1.
JDav
@J Dav Je ne trouve aucune référence qui utilise la "régression logistique" dans le sens que vous décrivez.
whuber
1
Je pense qu'il veut faire un modèle linéaire généralisé, avec une distribution gaussienne conditionnelle, avec un lien logit vers la moyenne. (Au moins, je vais supposer que c'est ce qu'il voulait dire.)
Shea Parkes
0

Dans ce cas, un modèle parfait mappera les entrées (quelles que soient les covariables que vous avez) aux sorties (le rang de l'élève dans la classe). Une autre façon de penser est de mapper d'abord les scores, puis de mapper ces scores au rang. Je vais ignorer l'erreur pour l'instant.

score du test: y=βX

rang: r=R(y)

Dans lequel Rest la fonction de classement. Le problème est queRest une fonction non linéaire qui dépend entièrement des données elles-mêmes. Si nous supposons que nous avons une quantité infinie de données, alors nous connaissons la distribution complète dey, et R(y)est essentiellement la fonction de densité cumulée. Il vous indique quel pourcentage de personnes a obtenu un score pire que vous au test, la zone à gauche de votre score.

Cela semble être assez similaire à la forme fonctionnelle du modèle linéaire généralisé. Je pense que c'est pourquoi l'approche de régression logistique a été proposée par @Mike Anderson. Si vos résultats d'examen étaient distribués de manière logistique, alors la fonction de lien à utiliser serait le logit (son inverse est la fonction de densité cumulative qui nous tient à cœur). De même, si les scores étaient normalement distribués, la fonction probit serait la fonction de liaison.

Pour votre régression, la seule façon d'estimer les classements est de dire "étant donné que mes données sont distribuées comme X, ce point est dans le 34e centile". Sinon, comment savez-vous à quoi se traduit une augmentation de deux points de votre score au test en termes de rang? La mise en garde est que vous devez estimer cette distribution afin de choisir votre fonction de lien (certaines formes fonctionnelles vous faciliteront la vie). De plus, ce modèle ne va pas dire "vous étiez le 6e meilleur d'une classe de 38", plutôt "si les résultats des tests étaient distribués comme nous le pensons, votre score vous placerait dans le 15e centile".

alexplanation
la source