Regresyonda yüzdeleri bağımlı değişken olarak tahmin etme


13

Çalışmamda bağımlı değişken olarak 38 sınavda öğrenci sıralamasında yüzdelerim var. Sıra yüzdesi (bir öğrencinin sıradaki / sınavdaki öğrenci sayısı) ile hesaplanır. Bu bağımlı değişken neredeyse eşit dağılım gösterir ve bazı değişkenlerin bağımlı değişken üzerindeki etkilerini tahmin etmek istiyorum.

Hangi regresyon yaklaşımını kullanıyorum?


2
Düzenli (OLS) regresyon, bağımlı değişkenin dağılımı hakkında varsayımlarda bulunmaz, bir modelden hatanın dağılımı (artıklar tarafından tahmin edildiği gibi) hakkında varsayımlar yapar. Sınav başına öğrenci sayısı değişirse, muhtemelen OLS regresyonu ile başlayabilir ve varsayımları kontrol edebilirsiniz.
Peter Flom - Monica'yı eski durumuna döndürün

2
Bu iyi bir öneri @Peter, ama OLS varsayımlarının daha ince ama önemli ihlalleri hakkında endişeliyim. Bir öğrencinin sınavdaki sırası, sınava giren diğer tüm öğrencilerin özelliklerine bağlı olacaktır. Bu bağımlılık, OLS'nin (rutin) herhangi bir uygulaması tarafından yakalanmaz.
whuber

Burada olup bitenleri takdir etmenin bir başka yolu, her "sınav" ın tam olarak iki öğrenciyi içerdiği bu sorunun en basit örneğini düşünmektir. Bağımlı değişken hangi öğrencinin daha iyi olduğunu gösterir. Her sınavı bir yarışma olarak düşünürsek, bu bir turnuva düzenlemeye eşdeğerdir. Aslında soru, her bir oyuncunun bazı açıklayıcı değişkenler açısından "gücü" için bir formül bulmak istemektedir.
whuber

Haklısın @whuber. Bu nasıl ele alınır? Bir IRT modelinin bunu yapacağını düşünüyorum, ama bunları incelediğimden beri uzun zaman geçti.
Peter Flom - Monica'yı eski durumuna döndürün

@whuber IRT'nin örneğin bir sıralı probit (veya logit) olabileceğini düşünüyorum. Ancak yüzde derecesini sınırlı bir sürekli değişken olarak (Mike tarafından önerilen lojistik regresyon gibi) düşünmek de mümkündür, bu geçerli bir yaklaşım olurken, sıralı probit problem için düz bir model olacaktır. Lojistiğin avantajı parsimony; öğrencilerin korelasyonunu açıklamak için bir Beyaz veya sandviç varyans tahmincisi uygulanabilir. Örneklemin birkaç öğrenci (boyuna) için 38 sınavı olduğunu anladım, bu yüzden bu mümkün olmalı.
JDav

Yanıtlar:


3

Stata ile çalışıyorsanız, aşağıdaki örneğe bir göz atın: http://www.ats.ucla.edu/stat/stata/faq/proportion.htm

İşte bu web sayfasından bir alıntı:

"Bağımlı değişken bir orantı olduğunda kişi nasıl regresyon yapar?

Oran verileri sıfır ile bir arasında değişen değerlere sahiptir. Doğal olarak, öngörülen değerlerin de sıfır ile bir arasında olması güzel olurdu. Bunu yapmanın bir yolu, logit bağlantısı ve binom ailesi ile genelleştirilmiş doğrusal bir model (glm) kullanmaktır. Dağıtım ailesini yanlış yazmamız durumunda özellikle yararlı olacak sağlam standart hatalar elde etmek için glm modeline sağlam seçeneği ekleyeceğiz. "


2
Bu güzel ve diğer bağlamlarda harika bir tavsiye olurdu, ancak bir glm kullanmak cevabımda tanımlanan sorunları düzeltmeyecek.
whuber


9

özet

Dikkatli bir şekilde yorumlandığında regresyon sonuçlarının sınırlı bir değeri olabilir. Kaçınılmaz varyasyon formları katsayı tahminlerinin büyük ölçüde sıfıra doğru küçülmesine neden olacaktır. Varyasyonu daha uygun bir şekilde ele alan daha iyi bir modele ihtiyaç vardır.

(Bir maksimum olasılık modeli oluşturulabilir, ancak çok boyutlu integrallerin sayısal değerlendirmesini içeren gerekli hesaplama nedeniyle uygulanamaz olabilir. Boyutların sayısı, sınıflara kayıtlı öğrenci sayısına eşittir.)

Giriş

Sezgimizi bilgilendirmek için bir anlatım olarak, bu 38 sınavın 200 üniversite öğrencisi olan küçük bir okulda bir dönem 38 ayrı derste verildiğini hayal edin. Gerçekçi bir durumda, bu öğrencilerin değişen yetenekleri ve deneyimleri olacaktır. Bu yeteneklerin ve deneyimlerin vekil ölçütleri olarak, SAT matematik ve sözlü sınavları ve üniversitedeki yıl puanlarını alabiliriz (1'den 4'e kadar).

Tipik olarak, öğrenciler yeteneklerine ve ilgi alanlarına göre derslere kayıt olurlar. Birinci sınıf öğrencileri giriş dersleri alırlar ve başlangıç ​​dersleri öncelikle birinci sınıf öğrencileri tarafından doldurulur. Üst sınıflar ve yetenekli birinci sınıflar ve ikinci sınıf öğrencileri ileri ve lisansüstü düzeydeki dersleri alırlar. Bu seçim, öğrencileri herhangi bir sınıftaki doğuştan gelen yeteneklerinin, okuldaki yeteneklerin yayılmasından tipik olarak daha homojen olması için öğrencileri kısmen tabakalandırır .

Böylece, en yetenekli öğrenciler kayıt yaptıkları zor, ileri sınıfların dibinde puan alırken, en az yetenekli öğrenciler aldıkları kolay giriş sınıflarının üstünde puan alabilirler. Bu, sınav sıralamalarını doğrudan öğrencilerin ve sınıfların nitelikleriyle ilişkilendirmek için doğrudan bir girişimde bulunabilir.

analiz

iixijjzjjAj

si

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

jijri,j

(sk+δk,j,kAj).

ri,j

pi,j=ri,j1+|Aj|.

εiδi,j

Simülasyon

Çok fazla çaba harcamadan , bazı örnek verileri oluşturmak ve analiz etmek için bu durumu simüle edebiliriz. Simülasyonun bir avantajı, gerçekte gözlemlenemeyen öğrencilerin gerçek güçlerini birleştirebilmesidir . Bir diğeri, gözlemlenmeyen değerlerin tipik boyutlarını ve sınıf ödevlerini değiştirebilmemizdir. Bu, regresyon gibi önerilen analitik yöntemleri değerlendirmek için bir "korumalı alan" sağlar.

Başlamak için, tekrarlanabilir sonuçlar için rasgele sayı üretecini ayarlayalım ve sorunun boyutunu belirleyelim. Kullanıyorum Rçünkü herkes kullanabilir.

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

Öğrenciler dört yıl boyunca yayılır ve özelliklerinin rastgele değerleri ile donatılır. Bu özelliklerin hiçbiri arasında korelasyon yoktur:

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

(Bu adımın neyi başardığının bir örneği olarak, aşağıdaki şekle bakın.)

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

Bu ham verilere, analiz için uygun bir veri kümesi oluşturmak için öğrenci ve sınıf özelliklerini ekleriz:

data <- merge(data.raw, classes, by.x="Class", by.y="row.names")
data <- merge(data, students, by.x="Student", by.y="row.names")

Verilerin rastgele bir örneğini inceleyerek kendimizi yönlendirelim:

> 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

Örneğin, 118 no'lu kayıt 28 numaralı öğrencinin 1. sınıfa kaydolduğunu ve sınavda 0.957'lik bir puan için 22. sıradan (en alttan) puan aldığını söylüyor. Bu sınıfın genel zorluk seviyesi 0.0523'tür (çok kolay). Toplam 22 öğrenci kaydoldu. Bu öğrenci 590 matematik, 380 sözel SAT puanı olan ikinci sınıf öğrencisi (2. sınıf). Genel olarak sahip oldukları akademik güçleri 16,9'dur. O zamanlar dört sınıfa kaydoldular.

Bu veri kümesi, sorudaki açıklama ile karşılaştırılır. Örneğin, yüzde sıraları gerçekten neredeyse aynıdır (herhangi bir tam veri kümesi için olması gerektiği için, çünkü tek bir sınıfın yüzde sıralarının ayrık bir düzgün dağılımı vardır).

Unutmayın, betabu modeldeki katsayılar sayesinde inceleme puanları ile bu veri kümesinde gösterilen değişkenler arasında güçlü bir bağlantı olduğunu varsaymaktadır . Peki, regresyon ne gösteriyor? Yüzde derecesinin lojistiğini, yetenekleriyle ilgili olabilecek tüm gözlemlenebilir öğrenci özelliklerine ve sınıf zorluğunun göstergelerine karşı inceleyelim:

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 

Teşhis grafikleri ( plot(fit)) fastastik görünüyor: kalıntılar homoscedastik ve güzel normaldir (biraz kısa kuyruklu olsa da, sorun değil); aykırı değer yok; ve hiçbir gözlemde istenmeyen bir etki yoktur.

3.5(9,1.6,3.4,3.9,0.009,0.007,0.7)(,1,3,4,0.010,0.010,) açıkça belirtilmeyen bir katsayıyı ifade eder).

level07level

(Bu arada, regresyonda dönüştürülmemiş yüzde derecelerinin kullanılması, aşağıda bildirilen sonuçları niteliksel olarak değiştirmez.)

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

Sınıf ödevi grafiği

spread38spread1

Bu sefer R kare çok gelişti (yine de büyük olmasa da). Ancak, tüm katsayılar% 20 - 100 artmıştır. Bu tablo onları bazı ek simülasyonlarla karşılaştırır:

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

Bu hızlı analiz, regresyonun, en azından burada yapıldığı gibi, katsayılarla kaçınılmaz varyasyon biçimlerini karıştıracağını göstermektedir. Ayrıca, katsayılar (bir dereceye kadar) öğrencilerin sınıflar arasında nasıl dağıldığına da bağlıdır. Bu kısmen, burada yapıldığı gibi, regresyondaki bağımsız değişkenler arasında sınıf öznitelikleri eklenerek sağlanabilir, ancak öğrenci dağılımının etkisi ortadan kalkmaz.

Gerçek öğrenci performansının öngörülebilirliği eksikliği ve öğrenci öğrenimindeki herhangi bir değişiklik ve sınavlardaki gerçek performans, görünüşte katsayı tahminlerinin sıfıra düşmesine neden olur. Göreceli katsayıların yine de anlamlı olabileceğini düşündürerek bunu aynı şekilde yapıyorlar .


εivipijyijyij

Simülasyonunuz gözlemlenemeyen yetenekler ile SAT ve diğer puanlar arasındaki pozitif korelasyonu koruyorsa, OLS parametreleri yukarı doğru eğilimli olabilir mi? (Asim. Sapması kontroller-rastgele terim korelasyonu ile orantılıdır), bu da "negatif" parametrelerinizi açıklayabilir. sıfıra mı yaklaştı?
JDav

+1, ben istatistiksel fikirler üzerinde çalışmak için simülasyonları kullanmak büyük bir hayranıyım.
gung - Monica'yı eski durumuna döndürün

3

yij

μij

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

vieijeijμij

(Bu sadece önyargılı deneyimlerimden bir fikir, yorumlar ve eleştirmenler hoş karşılanmıyor.)

μijvi


1
Lojistik bir dönüşüm kullanma fikri iyi bir fikirdir, ancak bu tür regresyon modelinin sorunları vardır (cevabımda açıklandığı gibi).
whuber

μij

2

ln(p1p)


Lojistik regresyon sadece burada böyle görünmeyen ikili tepki değişkenleri için geçerlidir . Belki de rütbe yüzdesi logitinin sıradan gerilemesini mi öneriyorsunuz ?
whuber

1
Burada ne lojistik regresyon ne de sıradan doğrusal regresyon, whuber'ın nedenlerinden dolayı uygun. Ayrıca modelin Gauss kalıntılarına sahip olması durumunda, bunun yanıt için nasıl üniform bir dağılıma dönüştüğünü göremiyorum. Sıralamalarda bireysel öğrenciler arasındaki bağımlılık, analiz için çok önemli olduğunu düşünüyorum.
Michael R.Chernick

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

@J Dav Açıkladığınız anlamda "lojistik regresyon" kullanan herhangi bir referans bulamıyorum.
whuber

1
Sanırım şartlı bir Gauss dağılımı ile ortalamanın logit bağlantısı olan bir Genelleştirilmiş Doğrusal Model yapmak istiyor. (En azından bunun ne demek istediğini varsayacağım.)
Shea Parkes

0

Bu durumda mükemmel bir model, girdileri (sahip olduğunuz her türlü değişkeni) çıktılarla (sınıftaki öğrencinin sırası) eşler. Bunu düşünmenin başka bir yolu da önce skorlarla eşlemek ve daha sonra bu puanları rütbe ile eşlemektir. Şimdilik hatayı yok sayacağım.

y=βx

r=R(y)

RRyR(y)

Bu, genelleştirilmiş doğrusal modelin fonksiyonel biçimine oldukça benzer görünmektedir. Bence lojistik regresyon yaklaşımı @Mike Anderson tarafından önerildi. Sınav puanlarınız lojistik olarak dağıtıldıysa, kullanılacak bağlantı işlevi logit olur (tersi, önem verdiğimiz kümülatif yoğunluk işlevidir). Benzer şekilde, skorlar normal olarak dağıtıldıysa, probit işlevi link işlevi olacaktır.

Regresyonunuz için, sıraları tahmin etmenin tek yolu "verilerimin X olarak dağıtıldığı, bu noktanın 34. yüzdelik dilimde olduğunu" söylemektir. Aksi takdirde, test puanınızdaki iki puanlık artışın sıralama açısından ne anlama geldiğini nasıl bilebilirsiniz? Uyarı, bağlantı işlevinizi seçmek için bu dağılımı tahmin etmeniz gerektiğidir (bazı fonksiyonel formlar hayatınızı çok daha kolaylaştıracaktır). Dahası, bu model "38 sınıfının 6. en iyisiydiniz" demeyecek, bunun yerine "test puanları nasıl düşündüklerimize göre dağıtılmış olsaydı, puanınız sizi 15. yüzdelik dilime sokacaktır."

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.