Zusammenfassung
Regressionsergebnisse können bei sorgfältiger Interpretation einen begrenzten Wert haben. Unvermeidbare Variationsformen führen dazu, dass die Koeffizientenschätzungen erheblich gegen Null schrumpfen. Es wird ein besseres Modell benötigt, das mit Abweichungen angemessener umgeht.
(Ein Maximum-Likelihood-Modell kann erstellt werden, ist jedoch möglicherweise aufgrund der erforderlichen Berechnung, bei der mehrdimensionale Integrale numerisch ausgewertet werden, nicht praktikabel. Die Anzahl der Dimensionen entspricht der Anzahl der in den Klassen eingeschriebenen Schüler.)
Einführung
Um unsere Intuition zu informieren, stellen Sie sich vor, dass diese 38 Prüfungen in 38 verschiedenen Kursen während eines Semesters an einer kleinen Schule mit 200 eingeschriebenen Collegestudenten abgehalten wurden. In einer realistischen Situation verfügen diese Schüler über unterschiedliche Fähigkeiten und Erfahrungen. Als Ersatzmaßnahme für diese Fähigkeiten und Erfahrungen können wir beispielsweise die Ergebnisse der SAT-Mathematik- und Verbaltests und des College-Jahres (1 bis 4) heranziehen.
In der Regel schreiben sich die Schüler entsprechend ihren Fähigkeiten und Interessen in die Kurse ein. Erstsemester belegen Einführungskurse und Einführungskurse werden hauptsächlich von Erstsemestern besucht. Oberschüler, talentierte Neulinge und Studenten im zweiten Studienjahr belegen die Kurse für Fortgeschrittene und Hochschulabsolventen. Diese Auswahl schichtet die Schüler teilweise so, dass die angeborenen Fähigkeiten der Schüler einer Klasse in der Regel homogener sind als die Verteilung der Fähigkeiten in der gesamten Schule.
Auf diese Weise können die fähigsten Schüler in den schwierigsten, fortgeschrittenen Klassen, in denen sie sich einschreiben, ganz unten punkten, während die am wenigsten fähigen Schüler in den einfachen Einführungsklassen, die sie belegen, ganz oben punkten. Dies kann einen direkten Versuch verwechseln, die Prüfungsränge direkt mit den Attributen der Schüler und der Klassen in Beziehung zu setzen.
Analyse
Indiziere die Schüler mit und lasse die Attribute des Schülers i durch den Vektor x i gegeben werden . Indiziere die Klassen mit j und lasse die Attribute der Klasse j durch den Vektor z j gegeben sein . Die Gruppe der in Klasse j eingeschriebenen Schüler ist A j .iixijjzjjAj
Angenommen , die „Stärke“ von jedem Schüler eine Funktion ihrer Attribute plus einigen Zufallswerten, die auch einen Mittelwert von Null aufweisen kann:si
si=f(xi,β)+εi.
Wir modellieren die Prüfung in Klasse indem wir der Stärke jedes in der Klasse eingeschriebenen Schülers unabhängige Zufallswerte hinzufügen und diese in Ränge umwandeln. Wenn der Schüler i in der Klasse j eingeschrieben ist , wird sein relativer Rang r i , j von seiner Position in der sortierten Wertereihe bestimmtjijri,j
(sk+δk,j,k∈Aj).
Diese Position wird durch eins mehr als die gesamte Klasseneinschreibung geteilt, um der abhängigen Variablen den prozentualen Rang zu geben:ri,j
pi,j=ri,j1+|Aj|.
Ich behaupte, dass die Regressionsergebnisse (ziemlich viel) von der Größe und Struktur der zufälligen (nicht beobachteten) Werte und δ i , j abhängen . εiδi,j Die Ergebnisse hängen auch davon ab, wie genau die Schüler in den Unterricht eingeschrieben sind. Dies sollte intuitiv offensichtlich sein, aber was nicht so offensichtlich ist - und theoretisch schwer zu analysieren scheint - ist, wie und wie stark sich die unbeobachteten Werte und Klassenstrukturen auf die Regression auswirken.
Simulation
Ohne großen Aufwand können wir diese Situation simulieren , um einige Beispieldaten zu erstellen und zu analysieren. Ein Vorteil der Simulation ist, dass sie die wahren Stärken der Schüler einbeziehen kann , die in der Realität nicht erkennbar sind. Ein weiterer Grund ist, dass wir die typischen Größen der nicht beobachteten Werte sowie die Klassenzuweisungen variieren können. Dies bietet eine "Sandbox" für die Bewertung der vorgeschlagenen Analysemethoden, z. B. der Regression.
Stellen Sie zunächst den Zufallszahlengenerator für reproduzierbare Ergebnisse ein und legen Sie die Größe des Problems fest. Ich benutze es, R
weil es für jeden verfügbar ist.
set.seed(17)
n.pop <- 200 # Number of students
n.classes <- 38 # Number of classes
courseload <- 4.5 # Expected number of classes per student
Erstellen Sie n.classes
Klassen mit unterschiedlichen Schwierigkeitsgraden auf zwei Skalen (mathematisch und verbal, mit einer negativen Korrelation), die auf unterschiedlichen akademischen Ebenen (von 1 = einführend bis 7 = forschend) und mit variabler Leichtigkeit durchgeführt werden, um Realismus zu gewährleisten . (In einer "einfachen" Klasse können die Unterschiede zwischen den Lernmengen der Schüler groß sein und / oder die Prüfung kann eine geringe Unterscheidung zwischen den Schülern bewirken. Dies wird durch zufällige Ausdrücke modelliert , die für die Klasse j tendenziell groß sind Wenn die Klasse nicht "einfach" ist, sind diese zufälligen Begriffe vernachlässigbar klein und die Stärken der Schüler können die Prüfungsrangfolge perfekt bestimmen.δ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")
Die Studierenden verteilen sich auf die vier Jahre und sind mit zufälligen Werten ihrer Attribute ausgestattet. Es gibt keine Korrelationen zwischen diesen Attributen:
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")
Das Modell ist, dass jeder Schüler eine inhärente "Stärke" hat, die zum Teil durch ihre Attribute und zum Teil durch ihre "Fähigkeit" bestimmt wird, die der -Wert ist. Die Stärkekoeffizienten , die die Stärke in Bezug auf andere Attribute bestimmen, werden in der nachfolgenden Datenanalyse geschätzt. Wenn Sie mit dieser Simulation spielen möchten, ändern Sie dies . Das Folgende ist ein interessanter und realistischer Satz von Koeffizienten, die das kontinuierliche Lernen der Schüler während des gesamten Colleges widerspiegeln (mit einem großen Anteil zwischen den Jahren 2 und 3). wobei 100 Punkte auf jedem Teil des SAT ungefähr ein Schuljahr wert sind; und wo ungefähr die Hälfte der Variation auf die "Fähigkeit" -Werte zurückzuführen ist, die nicht durch SAT-Scores oder das Schuljahr erfasst wurden.εibeta
beta
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
(Beachten Sie, dass dies students$ability
nicht beobachtbar ist: Es handelt sich um eine scheinbar zufällige Abweichung zwischen der Stärke, die aus den anderen beobachtbaren Attributen vorhergesagt wird, und der tatsächlichen Stärke bei Prüfungen. Wenn Sie diesen zufälligen Effekt beta$ability
auf Null setzen , beta$sigma
werden die ease
Werte multipliziert : Dies ist im Grunde die Standardabweichung des Verhältnis zum Stärkebereich der Schüler in einem bestimmten Kurs. Werte zwischen 0,01 und 0,2 erscheinen mir vernünftig.)δi,j.01.2
Lassen Sie die Schüler Kurse auswählen, die ihren Fähigkeiten entsprechen. Sobald sie dies tun, können wir die Klassengrößen berechnen und diese mit dem classes
Datenrahmen für die spätere Verwendung verstauen . Der Wert spread
in der assignments <-...
Zeile bestimmt, wie eng die Schüler nach Fähigkeiten in Klassen eingeteilt sind. Ein Wert nahe Wesentlichen die schwächsten Schüler mit den einfachsten Kursen. Ein Wert nahe an der Anzahl der Klassen verteilt die Schüler etwas mehr. Viel größere Werte werden unrealistisch, weil sie dazu neigen, schwächere Schüler in die schwierigsten Kurse zu stecken.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)))
(Ein Beispiel dafür, was dieser Schritt bewirkt hat, finden Sie in der Abbildung weiter unten.)
n1/(n+1)n/(n+1)1/(n+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))
An diese Rohdaten hängen wir die Schüler- und Klassenattribute an, um einen für die Analyse geeigneten Datensatz zu erstellen:
data <- merge(data.raw, classes, by.x="Class", by.y="row.names")
data <- merge(data, students, by.x="Student", by.y="row.names")
Lassen Sie uns uns anhand einer zufälligen Stichprobe der Daten orientieren:
> 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
In Datensatz 118 heißt es beispielsweise, dass Schüler Nr. 28 in Klasse Nr. 1 eingeschrieben ist und bei der Prüfung den 22. Platz (von unten) für einen prozentualen Rang von 0,957 erreicht hat. Der Schwierigkeitsgrad dieser Klasse betrug insgesamt 0,0523 (sehr leicht). Insgesamt 22 Studenten wurden eingeschrieben. Dieser Student ist im zweiten Jahr und hat 590 Mathe- und 380 verbale SAT-Noten. Ihre akademische Gesamtstärke beträgt 16,9. Sie waren zu der Zeit in vier Klassen eingeschrieben.
Dieser Datensatz stimmt mit der Beschreibung in der Frage überein. Beispielsweise sind die prozentualen Ränge in der Tat nahezu einheitlich (wie es für jeden vollständigen Datensatz der Fall sein muss, da die prozentualen Ränge für eine einzelne Klasse eine diskrete gleichmäßige Verteilung aufweisen).
Denken Sie daran, dass beta
dieses Modell aufgrund der Koeffizienten in einen starken Zusammenhang zwischen den Untersuchungsergebnissen und den in diesem Datensatz gezeigten Variablen angenommen hat . Aber was zeigt die Regression? Lassen Sie uns die Logistik des prozentualen Rangs gegen alle beobachtbaren Schülereigenschaften, die mit ihren Fähigkeiten zusammenhängen könnten, sowie die Indikatoren für Klassenschwierigkeiten regressieren:
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
Diagnosediagramme ( plot(fit)
) sehen fastastisch aus: Die Residuen sind homoskedastisch und wunderschön normal (wenn auch leicht kurzschwänzig, was kein Problem ist). keine Ausreißer; und kein nachteiliger Einfluss auf irgendeine Beobachtung.
3.5(−9,1.6,3.4,3.9,0.009,0.007,−0.7)(∗,1,3,4,0.010,0.010,∗)∗ steht für einen Koeffizienten, der nicht explizit angegeben wurde).
level
07level
(Übrigens ändert die Verwendung der in der Regression nicht transformierten prozentualen Ränge die unten angegebenen Ergebnisse qualitativ nicht.)
spread
138
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
spread
38spread
1
Diesmal ist das R-Quadrat stark verbessert (obwohl immer noch nicht großartig). Jedoch 100% - alle Koeffizienten um 20 erhöht. Diese Tabelle vergleicht sie mit einigen zusätzlichen Simulationen:
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%
spread
38ability
21ability
sigma
0εiδi,jlevel
Diese schnelle Analyse zeigt, dass die Regression, zumindest wie sie hier durchgeführt wird, unvermeidbare Variationsformen mit den Koeffizienten verwechseln wird. Darüber hinaus hängen die Koeffizienten (in gewissem Umfang) auch davon ab, wie die Schüler auf die Klassen verteilt sind. Dies kann teilweise durch Einbeziehen von Klassenattributen in die Regression unter den unabhängigen Variablen ausgeglichen werden, wie hier beschrieben. Der Effekt der Studentenverteilung verschwindet jedoch nicht.
Jede mangelnde Vorhersehbarkeit der tatsächlichen Schülerleistung und jede Variation des Schülerlernens und der tatsächlichen Leistung bei Prüfungen führt anscheinend dazu, dass die Koeffizientenschätzungen gegen Null schrumpfen. Sie scheinen dies einheitlich zu tun, was darauf hindeutet, dass die relativen Koeffizienten möglicherweise noch aussagekräftig sind.