R de çoklu regresyon için değişkenleri dönüştürme


26

İçinde çoklu bir regresyon gerçekleştirmeye çalışıyorum R. Bununla birlikte, bağımlı değişkenim aşağıdaki çizime sahiptir:

DV

İşte tüm değişkenlerime sahip bir scatterplot matrisi ( WARbağımlı değişkendir):

SPLOM

Bu değişken üzerinde bir dönüşüm gerçekleştirmem gerektiğini biliyorum (ve muhtemelen bağımsız değişkenler?) Ancak gereken tam dönüşümden emin değilim. Birisi beni doğru yöne işaret edebilir mi? Bağımsız ve bağımlı değişkenler arasındaki ilişki hakkında daha fazla bilgi vermekten memnuniyet duyuyorum.

Regresyonumdaki tanısal grafikler şu şekilde görünüyor:

Teşhis parselleri

DÜZENLE

Bağımlı ve bağımsız değişkenleri Yeo-Johnson dönüşümlerini kullanarak dönüştürdükten sonra, tanı grafikleri şöyle görünür:

Dönüşümden sonra

Kayıt bağlantısına sahip bir GLM kullanırsam, tanılama grafikleri şunlardır:

Log-linkli GLM


3
Merhaba @ zglaa1 ve hoş geldiniz. Neden değişkenleri dönüştürmeniz gerektiğini düşünüyorsunuz? İlk adım, regresyona orijinal değişkenlere uymak ve ardından uyuma (artıklar vb.) Bakmak olacaktır. Artıklar değişkenler değil yaklaşık olarak normal dağılmalıdır. Belki bu yazıyı ilginç bulacaksınız .
COOLSerdash

Hem bağlantı hem de öneri için teşekkür ederiz. Regresyonumu çalıştırdım ve değişkenlerin aşağıdaki arsaya göre dönüştürülmesi gerektiğini biliyorum: i.imgur.com/rbmu14M.jpg Artıklarda yansızlık ve sürekli değişkenlik eksikliği görebiliyorum. Ayrıca, normal değiller.
zgall1

@ COOLSerdash Bağlantıya bir göz attım. İstatistikte temel bir geçmişe sahibim, bu yüzden tartışmayı anladım. Ancak benim sorunum, aslında öğrendiğim teknikleri uygulama konusunda sınırlı bir deneyimim olması, bu yüzden gerekli dönüşümleri gerçekleştirmek için verilerimle (Excel veya R) tam olarak ne yapmam gerektiğini bulmakta zorlanıyorum.
zgall1

Grafik için teşekkürler. Bu uygunluğun yetersiz olduğunu söyleyerek kesinlikle haklısın. Lütfen regresyondaki DV ve IV'leri içeren bir dağılım grafiği matrisi hazırlayabilir misiniz? Bu, veri kümenizin nerede olacağı Rkomutuyla yapılabilir . pairs(my.data, lower.panel = panel.smooth)my.data
COOLSerdash

2
lmboxcox(my.lm.model)MASSλ

Yanıtlar:


30

John Fox'un kitabı Uygulanan regresyon için bir R arkadaşı , uygulamalı regresyon modellemesi için mükemmel bir kaynaktır R. Paket carbu yanıtında boyunca kullanmak beraberindeki paketidir. Kitabın ayrıca ek bölümleri olan bir web sitesi de var .


Yanıtı dönüştürme (aka bağımlı değişken, sonuç)

RlmboxCoxcarλfamily="yjPower"

boxCox(my.regression.model, family="yjPower", plotit = TRUE)

Bu, aşağıdaki gibi bir arsa üretir:

Box-Cox lambdaplot

λλ

Şimdi bağımlı değişkeni dönüştürmek için, işlevini kullanın yjPowergelen carpaketin:

depvar.transformed <- yjPower(my.dependent.variable, lambda)

lambdaλboxCox

Önemli: Bağımlı değişkeni log-dönüştürmek yerine, bir GLM'ye bir log-link takmayı düşünmelisiniz. İşte size daha fazla bilgi veren bazı referanslar: birinci , ikinci , üçüncü . Bunu yapmak için R, şunu kullanın glm:

glm.mod <- glm(y~x1+x2, family=gaussian(link="log"))

yBağımlı değişkeniniz nerede x1, x2vs. bağımsız değişkenleriniz.


Prediktör dönüşümleri

Dönüşümleri kesinlikle olumlu belirleyicileri bağımlı değişkenin dönüşümden sonra maksimum olabilirlik tahmin edilebilir. Bunu yapmak için, işlevini kullanın boxTidwellgelen car(bkz orijinal kağıt için paketin burada ). Bunu böyle kullanın: boxTidwell(y~x1+x2, other.x=~x3+x4). Burada önemli olan seçenek olmasıdır other.xolan regresyon şartlarını belirtir değil dönüştürülebilir için. Bu, tüm kategorik değişkenleriniz olacaktır. İşlev, aşağıdaki formun bir çıktısını üretir:

boxTidwell(prestige ~ income + education, other.x=~ type + poly(women, 2), data=Prestige)

          Score Statistic   p-value MLE of lambda
income          -4.482406 0.0000074    -0.3476283
education        0.216991 0.8282154     1.2538274

incomeλincomeincomenew=1/incomeold

Sitede bağımsız değişkenlerin dönüşümüyle ilgili çok ilginç bir yazı da bu .


Dönüşümlerin dezavantajları

Log dönüşümlü bağımlı ve / veya bağımsız değişkenler nispeten kolay yorumlanabilse de, daha karmaşık olan diğer dönüşümlerin yorumu daha az sezgiseldir (en azından benim için). Örneğin, bağımlı değişkenler tarafından dönüştürüldükten sonra regresyon katsayılarını nasıl yorumlarsınız?1/yλλ


Doğrusal olmayan ilişkileri modelleme

Lineer olmayan ilişkilere uyması için oldukça esnek olan iki yöntem kesirli polinomlar ve spline'lardır . Bu üç bildiri, her iki yönteme de çok iyi bir giriş sunmaktadır: Birinci , ikinci ve üçüncü . Ayrıca kesirli polinomlar hakkında bir kitap da var R. R Paketmfp uygular fraksiyonel polinomları değişkenli. Bu sunum kesirli polinomlar hakkında bilgilendirici olabilir. Spline'lara uyması için , paketten veya işlevlerden işlevi gam(genelleştirilmiş katkı modelleri, mükemmel bir giriş için buraya bakınız R) kullanabilirsiniz.mgcvns(doğal kübik spline) ve bs(kübik B-spline) paketten splines( bu fonksiyonların kullanımı için buraya bakınız ). İşlevini gamkullanarak spline'ları kullanarak hangi belirleyicilere uyacağınızı belirleyebilirsiniz s():

my.gam <- gam(y~s(x1) + x2, family=gaussian())

burada, x1bir spline kullanılarak ve x2normal bir lineer regresyonda olduğu gibi lineer olarak takılabilir . İçinde gamdağıtım ailesini ve link işlevini olduğu gibi belirleyebilirsiniz glm. Böylece log-link işlevine sahip bir modele uyması için, seçeneği family=gaussian(link="log")içinde gamolduğu gibi belirtebilirsiniz glm.

Bu yazıya siteden bir göz atın .


1
İyi açıklama. Açık Box-Cox'un gerçekten bir dönüşüm seçmenin en yaygın yöntemi olduğunu bilmiyorum. Herhangi bir şekilde günlükleri seçen insanları sayarsanız, benim kendi vahşi tahminim, bunun bir azınlık yöntemi olduğudur. Bu seçici nokta doğal olarak başka hiçbir şeyi etkilemez.
Nick Cox,

@NickCox Teşekkürler (Cevabınız için +1, btw). Box-Cox'un en yaygın yöntem olduğu ifadesi John Fox'un kitabından geliyor. Bu ifadeyi yargılamak için yeterli deneyime sahip olmadığım için yüz değerinden aldım. Ben ifadeyi kaldıracağım.
COOLSerdash

Detaylı açıklama için çok teşekkür ederim. Bunu şimdi verilerime uygulamaya çalışacağım.
zgall1

@ COOLSerdash Ayrıntılı adımlarınızı kullanarak, Box Cox dönüşümünü bağımlı ve sonra bağımsız değişkenlerime uyguladım ve tanı değişkenlerimin arsalarını aldım - i.imgur.com/eO01djl.jpg Açıkçası, bir gelişme var ama hala var gibi görünüyor sürekli değişkenlik ve tarafsızlığa sahip konular olmalı ve kesinlikle normallikle ilgili bir sorun var. Buradan nereye gidebilirim?
zgall1

1
@ zgall1 Geri bildiriminiz için teşekkür ederiz. Hm, evet, dönüşümler pek yardımcı olmamış gibi görünüyordu :). Bu noktada, büyük olasılıkla mgcvpaket ile birlikte genelleştirilmiş ilave modeller (GAM'ler) kullanan tahminciler için spline kullanmaya çalışacağım gam. Bu işe yaramazsa, benim istediğim yerindeyim korkarım. Burada benden çok daha deneyimli insanlar var ve belki size daha fazla tavsiye verebilirler. Ben de beyzbol ile bilgili değilim. Belki bu verilerle mantıklı olan daha mantıklı bir model vardır.
COOLSerdash

8

Bize cevabınızın (sonuç, bağımlı) değişkeninin niteliği hakkında daha fazla bilgi vermelisiniz. İlk arsadan, sıfıra yakın ve bazı negatif olan birçok değerle kuvvetli bir şekilde pozitif olarak çarpıktır. Bundan mümkün olabilir, ancak kaçınılmaz değil, dönüşüm size yardımcı olacaktır, ancak en önemli soru, dönüşümün verilerinizi doğrusal bir ilişkiye yakınlaştırıp yaklaştırmayacağıdır.

Yanıt için negatif değerlerin düz logaritmik dönüşümü engellediğini, ancak log (yanıt + sabit) olmadığını ve logaritmik bağlantıya sahip genelleştirilmiş bir doğrusal model olmadığını unutmayın.

Bu sitede, istatistiki insanları bölen log (yanıt + sabit) hakkında tartışan birçok cevap vardır: bazı insanlar bunu geçici ve çalışmak zor olarak görmekten hoşlanmazken, diğerleri meşru bir cihaz olarak görür.

Günlük bağlantısı olan bir GLM hala mümkündür.

Alternatif olarak, modelinizin bir çeşit karma işlemi yansıtması olabilir, bu durumda veri oluşturma işlemini daha yakından yansıtan özelleştirilmiş bir model iyi bir fikir olabilir.

(SONRA)

OP, yaklaşık 100 ila -2 arasında değişen değerlerle bağımlı bir WAR değişkenine sahiptir. Sıfır veya negatif değerlerin logaritmalarını almakla ilgili problemlerin üstesinden gelmek için, OP 0.000001 değerine sıfır ve negatif değerler önermektedir. Şimdi logaritmik bir ölçekte (taban 10) bu değerler yaklaşık 2 (100 ya da öylesine) ila -6 (0.000001) arasındadır. Logaritmik ölçekte ufak tefek noktaların azınlığı, artık büyük aykırıların azınlığıdır. Bunu görmek için başka birşeye karşı log_10 (fudged WAR) yazınız.


Yukarıda yayınlanan scatterplot'tan anlayabileceğiniz gibi, bir beyzbol istatistik veri seti kullanıyorum. Bağımsız değişken, WAR, esas olarak, bir oyuncunun kariyerleri boyunca ana lig seviyesinde kattığı değerin kümülatif bir ölçüsüdür. Bağımsız değişkenler, AdjSLG, SOPct ve BBPct, büyük lig seviyesindeki başarısını tahmin ettiği düşünülen küçük lig istatistikleridir. Yaş değişkeni, oyuncunun küçük lig istatistiklerini ürettiği yaştır. Sahte değişkenler, istatistiklerin üretildiği küçük lig düzeyini belirtmek için kullanılır.
zgall1

Negatif bağımsız değişken (WAR) konusu ile ilgili olarak, biraz karmaşık olan nedenlerden dolayı, dönüşüm sürecini kolaylaştırırsa, bunları sıfır olarak yeniden kodlamak makul olacaktır. Bu veri seti çerçevesinde bu haklı bir prosedürdür. Daha fazla ayrıntıya girmemi istiyorsanız (uyarı - beyzbol jargonu gerekir), bunu yapmaktan mutlu olurum.
zgall1

1
WAR sizin bağımlı değişkeninizmiş gibi görünüyor . Bu sitenin başka bir yerinde tartışan, iki terimin genellikle karıştığı iddiasına delil veriyorsunuz. Benim tavsiyem, negatif değerleri sıfırlara (veriyi kötüleştiren) yeniden kodlamak değil, log bağlantısı olan bir GLM kullanmaktır. Lütfen yanımda beyzbol minutisine ilgi duyduğunu veya bilmediğini varsayalım.
Nick Cox,

WAR'ın bağımlı değişkenim olduğu konusunda haklısın. Bir log link ile bir GLM içine bakacağım. Tavsiye için teşekkürler.
zgall1

1
Daha sonra kariyerin nasıl hesaplandığını bilmek yararlı olabilir (aka veri oluşturma işlemini anlayın).
Affine
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.