N-1 değişkenlerini kullanarak kukla değişken nasıl uygulanır?


9

4 seviyeli bir değişkenim varsa, teoride 3 kukla değişken kullanmam gerekir. Uygulamada, bu aslında nasıl yapılır? 0-3 mü kullanıyorum, 1-3 mü kullanıyorum ve 4'ü boş mu bırakıyorum? Herhangi bir öneri?

NOT: R'de çalışacağım.

GÜNCELLEME: Yalnızca AD'ye karşılık gelen 1-4 kullanan bir sütun kullanırsam ne olur? Bu işe yarar mı yoksa sorun yaratacak mı?


3
Bence UCLA ATS'nin bu sayfası oldukça iyi açıklıyor.
caracal

4
Sadece tamsayılar 0-3 veya 1-4 veya 1-3 olarak bu değişkeni kodlama olduğu notu, açık olmak değil kodlama kukla ve edecektir değil üç kukla değişken olarak aynı etkiye sahiptir. Ancak, böyle bir yanlış kodlama irade regresyon formüller ve yazılım iş ve orada olacaktır makul çıktı be: sadece amaçlanan modeline karşılık vermez. (Not: bu, sorudaki son güncellemeyi cevaplar. )
whuber

Yanıtlar:


11

Pratikte, kişi genellikle tercih edilen yazılımın kukla değişkenleri oluşturma ve manipüle etmesine izin verir. Ele alınmasının birkaç yolu vardır; A, B, C ve D'nin her seviyesinde biri olmak üzere dört gözlemli bir veri kümesi için birkaç yaygın olasılık vardır: Bunlar farklı parametrelendirmelerdir; tam olarak aynı model uyumuyla sonuçlanır, ancak parametrelere farklı yorumlar yapılır. Temel cebiri kullanarak birinden diğerine kolayca dönüşebilir; hepsinin birbirinin doğrusal kombinasyonları olduğunu unutmayın; aslında, herhangi bir doğrusal kombinasyon kullanılabilir.

İlk seviyeden farkları kullanın (R'de varsayılan):

A 0 0 0
B 1 0 0
C 0 1 0
D 0 0 1

Son düzeyden farkları kullanın (SAS'ta varsayılan):

A 1 0 0
B 0 1 0
C 0 0 1
D 0 0 0

"Toplam" kontrastlarını kullanın:

A    1    0    0
B    0    1    0
C    0    0    1
D   -1   -1   -1

"Helmert" kontrastlarını kullanın:

A   -1   -1   -1
B    1   -1   -1
C    0    2   -1
D    0    0    3

1
Saflık uğruna, kukla değişkenlerin katı örnekte örneklerinizin sadece 1 ve 2'si olduğunu söyleyebilirim . Kukla değişkenler gösterge kontrast değişkenleri olarak da bilinir . Helmert , sapma ve diğer alternatif kontrast değişkenleri benim için kukla olarak adlandırılmamalıdır .
ttnphns

1
@ttnphns Helmert kontrastlarının teknik açıdan kukla kodlama oluşturmadığı konusunda hemfikirim, ancak yine de buraya dahil edilmelerinin son derece makul olduğunu düşünüyorum. Bunu netlik uğruna belirttiğinizi veya cevabın değiştirilmesini önerdiğinizi söyleyemem. @ Aaron +1, bu farklı kodlama şemalarının yorumunun nasıl farklı olacağını kısaca açıklasaydınız bu cevap daha da iyi olurdu.
gung - Monica'yı eski durumuna getirin

7

Değişken seviyelerinizin A, B, C ve D olduğunu varsayalım. Regresyonda sabit bir terim varsa, üç kukla değişken kullanmanız gerekir, aksi takdirde dördüne de sahip olmanız gerekir.

Kukla değişkenleri uygulayabileceğiniz matematiksel olarak eşdeğer birçok yol vardır. Regresyonda sabit bir teriminiz varsa, yollardan biri "taban çizgisi" düzeyi olarak düzeylerden birini seçmek ve diğer üçünü bununla karşılaştırmaktır. Somutluk için, temel seviyenin A olduğunu söyleyelim. O zaman, ilk kukla değişkeniniz seviye B ve 0 olduğunda 1 değerini alır; ikincisi seviye C ve 0 olduğunda 1 değerini alır ve üçüncüsü seviye D ve 0 olduğunda 1 değerini alır. Sabit teriminiz her zaman 1'e eşit olduğundan, ilk kukla değişkenin tahmini katsayısı, B ve A seviyesi arasındaki farkın tahmini ve diğer kukla değişkenler için benzer olacaktır.

Sabit bir teriminiz yoksa, yalnızca önceki örnekte olduğu gibi yapılandırılmış dört kukla değişken kullanabilirsiniz, sadece A düzeyi için bir tane ekleyin.


Regresyonda sabit bir terimin olmasıyla ilgili güzel bir not.
Aaron Stack Overflow'dan ayrıldı

5

R'de, değişkeni bir faktör olarak tanımlayın ve bunu sizin için uygular:

x <- as.factor(sample(LETTERS[1:4], 20, replace = TRUE))
y <- rnorm(20)
lm (y ~ x)

hangisi geri döner

Call:
lm(formula = y ~ x)

Coefficients:
(Intercept)           xB           xC           xD  
     1.0236      -0.6462      -0.9466      -0.4234  

R'deki 'lm', 'faktör' ve 'formül' belgeleri bazı ayrıntıları doldurur.


1
+1 Bu, listelenen cevapların hoş bir tamamlayıcısıdır. Ayrıca, grup adlarına (AD gibi) sahip bir değişkeniniz varsa, bunun ek bir adım olmadan analiz işlevi çağrısında yapılabileceğini de belirtebiliriz: lm(y ~ as.factor(x))
gung - Monica'yı eski durumuna döndürün

Kukla değişkenler kullanmanın ana nedeni, birçok faktör düzeyi (> 32) olan büyük bir veri kümesi ile çalışmam ve R'deki bazı paketler (yani rastgele orman) birçok düzeydeki faktörleri işleyemememdir, bu yüzden deniyordum kuklaların bir iş olup olmadığını görmek için.
screechOwl

1
Regresyon tasarım matrisini 'model.matrix' kullanarak oluşturabilirsiniz: model.matrix (y ~ x) (x hala bir faktördür) size kukla değişkenlerle bir matris verecektir. Randomforest paketine aşina değilim, ancak herhangi bir fonksiyona model.matrix'ten aldığınız açık bir tasarım matrisi verebileceğinden şüpheleniyorum ve model.matrix birçok (yani yüzlerce) seviye ile çalışıyor gibi görünüyor.
Gri

ps: Soruyu, birçok düzeyle çalışan çözümlere önem verdiğinizi açıklığa kavuşturmak için düzenlemek isteyebilirsiniz. Soru 4. soruyor.
Gray

4

whuber, yorumlarda size kukla değişkenler oluşturmak yerine 0-3 veya 1-4 kodlamasının istediğiniz şey olmadığını söyledi. Bu denemek - umarım bu modelle ne yapacağınızı ve neden yanlış olduğunu açıklayacağım.

A değişkenini X sonra 1, B sonra X = 2, C sonra X = 3, D sonra X = 4 ise regresyon yaptığınızda regresyon yaptığınızda sadece bir parametre alacak şekilde X değişkenini kodlarsanız. Diyelim ki X ile ilişkili tahmini parametre 2 oldu. Bu size B'nin ortalaması ile A'nın ortalaması arasındaki beklenen farkın 2 olduğunu söyleyecektir. Ayrıca, C'nin ortalaması arasındaki beklenen farkın da olduğunu söyler. ve B'nin ortalaması 2'dir. Bazıları D ve C için. Bu grupların araçlarındaki farklılıkları bu çok sıkı modeli izlemeye zorlarsınız. Bu bir parametre size grubunuzun tümünün birbiriyle nasıl ilişkili olduğunu tam olarak anlatır.

Dolayısıyla, bu tür bir kodlama yaptıysanız, siparişi doğru bir şekilde elde etmekle kalmayıp, bu durumda A'dan B'ye bir artış bekliyorsanız, B'den C'ye ve C'den bir artış beklemeniz gerekir. D) aynı zamanda bu farkın aynı olduğunu varsaymanız gerekir!

Bunun yerine, önerilen kukla kodlamayı yaparsanız, her grubun kendi ortalamasına sahip olmasına izin veriyorsunuz - kısıtlama yok. Bu model çok daha mantıklı ve istediğiniz soruları cevaplıyor.

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.