конспект
Результаты регрессии могут иметь ограниченную ценность при тщательной интерпретации. Неизбежные формы вариаций приведут к значительному сокращению оценок коэффициентов до нуля. Требуется лучшая модель, которая обрабатывает изменения более подходящим способом.
(Модель максимального правдоподобия может быть построена, но может быть неосуществимой из-за необходимых вычислений, которые включают численную оценку многомерных интегралов. Числа измерений равны количеству студентов, зачисленных в классы.)
Вступление
В качестве повествования для информирования нашей интуиции представьте, что эти 38 экзаменов были проведены на 38 отдельных курсах в течение одного семестра в небольшой школе с зачислением 200 студентов. В реальной ситуации у этих учеников будут разные способности и опыт. В качестве суррогатных мер этих способностей и опыта мы можем взять, скажем, баллы по математике и устным тестам SAT и год в колледже (с 1 по 4).
Как правило, студенты будут записываться на курсы в соответствии со своими способностями и интересами. Первокурсники проходят начальные курсы, а начальные курсы населяют в основном новички. Старшеклассники, талантливые первокурсники и второкурсники проходят курсы продвинутого и высшего уровня. Этот выбор частично расслаивает студентов так что врожденные способности учеников в любом классе, как правило, более однородны, чем распространение способностей в школе.
Таким образом, наиболее способные ученики могут оказаться в нижней части сложных, продвинутых классов, в которые они записываются, в то время как наименее способные ученики могут набрать в верхней части легких вводных классов, которые они посещают. Это может спутать прямую попытку соотнести оценки экзаменов непосредственно с характеристиками учащихся и классов.
Анализ
Индексируйте студентов с помощью и пусть атрибуты студента i будут заданы вектором x i . Индексируйте классы с помощью j и пусть атрибуты класса j задаются вектором z j . Набор студентов, зачисленных в класс j, является A j .яяИксяjjzjjAj
Предположим, что «сила» каждого студента является функцией их атрибутов плюс некоторое случайное значение, которое также может иметь нулевое среднее значение:si
si=f(xi,β)+εi.
Мы моделируем экзамен в классе , добавляя независимые случайные значения к силе каждого студента, зачисленного в класс, и конвертируем их в ранги. Таким образом, если студент i зарегистрирован в классе j , его относительный ранг r i , j определяется их положением в отсортированном массиве значенийjijri,j
( сК+ δК , Дж, k ∈ AJ) .
Эта позиция делится на единицу больше, чем общее количество учащихся в классе, чтобы дать зависимой переменной процентное звание:ri,j
pi,j=ri,j1+|Aj|.
Я утверждаю, что результаты регрессии зависят (в значительной степени) от размеров и структуры случайных (ненаблюдаемых) значений и δ i , j . εiδi,j Результаты также зависят от того, как именно ученики зачислены в классы. Это должно быть интуитивно очевидно, но то, что не так очевидно - и кажется, что трудно проанализировать теоретически - это как и сколько ненаблюдаемые значения и структуры классов влияют на регрессию.
моделирование
Без особых усилий мы можем смоделировать эту ситуацию для создания и анализа некоторых образцов данных. Одним из преимуществ симулятора является то, что он может включать в себя истинные сильные стороны студентов, которые на самом деле не наблюдаемы. Другое заключается в том, что мы можем варьировать типичные размеры ненаблюдаемых значений, а также назначения классов. Это обеспечивает «песочницу» для оценки предлагаемых аналитических методов, таких как регрессия.
Для начала давайте установим генератор случайных чисел для воспроизводимых результатов и укажем размер проблемы. Я использую, R
потому что это доступно каждому.
set.seed(17)
n.pop <- 200 # Number of students
n.classes <- 38 # Number of classes
courseload <- 4.5 # Expected number of classes per student
Чтобы обеспечить реализм, создайте n.classes
классы различной сложности по двум шкалам (математическая и словесная, с отрицательной корреляцией), проводимые на разных академических уровнях (от 1 = вводный до 7 = исследовательский) и с переменной легкостью. (В «простом» классе различия между объемами обучения студентов могут быть большими, и / или экзамен может обеспечить небольшую дискриминацию среди студентов. Это моделируется случайными слагаемыми которые для класса j имеют тенденцию быть большими Результаты экзамена будут почти непредсказуемыми из данных о силе ученика. Когда урок не «легкий», эти случайные термины пренебрежимо малы, и сильные стороны ученика могут точно определить рейтинг экзамена.)δ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")
Студенты распределены между четырьмя годами и наделены случайными значениями их атрибутов. Там нет корреляции между любым из этих атрибутов:
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")
Модель заключается в том, что каждому учащемуся присуща «сила», определяемая частично его атрибутами и частично их «способностью», которая является значением . Коэффициенты прочности , которые определяют прочность с точки зрения других атрибутов, - это то, что будет пытаться оценить последующий анализ данных. Если вы хотите поиграть с этим симулятором, сделайте это, изменив . Ниже представлен интересный и реалистичный набор коэффициентов, отражающих непрерывное обучение студентов в колледже (с большим количеством между 2 и 3 годами); где 100 баллов по каждой части SAT стоят примерно один год в школе; и где примерно половина различий обусловлена значениями «способностей», не зафиксированными баллами SAT или годом обучения в школе.ε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
(Имейте в виду, что students$ability
это ненаблюдаемое: это, по-видимому, случайное отклонение между силой, прогнозируемой по другим наблюдаемым атрибутам, и фактической силой на экзаменах. Чтобы удалить этот случайный эффект, установите beta$ability
на ноль. beta$sigma
Умножим ease
значения: это в основном стандартное отклонение из относительно диапазона сильных студентов в данном курсе. Значения около +0,01 до +0,2δi,j.01.2 или так кажется разумным для меня.)
Пусть студенты выбирают курсы, соответствующие их способностям. Как только они это сделают, мы можем вычислить размеры классов и спрятать их вместе с classes
фреймом данных для последующего использования. Значение spread
в assignments <-...
строке определяет, насколько близко ученики разбиты на классы по способностям. Значение, близкое к существу объединяет самых слабых студентов с самыми простыми курсами. Значение, близкое к количеству классов, еще больше расширяет учащихся. Гораздо большие значения, чем это, начинают становиться нереальными, потому что они, как правило, ставят более слабых учеников на самые сложные курсы.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)))
(В качестве примера того, что этот шаг был выполнен, см. Рисунок ниже.)
Теперь примените модель: способности учащихся в каждом классе независимо варьируются - больше для легких экзаменов, меньше для сложных (различающих) экзаменов - для определения их баллов по экзаменам. Они суммируются как звания и «шалости», которые являются процентами ранга. Шутки для класса из студентов варьируются от 1 / ( n + 1 ) до n / ( n + 1 ) с шагом 1 / ( n + 1 ) 0 или 1 ).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))
К этим необработанным данным мы прикрепляем атрибуты student и class, чтобы создать набор данных, пригодный для анализа:
data <- merge(data.raw, classes, by.x="Class", by.y="row.names")
data <- merge(data, students, by.x="Student", by.y="row.names")
Давайте сориентироваться, проверив случайную выборку данных:
> 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
Например, в записи 118 говорится, что ученик № 28 поступил в класс № 1 и набрал 22-е место (снизу) на экзамене с процентной оценкой 0,957. Общий уровень сложности этого класса был 0,0523 (очень легко). Всего было зачислено 22 студента. Этот студент является второкурсником (2-й год) с 590 математикой, 380 устными баллами SAT. Их общая присущая академическая сила составляет 16,9. Они были зачислены в четыре класса в то время.
Этот набор данных соответствует описанию в вопросе. Например, процентные ранги действительно практически одинаковы (как и должно быть для любого полного набора данных, потому что процентные ранги для одного класса имеют дискретное равномерное распределение).
Помните, что в силу коэффициентов в beta
этой модели предполагается тесная связь между оценками экзаменов и переменными, показанными в этом наборе данных. Но что показывает регрессия? Давайте вернемся к логистике процентного ранга по всем наблюдаемым характеристикам учащихся, которые могут быть связаны с их способностями, а также с показателями сложности в классе:
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
Диагностические графики ( plot(fit)
) выглядят быстро: остатки гомоскедастичны и прекрасно нормальны (хотя и с коротким хвостом, что не проблема); нет выбросов; и никакого неблагоприятного влияния в любом наблюдении.
3.5(−9,1.6,3.4,3.9,0.009,0.007,−0.7)(∗,1,3,4,0.010,0.010,∗)∗ обозначает коэффициент, который не был указан явно).
level
07level
(Кстати, использование процентных рангов, не преобразованных в регрессии, не меняет качественно результаты, представленные ниже.)
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
На этот раз R-квадрат значительно улучшился (хотя все еще не очень). Однако все коэффициенты увеличились на 20 - 100%. Эта таблица сравнивает их вместе с некоторыми дополнительными симуляциями:
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
Этот быстрый анализ показывает, что регрессия, по крайней мере, как здесь выполнено, будет смешивать неизбежные формы вариации с коэффициентами. Кроме того, коэффициенты также зависят (в некоторой степени) от того, как ученики распределяются по классам. Это может быть частично учтено путем включения атрибутов класса среди независимых переменных в регрессию, как это сделано здесь, но даже в этом случае эффект распределения учащихся не исчезает.
Отсутствие предсказуемости истинной успеваемости ученика и любые различия в успеваемости ученика и фактической успеваемости на экзаменах, очевидно, приводят к уменьшению оценок коэффициента до нуля. Они, кажется, делают это равномерно, предполагая, что относительные коэффициенты могут все еще иметь значение.