Estimando porcentajes como la variable dependiente en regresión

13

Tengo los porcentajes de rango de los estudiantes en 38 exámenes como la variable dependiente en mi estudio. Un porcentaje de rango se calcula por (rango / número de estudiantes en un examen). Esta variable dependiente tiene una distribución casi uniforme y quiero estimar los efectos de algunas variables en la variable dependiente.

¿Qué enfoque de regresión uso?

siren99
fuente
2
La regresión regular (OLS) no hace suposiciones sobre la distribución de la variable dependiente, hace suposiciones sobre la distribución del error (según lo estimado por los residuos) de un modelo. Si el número de estudiantes por examen varía, probablemente pueda comenzar con la regresión OLS y verificar los supuestos.
Peter Flom - Restablece a Monica
2
Esa es una buena sugerencia, @Peter, pero me preocupan las violaciones más sutiles pero importantes de los supuestos de OLS. El rango de un estudiante en un examen dependerá de los atributos de todos los demás estudiantes que toman el examen. Esta interdependencia no es capturada por ninguna aplicación (de rutina) de OLS.
whuber
Otra forma de apreciar lo que está sucediendo aquí es considerar la instancia más simple de este problema, donde cada "examen" involucra exactamente a dos de los estudiantes. La variable dependiente indica qué estudiante obtuvo mejores resultados. Si pensamos en cada examen como un concurso, esto es equivalente a celebrar un torneo. La pregunta, en efecto, quiere llegar a una fórmula para la "fuerza" de cada jugador en términos de algunas variables explicativas.
whuber
Tienes razón @whuber. ¿Cómo abordar esto? Creo que un modelo IRT lo haría, pero ha pasado mucho tiempo desde que los estudié.
Peter Flom - Restablece a Monica
@whuber Creo que IRT podría ser una posibilidad, un probit ordenado (o logit) por ejemplo. Pero también es posible considerar el rango porcentual como una variable continua limitada (como la regresión logística sugerida por Mike), esta sería una aproximación válida , mientras que el probit ordenado sería un modelo directo al problema. La ventaja de la logística es la parsimonia; Para tener en cuenta la correlación de los estudiantes, se podría implementar un estimador de varianza blanco o sándwich. Comprendí que la muestra tiene 38 exámenes para varios estudiantes (longitudinales), por lo que esto debería ser posible.
JDav

Respuestas:

3

Si está trabajando con Stata, eche un vistazo al siguiente ejemplo: http://www.ats.ucla.edu/stat/stata/faq/proportion.htm

Aquí hay una cita de esta página web:

"¿Cómo se regresa cuando la variable dependiente es una proporción?

Los datos de proporción tienen valores que se encuentran entre cero y uno. Naturalmente, sería bueno que los valores predichos también caigan entre cero y uno. Una forma de lograr esto es usar un modelo lineal generalizado (glm) con un enlace logit y la familia binomial. Incluiremos la opción robusta en el modelo glm para obtener errores estándar robustos que serán particularmente útiles si hemos especificado mal la familia de distribución ".

majom
fuente
2
Eso es bueno, y en otros contextos sería un gran consejo, pero usar un glm no solucionará los problemas identificados en mi respuesta.
whuber
9

Sinopsis

Los resultados de la regresión pueden tener un valor limitado cuando se interpretan cuidadosamente. Las formas inevitables de variación harán que las estimaciones de los coeficientes se reduzcan sustancialmente hacia cero. Se necesita un mejor modelo que maneje la variación de una manera más apropiada.

(Se puede construir un modelo de máxima verosimilitud, pero puede ser impracticable debido al cálculo necesario, que implica la evaluación numérica de integrales multidimensionales. El número de dimensiones es igual al número de estudiantes matriculados en las clases).

Introducción

Como narración para informar nuestra intuición, imagine que estos 38 exámenes se dieron en 38 cursos separados durante un semestre en una escuela pequeña con una matrícula de 200 estudiantes universitarios. En una situación realista, esos estudiantes tendrán diferentes habilidades y experiencias. Como medidas sustitutivas de estas habilidades y experiencias que podríamos tomar, digamos, puntajes en las pruebas de matemáticas y verbales del SAT y el año en la universidad (1 a 4).

Por lo general, los estudiantes se inscribirán en cursos de acuerdo con sus habilidades e intereses. Los estudiantes de primer año toman cursos de introducción y los cursos de introducción están poblados principalmente por estudiantes de primer año. Los estudiantes de segundo año y los estudiantes de primer año y estudiantes de segundo año con talento toman los cursos avanzados y de posgrado. Esta selección estratifica parcialmente a los estudiantes. para que las habilidades innatas de los estudiantes dentro de cualquier clase sean típicamente más homogéneas que la difusión de habilidades en toda la escuela.

Por lo tanto, los estudiantes más capaces pueden obtener una calificación cercana al final de las clases difíciles y avanzadas en las que se inscriben, mientras que los estudiantes menos capaces pueden obtener una calificación cercana a la parte superior de las clases introductorias fáciles que toman. Esto puede confundir un intento directo de relacionar los rangos del examen directamente con los atributos de los estudiantes y las clases.

Análisis

Indice a los estudiantes con y deje que los atributos del estudiante i sean dados por el vector x i . Indice las clases con j y deje que los atributos de la clase j sean dados por el vector z j . El conjunto de estudiantes matriculados en la clase j es A jiixijjzjjAj .

Asumir la "fuerza" de cada estudiante es una función de sus atributos más algo de valor aleatorio, que puede así tener media cero:si

si=f(xi,β)+εi.

Modelamos el examen en la clase agregando valores aleatorios independientes a la fortaleza de cada estudiante inscrito en la clase y convirtiéndolos en rangos. Por lo tanto, si el estudiante i está inscrito en la clase j , su rango relativo r i , j está determinado por su posición en la matriz ordenada de valoresjijri,j

(sk+δk,j,kAj).

Esta posición se divide por uno más que la inscripción total de la clase para dar la variable dependiente, el rango de porcentaje:ri,j

pi,j=ri,j1+|Aj|.

Afirmo que los resultados de la regresión dependen (bastante) de los tamaños y la estructura de los valores aleatorios (no observados) y δ i , j . εiδi,j Los resultados también dependen precisamente de cómo se matriculan los estudiantes en las clases. Esto debería ser intuitivamente obvio, pero lo que no es tan obvio, y parece difícil de analizar teóricamente, es cómo y cuánto afectan los valores no observados y las estructuras de clase a la regresión.

Simulación

Sin demasiado esfuerzo podemos simular esta situación para crear y analizar algunos datos de muestra. Una ventaja de la simulación es que puede incorporar verdadero fortalezas de los estudiantes, que en realidad no son observables. Otra es que podemos variar los tamaños típicos de los valores no observados, así como las asignaciones de clase. Esto proporciona una "caja de arena" para evaluar los métodos analíticos propuestos, como la regresión.

Para comenzar, configuremos el generador de números aleatorios para obtener resultados reproducibles y especifiquemos el tamaño del problema. Lo uso Rporque está disponible para cualquiera.

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

Para proporcionar realismo, cree n.classesclases de dificultades variables en dos escalas (matemática y verbal, con una correlación negativa), realizadas en diferentes niveles académicos (que van desde 1 = introductorio a 7 = investigación), y con facilidad variable. (En una clase "fácil", las diferencias entre las cantidades de aprendizaje de los estudiantes pueden ser grandes y / o el examen puede proporcionar poca discriminación entre los estudiantes. Esto se modela mediante términos aleatorios que, para la clase j, tienden a ser grandes Los resultados del examen serán casi impredecibles a partir de los datos de fortaleza del alumno. Cuando la clase no es "fácil", estos términos aleatorios son insignificantemente pequeños y las fortalezas del alumno pueden determinar perfectamente la clasificación del examen).δi,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")

Los estudiantes se reparten entre los cuatro años y están dotados de valores aleatorios de sus atributos. No hay correlaciones entre ninguno de estos atributos:

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")

El modelo es que cada estudiante tiene una "fuerza" inherente determinada en parte por sus atributos y en parte por su "habilidad", que es el valor . Los coeficientes de fuerza , que determinan la fuerza en términos de otros atributos, son lo que el análisis de datos posterior buscará estimar. Si quieres jugar con esta simulación, hazlo cambiando . El siguiente es un conjunto interesante y realista de coeficientes que reflejan el aprendizaje continuo de los estudiantes durante la universidad (con una gran cantidad entre los años 2 y 3); donde 100 puntos en cada parte del SAT valen aproximadamente un año de escuela; y donde aproximadamente la mitad de la variación se debe a los valores de "capacidad" no capturados por los puntajes del SAT o el año en la escuela.εibetabeta

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

(Tenga en cuenta que students$abilityno es observable: es una desviación aparentemente aleatoria entre la fuerza predicha de los otros atributos observables y la fuerza real en los exámenes. Para eliminar este efecto aleatorio, establecer beta$abilityen cero. beta$sigmaMultiplicará los easevalores: es básicamente la desviación estándar de relación con el rango de fortalezas de los estudiantes en un curso dado. Valores alrededor de .01 a .2 más o menos me parecen razonables).δi,j.01.2

Deje que los estudiantes elijan cursos que coincidan con sus habilidades Una vez que lo hacen, podemos calcular los tamaños de clase y classesguardarlos con el marco de datos para su uso posterior. El valor de spreaden la assignments <-...línea determina qué tan cerca los estudiantes están divididos en clases por habilidad. Un valor cercano a esencialmente combina a los estudiantes más débiles con los cursos más fáciles. Un valor cercano al número de clases distribuye a los estudiantes un poco más. Valores mucho más grandes que eso comienzan a volverse poco realistas, porque tienden a colocar a los estudiantes más débiles en los cursos más difíciles.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)))

(Como ejemplo de lo que ha logrado este paso, vea la figura más abajo).

Ahora aplique el modelo: las habilidades de los estudiantes en cada clase varían de forma independiente, más para exámenes fáciles, menos para exámenes difíciles (discriminatorios), para determinar sus puntajes de examen. Estos se resumen como rangos y "travesuras", que son porcentajes de rango. Las bromas para una clase de estudiantes varían de 1 / ( n + 1 ) a n / ( n + 1 ) en incrementos de 1 / ( n + 1 ) . Más adelante, esto permitirá aplicar transformaciones, como la función logística (que no está definida cuando se aplica a valores den1/(n+1)n/(n+1)1/(n+1) o 1 ).01

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))

A estos datos en bruto adjuntamos los atributos del alumno y la clase para crear un conjunto de datos adecuado para el análisis:

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

Orientémonos inspeccionando una muestra aleatoria de los datos:

> 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

El registro 118, por ejemplo, dice que el estudiante # 28 se matriculó en la clase # 1 y obtuvo el puesto 22 (desde abajo) en el examen para un rango de porcentaje de 0.957. El nivel general de dificultad de esta clase fue 0.0523 (muy fácil). Se inscribieron un total de 22 estudiantes. Este estudiante es un estudiante de segundo año (año 2) con 590 matemáticas, 380 puntajes verbales del SAT. Su fuerza académica general inherente es de 16.9. Estaban inscritos en cuatro clases en el momento.

Este conjunto de datos se corresponde con la descripción en la pregunta. Por ejemplo, los rangos de porcentaje son casi uniformes (como deben ser para cualquier conjunto de datos completo, porque los rangos de porcentaje para una sola clase tienen una distribución uniforme discreta).

Recuerde, en virtud de los coeficientes en beta, este modelo ha asumido una fuerte conexión entre los puntajes de los exámenes y las variables que se muestran en este conjunto de datos. Pero, ¿qué muestra la regresión? Regresemos la logística de la clasificación porcentual contra todas las características observables de los estudiantes que podrían estar relacionadas con sus habilidades, así como los indicadores de dificultad de clase:

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 

Las gráficas de diagnóstico ( plot(fit)) parecen fastásticas: los residuos son homoscedasticos y bellamente normales (aunque de cola ligeramente corta, lo cual no es problema); sin valores atípicos; y ninguna influencia desfavorable en ninguna observación.

3.5(9,1.6,3.4,3.9,0.009,0.007,0.7)(,1,3,4,0.010,0.010,) representa un coeficiente que no se especificó explícitamente).

level07level

(Por cierto, el uso de los rangos de porcentaje no transformados en la regresión no cambia cualitativamente los resultados informados a continuación).

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

Class assignment plot

spread38spread1

Esta vez, el R cuadrado se ha mejorado mucho (aunque todavía no es genial). Sin embargo, todos los coeficientes han aumentado en un 20 - 100%. Esta tabla los compara junto con algunas simulaciones adicionales:

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%

spread38y cambiando abilityde2 a 1(que es una evaluación muy optimista de cuán predecibles son las fortalezas de los estudiantes) arrojó la penúltima línea. Ahora las estimaciones (para el año del estudiante y los puntajes del SAT del estudiante) se están acercando razonablemente a los valores reales. Por último, el establecimiento de ambos abilityy sigmaal0 0, para eliminar los términos de error εyo y δyo,jen conjunto, da una alta R al cuadrado y produce estimaciones cercanas a los valores correctos. (Es de destacar que el coeficiente para levelentonces disminuye en un orden de magnitud).

Este análisis rápido muestra que la regresión, al menos como se realiza aquí, va a confundir formas inevitables de variación con los coeficientes. Además, los coeficientes también dependen (en cierta medida) de cómo se distribuyen los estudiantes entre las clases. Esto puede acomodarse parcialmente al incluir atributos de clase entre las variables independientes en la regresión, como se hace aquí, pero aun así el efecto de la distribución del estudiante no desaparece.

Cualquier falta de previsibilidad del rendimiento real de los estudiantes, y cualquier variación en el aprendizaje de los estudiantes y el rendimiento real en los exámenes, aparentemente hacen que las estimaciones de los coeficientes se reduzcan a cero. Parecen hacerlo de manera uniforme, lo que sugiere que los coeficientes relativos aún pueden ser significativos.

whuber
fuente
Estoy de acuerdo con sus reclamos con respecto a εyo (que en respuesta corresponde a vyo) y espero tener la imagen completa de su análisis. Resultados enpagyojdependería de características no observables, que pueden estar correlacionadas con los observables, como sus puntajes SAT (y otros). Pero no es trivial eliminar el efecto individual no observable mediante la aplicación de una transformación "dentro" (yyoj-media(yyoj)) o cualquier otra (diferencia)? (+1)
JDav
Si su simulación conserva la correlación positiva entre las habilidades no observadas y el SAT y otros puntajes, entonces los parámetros de OLS pueden estar sesgados hacia arriba, ¿verdad? atraído hacia cero?
JDav
+1, I'm a big fan of using simulations to help work through statistical ideas.
gung - Reinstate Monica
3

The measure @user13203 proposes may be considered as a continous bounded underperformance score, the lower the better the performance: yij i-th student underperformance at j-th exam.

Using a logit linearizing transformation where μij may depend on observable student or exams characteristics :

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

student's unobserved skills are modeled through the random component vi while eij models other non systematic unobservables. Correlation between responses (examinations) may be addresed by assming a general covariance structure for eij. Why not a White (or sandwich/robust) variance structure ? Moreover, some of the responses correlation can be accounted within the μij (conditional dependence).

(This is just an idea from my biased experience, comments and critics are more than welcome.)

Unobservable abilities are likely to be correlated with students or exams observables attributes within μij. This assumptions makes this model a RE with correlated error components, that can be estimated by ML or a two stage estimator: first stage: a within (or analog) transformation that eliminates vi. Second stage: OLS on the transformed model.

JDav
fuente
1
The idea of using a logistic transformation is a good one, but this kind of regression model has problems (as explained in my answer).
whuber
Just complemented the answer with the estimation method under correlation between the unobserved abilities and observables within μij following @whuber remarks
JDav
2

You might want to try logistic regression. The logit transform ln(p1p) will spread your response variable out over the real line so you won't get absurd predicted rank percentages like -3% or +110%.

Mike Anderson
fuente
Logistic regression applies only to binary response variables, which does not appear to be the case here. Are you perhaps suggesting ordinary regression of the logit of the rank percentage?
whuber
1
Neither logistic regression nor ordinary linear regression is appropriate here for the reasons whuber gave. Also if the model is to have Gaussian residuals I don't see how that is going to translate into a near uniform distribution for the response. The dependence between individual students in the rankings is what I think is most crucial to the analysis.
Michael R. Chernick
I agree with Mike. Could this be another nomenclature issue ? logistic regression is also refered to the following model: ln(p/1p)=βxi+ui where pi is bounded between 0 and 1.
JDav
@J Dav I am unable to find any reference that uses "logistic regression" in the sense you describe.
whuber
1
I think he mean to do a Generalized Linear Model, with a conditional Gaussian distribution, with a logit-link to the mean. (At least I'm going to assume that's what he meant.)
Shea Parkes
0

A perfect model in this case will map the inputs (whatever covariates you have) to the outputs (the rank of the student in the class). Another way to think of this is by mapping first to the scores, and then mapping those scores to the rank. I'm going to ignore error for now.

test score: y=βx

rank: r=R(y)

In which R is the ranking function. The problem is that R is a non-linear function that depends entirely on the data itself. If we assume that we have an infinite amount of data, then we know the complete distribution of y, and R(y) is essentially the cumulative density function. It tells you what percent of people scored worse than you on the test, the area to the left of your score.

This appears to be quite similar to the functional form of the generalized linear model. I think this is why the logistic regression approach was proposed by @Mike Anderson. If your exam scores were logistically distributed, then the link function to use would be the logit (its inverse is the cumulative density function we care about). Similarly, if the scores were normally distributed, the probit function would be the link function.

For your regression, the only way to estimate ranks is to say "given that my data are distributed as X, this point is in the 34th percentile". Otherwise, how do you know what a two point increase in your test score translates to in terms of rank? The caveat is that you have to estimate that distribution in order to choose your link function (certain functional forms will make your life a lot easier). Furthermore, this model isn't going to say "you were the 6th best out of a class of 38", rather "if the test scores were distributed how we think they are, your score would put you in the 15th percentile."

alexplanation
fuente