Stima delle percentuali come variabile dipendente nella regressione


13

Ho le percentuali di rango di studenti in 38 esami come variabile dipendente nel mio studio. Una percentuale di rango viene calcolata da (rango / numero di studenti di uno studente in un esame). Questa variabile dipendente ha una distribuzione quasi uniforme e voglio stimare gli effetti di alcune variabili sulla variabile dipendente.

Quale approccio di regressione devo usare?


2
La regressione regolare (OLS) non fa ipotesi sulla distribuzione della variabile dipendente, ma fa ipotesi sulla distribuzione dell'errore (come stimato dai residui) da un modello. Se il numero di studenti per esame varia, probabilmente puoi iniziare con la regressione OLS e controllare i presupposti.
Peter Flom - Ripristina Monica

2
Questo è un buon suggerimento, @Peter, ma sono preoccupato per le violazioni più sottili ma importanti delle ipotesi OLS. Il grado di uno studente in un esame dipenderà dagli attributi di tutti gli altri studenti che sostengono l'esame. Questa interdipendenza non viene catturata da alcuna applicazione (di routine) di OLS.
whuber

Un altro modo per apprezzare ciò che sta succedendo qui è considerare l'istanza più semplice di questo problema, in cui ogni "esame" coinvolge esattamente due studenti. La variabile dipendente indica quale studente ha fatto meglio. Se consideriamo ogni esame come una gara, questo equivale a organizzare un torneo. La domanda, in effetti, vuole trovare una formula per la "forza" di ciascun giocatore in termini di alcune variabili esplicative.
whuber

Hai ragione @whuber. Come affrontare questo? Penso che un modello IRT lo farebbe, ma è passato molto tempo da quando li ho studiati.
Peter Flom - Ripristina Monica

@whuber Penso che IRT potrebbe essere una possibilità, ad esempio un probit ordinato (o logit). Ma è anche possibile considerare il rango percentuale come una variabile continua limitata (come la regressione logistica suggerita da Mike), questa sarebbe un'approssimazione valida , mentre il probit ordinato sarebbe un modello diretto al problema. Il vantaggio della logistica è la parsimonia; per tenere conto della correlazione degli studenti, potrebbe essere implementato uno stimatore della varianza bianca o sandwich. Ho capito che il campione ha 38 esami per diversi studenti (longitudinali), quindi questo dovrebbe essere possibile.
JDav,

Risposte:


3

Se stai lavorando con Stata dai un'occhiata al seguente esempio: http://www.ats.ucla.edu/stat/stata/faq/proportion.htm

Ecco una citazione da questa pagina Web:

"Come si fa la regressione quando la variabile dipendente è una proporzione?

I dati di proporzione hanno valori compresi tra zero e uno. Naturalmente, sarebbe bello che anche i valori previsti rientrino tra zero e uno. Un modo per ottenere ciò è utilizzare un modello lineare generalizzato (glm) con un collegamento logit e la famiglia binomiale. Includeremo la robusta opzione nel modello glm per ottenere solidi errori standard che saranno particolarmente utili se abbiamo specificato erroneamente la famiglia di distribuzione ".


2
È carino, e in altri contesti sarebbe un ottimo consiglio, ma usare un glm non risolverà i problemi identificati nella mia risposta.
whuber


9

Sinossi

I risultati della regressione possono avere un valore limitato se interpretati attentamente. Le inevitabili forme di variazione faranno sì che le stime dei coefficienti si riducano sostanzialmente verso lo zero. È necessario un modello migliore che gestisca le variazioni in un modo più appropriato.

(Un modello di massima verosimiglianza può essere costruito ma può essere impraticabile a causa del calcolo necessario, che comporta una valutazione numerica di integrali multidimensionali. Il numero di dimensioni è uguale al numero di studenti iscritti nelle classi.)

introduzione

Come narrativa per informare la nostra intuizione, immagina che questi 38 esami siano stati svolti in 38 corsi separati durante un semestre in una piccola scuola con l'iscrizione di 200 studenti universitari. In una situazione realistica quegli studenti avranno abilità ed esperienze diverse. Come misure surrogate di queste abilità ed esperienze potremmo prendere, diciamo, punteggi sulla matematica SAT e sui test verbali e l'anno al college (da 1 a 4).

In genere, gli studenti si iscriveranno ai corsi in base alle loro capacità e interessi. Le matricole seguono corsi introduttivi e i corsi introduttivi sono popolati principalmente da matricole. Upperclassmen e matricole di talento e studenti del secondo anno seguono corsi avanzati e di livello universitario. Questa selezione stratifica parzialmente gli studenti modo che le capacità innate degli studenti all'interno di qualsiasi classe siano in genere più omogenee della diffusione delle abilità in tutta la scuola.

Pertanto, gli studenti più capaci possono trovarsi a segnare vicino alla parte inferiore delle classi difficili e avanzate in cui si iscrivono, mentre gli studenti meno capaci possono segnare vicino alla cima delle classi introduttive facili che prendono. Ciò può confondere un tentativo diretto di mettere in relazione i gradi degli esami direttamente con gli attributi degli studenti e delle classi.

Analisi

Indicizza gli studenti con e lascia che gli attributi dello studente i siano dati dal vettore x i . Indicizza le classi con j e lascia che gli attributi della classe j siano dati dal vettore z j . L'insieme degli studenti iscritti alla classe j è A jiixijjzjjAj .

Assumere la "forza" di ogni studente è una funzione della loro attributi più qualche valore casuale, che può anche avere media zero:si

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

Modelliamo l'esame nella classe aggiungendo valori casuali indipendenti alla forza di ogni studente iscritto nella classe e convertendoli in gradi. Pertanto, se lo studente i è iscritto nella classe j , il suo grado relativo r i , j è determinato dalla loro posizione nella matrice ordinata di valorijijri,j

(sk+δk,j,kAj).

Questa posizione è divisa per una in più rispetto alla registrazione totale della classe per dare alla variabile dipendente il grado percentuale:ri,j

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

Sostengo che i risultati della regressione dipendono (abbastanza) dalle dimensioni e dalla struttura dei valori casuali (non osservati) e δ i , j . εiδi,j I risultati dipendono anche da come gli studenti sono iscritti alle lezioni. Ciò dovrebbe essere intuitivamente ovvio, ma ciò che non è così ovvio - e sembra difficile da analizzare teoricamente - è come e quanto i valori non osservati e le strutture di classe influenzano la regressione.

Simulazione

Senza troppi sforzi possiamo simulare questa situazione per creare e analizzare alcuni dati di esempio. Un vantaggio della simulazione è che può incorporare i veri punti di forza degli studenti, che in realtà non sono osservabili. Un altro è che possiamo variare le dimensioni tipiche dei valori non osservati e le assegnazioni di classe. Ciò fornisce un "sandbox" per valutare i metodi analitici proposti come la regressione.

Per iniziare, impostiamo il generatore di numeri casuali per risultati riproducibili e specificiamo la dimensione del problema. Uso Rperché è disponibile per chiunque.

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

Per fornire realismo, creare n.classesclassi di difficoltà diverse su due scale (matematica e verbale, con una correlazione negativa), condotte a vari livelli accademici (che vanno da 1 = introduttivo a 7 = ricerca) e con facilità variabile. (In una classe "facile", le differenze tra le quantità di apprendimento degli studenti possono essere grandi e / o l'esame può fornire poca discriminazione tra gli studenti. Questo è modellato da termini casuali che, per la classe j tendono ad essere grandi I risultati dell'esame saranno quindi quasi imprevedibili dai dati sulla forza dello studente. Quando la lezione non è "facile", questi termini casuali sono trascurabilmente piccoli e i punti di forza dello studente possono determinare perfettamente la classifica dell'esame.)δ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")

Gli studenti sono distribuiti tra i quattro anni e dotati di valori casuali dei loro attributi. Non ci sono correlazioni tra nessuno di questi attributi:

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

Il modello è che ogni studente ha una "forza" intrinseca determinata in parte dai suoi attributi e in parte dalla sua "abilità", che è il valore . I coefficienti di resistenza , che determinano la forza in termini di altri attributi, sono ciò che la successiva analisi dei dati cercherà di stimare. Se vuoi giocare con questa simulazione, fallo cambiando . Di seguito è riportato un insieme interessante e realistico di coefficienti che riflette l'apprendimento continuo degli studenti durante il college (con una grande quantità tra gli anni 2 e 3); dove 100 punti su ciascuna parte del SAT valgono circa un anno di scuola; e dove circa la metà della variazione è dovuta ai valori di "abilità" non rilevati dai punteggi SAT o dall'anno a scuola.ε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

(Tieni presente che students$abilitynon è osservabile: si tratta di una deviazione apparentemente casuale tra la forza prevista dagli altri attributi osservabili e la forza effettiva degli esami. Per rimuovere questo effetto casuale, impostato beta$abilitysu zero beta$sigma, moltiplicheranno i easevalori: è sostanzialmente la deviazione standard di rispetto alla gamma di punti di forza degli studenti in un determinato corso. I valori tra 0,01 e 0,2 circa mi sembrano ragionevoli.)δi,j.01.2

Lascia che gli studenti scelgano i corsi per abbinare le loro abilità. Una volta che lo fanno, possiamo calcolare le dimensioni della classe e riporre quelle con il classesdataframe per un uso successivo. Il valore di spreadin the assignments <-...line determina quanto gli studenti sono suddivisi in classi in base all'abilità. Un valore vicino a essenzialmente abbina gli studenti più deboli ai corsi più semplici. Un valore vicino al numero di classi diffonde gli studenti un po 'di più. Valori molto più grandi di quello iniziano a diventare irrealistici, perché tendono a mettere gli studenti più deboli nei corsi più difficili.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)))

(Come esempio di ciò che ha realizzato questo passaggio, vedere la figura più avanti).

Ora applica il modello: le abilità degli studenti di ogni classe sono variate indipendentemente - più per esami facili, meno per esami difficili (discriminanti) - per determinare i loro punteggi degli esami. Questi sono riassunti in gradi e "scherzi", che sono percentuali di rango. Gli scherzi per una classe di studenti vanno da 1 / ( n + 1 ) a n / ( n + 1 ) con incrementi di 1 / ( n + 1 ) . Ciò consentirà in seguito di applicare trasformazioni come la funzione logistica (che non è definita se applicata a valori din1/(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 questi dati grezzi alleghiamo gli attributi di classe e studente per creare un set di dati adatto all'analisi:

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

Orientiamoci ispezionando un campione casuale di dati:

> 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

Il record 118, ad esempio, afferma che lo studente n. 28 si è iscritto alla classe n. 1 e ha ottenuto il 22 ° (dal basso) nell'esame per un punteggio percentuale di 0,957. Il livello generale di difficoltà di questa classe era 0,0523 (molto facile). Sono stati arruolati 22 studenti. Questo studente è un secondo anno (2 ° anno) con 590 matematica, 380 punteggi SAT verbali. La loro forza accademica intrinseca complessiva è di 16,9. All'epoca erano iscritti in quattro classi.

Questo set di dati viene confrontato con la descrizione nella domanda. Ad esempio, i ranghi percentuali sono quasi uniformi (come devono essere per qualsiasi set di dati completo, poiché i ranghi percentuali per una singola classe hanno una distribuzione uniforme discreta).

Ricorda, in virtù dei coefficienti in beta, questo modello ha assunto una forte connessione tra i punteggi degli esami e le variabili mostrate in questo set di dati. Ma cosa mostra la regressione? Ritiriamo la logistica della classifica percentuale rispetto a tutte le caratteristiche osservabili degli studenti che potrebbero essere correlate alle loro capacità, nonché agli indicatori di difficoltà di 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 

I diagrammi diagnostici ( plot(fit)) sembrano veloci: i residui sono omoscedastici e meravigliosamente normali (anche se leggermente corti, il che non è un problema); nessun valore anomalo; e nessuna influenza spiacevole in nessuna osservazione.

3.5(9,1.6,3.4,3.9,0.009,0.007,0.7)(,1,3,4,0.010,0.010,) sta per un coefficiente che non è stato esplicitamente specificato).

level07level

(A proposito, l'utilizzo dei gradi percentuali non trasformati nella regressione non modifica qualitativamente i risultati riportati di seguito.)

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

Diagramma di assegnazione di classe

spread38spread1

Questa volta l'R-quadrato è molto migliorato (anche se non ancora eccezionale). Tuttavia, tutti i coefficienti sono aumentati del 20 - 100%. Questa tabella li confronta con alcune simulazioni aggiuntive:

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

Questa rapida analisi mostra che la regressione, almeno come eseguita qui, confonderà le inevitabili forme di variazione con i coefficienti. Inoltre, i coefficienti dipendono (in una certa misura) da come gli studenti sono distribuiti tra le classi. Questo può essere parzialmente accolto includendo gli attributi di classe tra le variabili indipendenti nella regressione, come fatto qui, ma anche così l'effetto della distribuzione degli studenti non scompare.

Qualsiasi mancanza di prevedibilità delle prestazioni reali degli studenti e qualsiasi variazione dell'apprendimento degli studenti e delle prestazioni effettive durante gli esami, apparentemente fanno sì che le stime dei coefficienti si riducano verso lo zero. Sembrano farlo in modo uniforme, suggerendo che i coefficienti relativi possono essere ancora significativi.


εivipijyijyij

Se la tua simulazione preserva la correlazione positiva tra abilità non osservate e SAT e altri punteggi, i parametri OLS potrebbero essere distorti verso l'alto, giusto? (Il bias dell'asintolo è proporzionale alla correlazione dei termini controllo-casuale), quindi questo potrebbe spiegare che i tuoi parametri "negativi" sono attratto verso zero?
JDav,

+1, sono un grande fan dell'utilizzo di simulazioni per aiutare a elaborare idee statistiche.
gung - Ripristina Monica

3

yij

μij

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

vieijeijμij

(Questa è solo un'idea della mia esperienza parziale, commenti e critiche sono più che benvenuti.)

μijvi


1
L'idea di utilizzare una trasformazione logistica è buona, ma questo tipo di modello di regressione ha problemi (come spiegato nella mia risposta).
whuber

Ho appena completato la risposta con il metodo di stima in correlazione tra le capacità non osservate e le osservabili all'interno μioj seguendo le osservazioni di @whuber
JDav

2

Potresti voler provare la regressione logistica. La trasformazione del logitln(p1-p) distribuirà la tua variabile di risposta sulla linea reale in modo da non ottenere assurde percentuali di rango previste come -3% o + 110%.


La regressione logistica si applica solo alle variabili di risposta binarie, che qui non sembra essere il caso. Stai forse suggerendo una regressione ordinaria del logit della percentuale di rango?
whuber

1
Né la regressione logistica né la normale regressione lineare sono appropriate qui per le ragioni fornite da whuber. Inoltre, se il modello prevede residui gaussiani, non vedo come questo si tradurrà in una distribuzione quasi uniforme per la risposta. La dipendenza tra i singoli studenti nelle classifiche è ciò che penso sia più cruciale per l'analisi.
Michael R. Chernick,

Sono d'accordo con Mike. Potrebbe essere un'altra questione di nomenclatura? la regressione logistica si riferisce anche al seguente modello:ln(p/1-p)=β'Xio+uio dove pioè limitato tra 0 e 1.
JDav

@J Dav Non riesco a trovare alcun riferimento che usi "regressione logistica" nel senso che descrivi.
whuber

1
Penso che intende fare un modello lineare generalizzato, con una distribuzione gaussiana condizionale, con un collegamento logitico alla media. (Almeno suppongo che sia quello che intendeva dire.)
Shea Parkes il

0

Un modello perfetto in questo caso mapperà gli input (qualunque sia la covariata che hai) sugli output (il grado dello studente nella classe). Un altro modo di pensare a questo è mappando prima i punteggi e quindi mappando tali punteggi al rango. Per ora ignorerò l'errore.

punteggio del test: y=ΣβX

rango: r=R(y)

In quale Rè la funzione di classificazione. Il problema è cheRè una funzione non lineare che dipende interamente dai dati stessi. Se assumiamo di avere una quantità infinita di dati, allora conosciamo la distribuzione completa diy, e R(y)è essenzialmente la funzione di densità cumulativa. Ti dice quale percentuale delle persone ha segnato peggio di te nel test, l'area a sinistra del tuo punteggio.

Questo sembra essere abbastanza simile alla forma funzionale del modello lineare generalizzato. Penso che sia per questo che l'approccio di regressione logistica è stato proposto da @Mike Anderson. Se i punteggi degli esami sono stati logisticamente distribuiti, la funzione di collegamento da utilizzare sarebbe il logit (il suo inverso è la funzione di densità cumulativa che ci interessa). Allo stesso modo, se i punteggi fossero normalmente distribuiti, la funzione probit sarebbe la funzione link.

Per la tua regressione, l'unico modo per stimare i ranghi è dire "dato che i miei dati sono distribuiti come X, questo punto è nel 34 ° percentile". Altrimenti, come fai a sapere a cosa si traduce un aumento di due punti nel punteggio del test in termini di classifica? L'avvertenza è che devi stimare quella distribuzione per scegliere la tua funzione di collegamento (alcune forme funzionali renderanno la tua vita molto più semplice). Inoltre, questo modello non dirà "sei stato il sesto migliore di una classe di 38", piuttosto "se i punteggi dei test fossero distribuiti come pensiamo che siano, il tuo punteggio ti metterebbe nel 15 ° percentile".

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.