Оцінка відсотків як залежної змінної в регресії


13

У мене відсоткові відсотки студентів на 38 іспитах є залежною змінною в моєму дослідженні. Відсотковий відсоток обчислюється (рангом / кількістю студентів на іспиті). Ця залежна змінна має майже рівномірний розподіл, і я хочу оцінити вплив деяких змінних на залежну змінну.

Який підхід регресії я використовую?


2
Регулярна (OLS) регресія не робить припущень щодо розподілу залежної змінної, вона робить припущення про розподіл помилки (як оцінюють залишки) з моделі. Якщо кількість студентів на іспит різниться, ви, ймовірно, можете почати з регресії OLS і перевірити припущення.
Пітер Флом - Відновіть Моніку

2
Це гарна пропозиція, @Peter, але мене турбують тонкі, але важливі порушення припущень щодо OLS. Ранг студента в іспиті буде залежати від ознак усіх інших студентів, які складають іспит. Ця взаємозалежність не охоплюється жодним (рутинним) застосуванням OLS.
whuber

Ще один спосіб оцінити, що тут відбувається, - це розглянути найпростіший екземпляр цієї проблеми, коли в кожному «іспиті» беруть участь саме двоє студентів. Залежна змінна вказує, який учень зробив краще. Якщо ми розглядаємо кожен іспит як змагання, це рівнозначно проведенню турніру. Питання, по суті, хоче придумати формулу "сили" кожного гравця з точки зору деяких пояснювальних змінних.
whuber

Ви маєте рацію @whuber. Як вирішити це? Я думаю, що модель IRT це зробила б, але минуло давно, як я їх вивчив.
Пітер Флом - Відновіть Моніку

@whuber Я думаю, що IRT може бути можливим, наприклад, упорядкованим пробітом (або logit). Але також можна розглядати відсотковий ранг як обмежену нескінченну змінну (наприклад, логістичну регресію, запропоновану Майком), це було б достовірним наближенням , тоді як упорядкований пробіт буде прямою моделлю проблеми. Перевага логістики - парситизм; для обліку кореляції студентів може бути реалізований оцінювач дисперсії Білого або сендвіч. Я зрозумів, що вибірка має 38 іспитів для кількох студентів (поздовжніх), тому це повинно бути можливим.
JDav

Відповіді:


3

Якщо ви працюєте зі статистикою, перегляньте такий приклад: http://www.ats.ucla.edu/stat/stata/faq/proportion.htm

Ось цитата з цієї веб-сторінки:

"Як можна регресувати, коли залежна змінна є пропорцією?

Дані пропорції мають значення, які падають між нулем і одиницею. Природно, було б непогано, щоб передбачувані значення також падали між нулем і одиницею. Одним із способів досягти цього є використання узагальненої лінійної моделі (glm) з logit-ланкою та двочленним сімейством. Ми включимо надійну опцію в модель glm, щоб отримати надійні стандартні помилки, які будуть особливо корисні, якщо ми помилково визначили сімейство розподілу ".


2
Це добре, і в інших контекстах було б чудовою порадою, але використання glm не вирішить проблем, виявлених у моїй відповіді.
whuber


9

Конспект

Результати регресії можуть мати деяке обмежене значення при уважному тлумаченні. Неминучі форми зміни призведуть до того, що оцінки коефіцієнтів істотно скоротяться до нуля. Потрібна краща модель, яка більш ефективно підходить для зміни варіантів.

(Модель максимальної ймовірності може бути побудована, але може бути нездійсненною у зв'язку з необхідними обчисленнями, що включає чисельну оцінку багатовимірних інтегралів. Кількість розмірів дорівнює кількості учнів, що навчаються на заняттях.)

Вступ

Як розповідь для інформування нашої інтуїції, уявіть, що ці 38 іспитів були здані в 38 окремих курсах протягом одного семестру в невеликій школі з навчанням 200 студентів коледжу. У реалістичній ситуації ці студенти матимуть різні здібності та досвід. Як сурогатні міри цих здібностей та досвіду ми можемо взяти, скажімо, бали на тестуванні з математики та словесних тестів SAT та рік навчання в коледжі (1 до 4).

Зазвичай студенти будуть записуватися на курси відповідно до своїх здібностей та інтересів. Першокурсники проходять вступні курси, а вступні курси населяють переважно першокурсники. Вищі класи та талановиті першокурсники та студенти проходять курси підвищення кваліфікації та випускників. Цей вибір частково стратифікує учнів, так що вроджені здібності учнів у будь-якому класі, як правило, є більш однорідними, ніж поширення здібностей по всій школі.

Таким чином, найбільш здібні студенти можуть опинитися внизу в нижній частині складних, просунутих класів, до яких вони зараховуються, тоді як найменш здібні студенти можуть забити вгорі легких вступних класів, які вони беруть. Це може заплутати пряму спробу співвідносити екзаменаційні ранги безпосередньо з атрибутами студентів та класами.

Аналіз

Індексуйте учнів з а атрибути студента i дайте вектором x i . Індексуйте класи з j, а атрибути класу j задайте вектором z j . Сукупність учнів, що навчаються у класі j, становить A j .iixijjzjjAj

Припустимо, "сила" кожного учня є функцією їх атрибутів плюс деяке випадкове значення, яке може мати нульове значення:si

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

Ми моделюємо іспит у класі , додаючи незалежні випадкові значення до сили кожного учня, що навчається у класі, та перетворюючи їх у ранги. Отже, якщо студент i зараховується до класу j , їх відносний ранг r i , j визначається їх положенням у відсортованому масиві значеньjijri,j

(sk+δk,j,kAj).

Ця позиція ділиться на одну більше, ніж загальна кількість зарахувань до класу, щоб отримати залежну змінну, відсотковий ранг: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")

ε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

students$abilitybeta$abilitybeta$sigmaeaseδi,j.01.2

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

(Як приклад того, що цей крок досяг, див. Малюнок далі.)

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

До цих необроблених даних ми додаємо атрибути студента та класу, щоб створити набір даних, придатний для аналізу:

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,) означає коефіцієнт, який не був чітко вказаний).

level07level

(До речі, використання відсоткових рангів, які не трансформуються в регресії, не якісно змінює результати, про які йдеться нижче.)

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

Ділянка присвоєння класу

spread38spread1

Цього разу 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%

spread38ability21abilitysigma0εiδi,jlevel

Цей швидкий аналіз показує, що регресія, принаймні, як це робиться тут, збирається змішувати неминучі форми зміни з коефіцієнтами. Крім того, коефіцієнти також залежать (певною мірою) від розподілу учнів між класами. Частково це може бути прийнято, якщо включити атрибути класу серед незалежних змінних в регресію, як це робиться тут, але навіть так ефект розподілу учнів не зникає.

Будь-яка відсутність передбачуваності справжньої успішності студентів та будь-які зміни в навчанні та фактичній ефективності на іспитах, очевидно, призводять до того, що оцінки коефіцієнтів зменшуються до нуля. Здається, вони роблять це рівномірно, припускаючи, що відносні коефіцієнти все ще можуть бути значущими.


εivipijyijyij

Якщо у вашому моделюванні зберігається позитивна кореляція між неспостережними здібностями та SAT та іншими показниками, то параметри OLS можуть бути упередженими вгору правильно? притягнутий до нуля?
JDav

+1, я великий прихильник використання симуляцій, щоб допомогти опрацювати статистичні ідеї.
gung - Відновіть Моніку

3

yij

μij

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

vieijeijμij

(Це лише ідея з мого упередженого досвіду, коментарі та критики більш ніж вітаються.)

μijvi


1
Ідея використання логістичної трансформації є хорошою, але така модель регресії має проблеми (як пояснено у моїй відповіді).
whuber

μij

2

ln(p1p)


Логістична регресія застосовується лише до змінних двійкових відповідей, що, схоже, тут не відбувається. Ви, напевно, пропонуєте звичайну регресію logit відсотка?
whuber

1
Ні логістична регресія, ні звичайна лінійна регресія тут не є підходящими з причин, які викликали. Також якщо модель має мати залишки Гаусса, я не бачу, як це перетвориться на майже рівномірний розподіл для відповіді. Залежність між окремими студентами в рейтингу - це, на мою думку, найважливіше для аналізу.
Майкл Р. Черник

ln(p/1p)=βxi+uipi

@J Dav Я не можу знайти жодної посилання, яка використовує "логістичну регресію" у тому сенсі, який ви описуєте.
whuber

1
Я думаю, що він має на увазі зробити узагальнену лінійну модель із умовним гауссовим розподілом із logit-зв’язком до середнього. (Принаймні, я припускаю, що це він мав на увазі.)
Ши Паркес

0

Ідеальна модель в цьому випадку буде відображати вхідні дані (які б ви не мали коваріатів) виходи (звання учня в класі). Ще один спосіб подумати про це - зіставлення спочатку балів, а потім відображення цих балів у ранзі. Я зараз ігнорую помилку.

y=βx

r=R(y)

RRyR(y)

Це здається досить схожим на функціональну форму узагальненої лінійної моделі. Я думаю, саме тому підхід до логістичної регресії запропонував @Mike Anderson. Якщо ваші результати іспитів були розподілені логістично, функцією посилання, якою користуватися, був би logit (його зворотною є функція накопичувальної щільності, про яку ми дбаємо). Аналогічно, якби бали зазвичай розподілялися, функція probit була б функцією зв'язку.

Для вашого регресу єдиний спосіб оцінити ранги - сказати "враховуючи, що мої дані поширюються як X, ця точка знаходиться у 34-му перцентилі". В іншому випадку, як ви знаєте, на що на два бали збільшується ваш тестовий бал з точки зору рангу? Застереження полягає в тому, що вам доведеться оцінити розподіл, щоб вибрати свою функцію зв'язку (певні функціональні форми полегшать ваше життя). Крім того, ця модель не збирається говорити "ви були шостими кращими з класу 38", а "якби тестові бали розподілялися так, як ми думаємо, вони оцінювали б вас в 15-му перцентилі".

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.