Оценка процентов как зависимой переменной в регрессии


13

У меня есть процентное соотношение студентов на 38 экзаменах в качестве зависимой переменной в моем исследовании. Процент ранга рассчитывается как (ранг студента / количество студентов на экзамене). Эта зависимая переменная имеет почти равномерное распределение, и я хочу оценить влияние некоторых переменных на зависимую переменную.

Какой регрессионный подход я использую?


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

2
Это хорошее предложение, @Peter, но я обеспокоен тонкими, но важными нарушениями допущений OLS. Оценка студента на экзамене будет зависеть от атрибутов всех других студентов, сдающих экзамен. Эта взаимозависимость не фиксируется каким-либо (обычным) применением OLS.
whuber

Еще один способ оценить происходящее здесь - рассмотреть простейший пример этой проблемы, где в каждом «экзамене» участвуют ровно два студента. Зависимая переменная указывает на то, какой ученик учился лучше Если мы рассматриваем каждый экзамен как конкурс, это равносильно проведению турнира. По сути, вопрос заключается в том, чтобы придумать формулу для «силы» каждого игрока в терминах некоторых объясняющих переменных.
whuber

Вы правы @whuber. Как решить эту проблему? Я думаю, что модель IRT сделала бы это, но я давно не изучал их.
Питер Флом - Восстановить Монику

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

Ответы:


3

Если вы работаете со Stata, взгляните на следующий пример: http://www.ats.ucla.edu/stat/stata/faq/proportion.htm

Вот цитата с этой веб-страницы:

«Как сделать регрессию, когда зависимая переменная является пропорцией?

Данные пропорции имеют значения, которые находятся между нулем и единицей. Естественно, было бы неплохо, чтобы предсказанные значения также падали между нулем и единицей. Один из способов сделать это - использовать обобщенную линейную модель (glm) с логит-связью и семейством биномов. Мы включим надежную опцию в модель glm для получения устойчивых стандартных ошибок, которые будут особенно полезны, если мы неправильно определили семейство дистрибутивов ».


2
Это хорошо, и в других контекстах было бы отличным советом, но использование glm не решит проблемы, указанные в моем ответе.
whuber


9

конспект

Результаты регрессии могут иметь ограниченную ценность при тщательной интерпретации. Неизбежные формы вариаций приведут к значительному сокращению оценок коэффициентов до нуля. Требуется лучшая модель, которая обрабатывает изменения более подходящим способом.

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

Вступление

В качестве повествования для информирования нашей интуиции представьте, что эти 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

(sК+δК,J,К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 или годом обучения в школе.ε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$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,) обозначает коэффициент, который не был указан явно).

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

Class assignment plot

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

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

Отсутствие предсказуемости истинной успеваемости ученика и любые различия в успеваемости ученика и фактической успеваемости на экзаменах, очевидно, приводят к уменьшению оценок коэффициента до нуля. Они, кажется, делают это равномерно, предполагая, что относительные коэффициенты могут все еще иметь значение.


Я согласен с вашими требованиями в отношении εя (что в ответе соответствует vя) и я надеюсь, что я получил полную картину вашего анализа. Результаты напяJбудет зависеть от ненаблюдаемых характеристик, которые могут коррелироваться с наблюдаемыми, такими как ваши оценки SAT (и другие). Но нетривиально удалить ненаблюдаемый индивидуальный эффект, применяя «внутри» преобразование (YяJ-жадный(YяJ)) или любая другая (разница)? (+1)
JDav

Если ваша симуляция сохраняет положительную корреляцию между ненаблюдаемыми способностями, SAT и другими показателями, тогда параметры OLS могут быть смещены вверх, верно? (Асимп. Смещение пропорционально корреляции элементов управления со случайными членами), так что это может объяснить ваши "отрицательные" параметры: тяготеет к нулю?
JDav

+1, я большой поклонник использования симуляций, чтобы помочь проработать статистические идеи.
gung - Восстановить Монику

3

Мера @ user13203, которую предлагает, может рассматриваться как непрерывный ограниченный показатель недостаточной производительности, чем ниже, тем лучше производительность: YяJ I-й студент отстает на J-й экзамен.

Использование линеаризованного преобразования логита где μяJ может зависеть от наблюдаемых характеристик ученика или экзаменов:

пер(YяJ/(1-YяJ))знак равноμяJ+еяJ+vя

ненаблюдаемые навыки студента моделируются случайным компонентом vя пока еяJмоделирует другие несистематические ненаблюдаемые. Корреляция между ответами (экзаменами) может быть установлена ​​путем принятия общей ковариационной структуры дляеяJ, Почему не белая (или сэндвич / устойчивая) дисперсионная структура? Кроме того, некоторые из ответов могут быть учтены в рамкахμяJ (условная зависимость).

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

Ненаблюдаемые способности, вероятно, будут коррелироваться с атрибутами наблюдаемых студентов или экзаменов в пределах μяJ. This assumptions makes this model a RE with correlated error components, that can be estimated by ML or a two stage estimator: first stage: a within (or analog) transformation that eliminates vi. Second stage: OLS on the transformed model.


1
The idea of using a logistic transformation is a good one, but this kind of regression model has problems (as explained in my answer).
whuber

Just complemented the answer with the estimation method under correlation between the unobserved abilities and observables within μij following @whuber remarks
JDav

2

You might want to try logistic regression. The logit transform ln(p1p) will spread your response variable out over the real line so you won't get absurd predicted rank percentages like -3% or +110%.


Logistic regression applies only to binary response variables, which does not appear to be the case here. Are you perhaps suggesting ordinary regression of the logit of the rank percentage?
whuber

1
Neither logistic regression nor ordinary linear regression is appropriate here for the reasons whuber gave. Also if the model is to have Gaussian residuals I don't see how that is going to translate into a near uniform distribution for the response. The dependence between individual students in the rankings is what I think is most crucial to the analysis.
Michael R. Chernick

I agree with Mike. Could this be another nomenclature issue ? logistic regression is also refered to the following model: ln(p/1p)=βxi+ui where pi is bounded between 0 and 1.
JDav

@J Dav I am unable to find any reference that uses "logistic regression" in the sense you describe.
whuber

1
I think he mean to do a Generalized Linear Model, with a conditional Gaussian distribution, with a logit-link to the mean. (At least I'm going to assume that's what he meant.)
Shea Parkes

0

A perfect model in this case will map the inputs (whatever covariates you have) to the outputs (the rank of the student in the class). Another way to think of this is by mapping first to the scores, and then mapping those scores to the rank. I'm going to ignore error for now.

test score: y=βx

rank: r=R(y)

In which R is the ranking function. The problem is that R is a non-linear function that depends entirely on the data itself. If we assume that we have an infinite amount of data, then we know the complete distribution of y, and R(y) is essentially the cumulative density function. It tells you what percent of people scored worse than you on the test, the area to the left of your score.

This appears to be quite similar to the functional form of the generalized linear model. I think this is why the logistic regression approach was proposed by @Mike Anderson. If your exam scores were logistically distributed, then the link function to use would be the logit (its inverse is the cumulative density function we care about). Similarly, if the scores were normally distributed, the probit function would be the link function.

For your regression, the only way to estimate ranks is to say "given that my data are distributed as X, this point is in the 34th percentile". Otherwise, how do you know what a two point increase in your test score translates to in terms of rank? The caveat is that you have to estimate that distribution in order to choose your link function (certain functional forms will make your life a lot easier). Furthermore, this model isn't going to say "you were the 6th best out of a class of 38", rather "if the test scores were distributed how we think they are, your score would put you in the 15th percentile."

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.