Конспект
Результати регресії можуть мати деяке обмежене значення при уважному тлумаченні. Неминучі форми зміни призведуть до того, що оцінки коефіцієнтів істотно скоротяться до нуля. Потрібна краща модель, яка більш ефективно підходить для зміни варіантів.
(Модель максимальної ймовірності може бути побудована, але може бути нездійсненною у зв'язку з необхідними обчисленнями, що включає чисельну оцінку багатовимірних інтегралів. Кількість розмірів дорівнює кількості учнів, що навчаються на заняттях.)
Вступ
Як розповідь для інформування нашої інтуїції, уявіть, що ці 38 іспитів були здані в 38 окремих курсах протягом одного семестру в невеликій школі з навчанням 200 студентів коледжу. У реалістичній ситуації ці студенти матимуть різні здібності та досвід. Як сурогатні міри цих здібностей та досвіду ми можемо взяти, скажімо, бали на тестуванні з математики та словесних тестів SAT та рік навчання в коледжі (1 до 4).
Зазвичай студенти будуть записуватися на курси відповідно до своїх здібностей та інтересів. Першокурсники проходять вступні курси, а вступні курси населяють переважно першокурсники. Вищі класи та талановиті першокурсники та студенти проходять курси підвищення кваліфікації та випускників. Цей вибір частково стратифікує учнів, так що вроджені здібності учнів у будь-якому класі, як правило, є більш однорідними, ніж поширення здібностей по всій школі.
Таким чином, найбільш здібні студенти можуть опинитися внизу в нижній частині складних, просунутих класів, до яких вони зараховуються, тоді як найменш здібні студенти можуть забити вгорі легких вступних класів, які вони беруть. Це може заплутати пряму спробу співвідносити екзаменаційні ранги безпосередньо з атрибутами студентів та класами.
Аналіз
Індексуйте учнів з а атрибути студента i дайте вектором x i . Індексуйте класи з j, а атрибути класу j задайте вектором z j . Сукупність учнів, що навчаються у класі j, становить A j .iiхijjzjjАj
Припустимо, "сила" кожного учня є функцією їх атрибутів плюс деяке випадкове значення, яке може мати нульове значення:сi
сi= f( хi, β) + εi.
Ми моделюємо іспит у класі , додаючи незалежні випадкові значення до сили кожного учня, що навчається у класі, та перетворюючи їх у ранги. Отже, якщо студент i зараховується до класу j , їх відносний ранг r i , j визначається їх положенням у відсортованому масиві значеньjijri , j
( ск+ δk , j, k ∈ Aj) .
Ця позиція ділиться на одну більше, ніж загальна кількість зарахувань до класу, щоб отримати залежну змінну, відсотковий ранг:ri , j
pi , j= ri , j1 + |Аj|.
Я стверджую, що результати регресії (зовсім небагато) залежать від розмірів та структури випадкових (непомічених) значень та δ 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")
ε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
δ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 )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))
До цих необроблених даних ми додаємо атрибути студента та класу, щоб створити набір даних, придатний для аналізу:
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
Цей швидкий аналіз показує, що регресія, принаймні, як це робиться тут, збирається змішувати неминучі форми зміни з коефіцієнтами. Крім того, коефіцієнти також залежать (певною мірою) від розподілу учнів між класами. Частково це може бути прийнято, якщо включити атрибути класу серед незалежних змінних в регресію, як це робиться тут, але навіть так ефект розподілу учнів не зникає.
Будь-яка відсутність передбачуваності справжньої успішності студентів та будь-які зміни в навчанні та фактичній ефективності на іспитах, очевидно, призводять до того, що оцінки коефіцієнтів зменшуються до нуля. Здається, вони роблять це рівномірно, припускаючи, що відносні коефіцієнти все ще можуть бути значущими.