Önceki tüm çabalara meydan okuyan bu doğrusal olmayan çoklu regresyona uymama yardım et


9

EDIT: Bu yazı yaptığımdan beri, burada ek bir yazı ile takip ettim .

Aşağıdaki metnin özeti: Bir model üzerinde çalışıyorum ve doğrusal regresyon, Box Cox dönüşümleri ve GAM'ı denedim, ancak fazla ilerleme kaydetmedim

Kullanarak R, şu anda büyük lig (MLB) düzeyinde küçük lig beyzbol oyuncularının başarısını tahmin etmek için bir model üzerinde çalışıyorum. Bağımlı değişken, saldırgan kariyer değiştirmenin (oWAR) üstünde kazanır, MLB düzeyinde başarı için bir vekildir ve oyuncunun kariyeri boyunca dahil olduğu her oyun için rahatsız edici katkıların toplamı olarak ölçülür (ayrıntılar - http) : //www.fangraphs.com/library/misc/war/). Bağımsız değişkenler, yaş (büyük yaşta daha fazla başarılı olan oyuncular daha iyi olasılıklar olma eğilimindedir) dahil olmak üzere büyük lig düzeyinde başarının önemli bir göstergesi olduğu düşünülen istatistikler için z skorlu küçük lig saldırgan değişkenleridir [SOPct ], yürüyüş hızı [BBrate] ve ayarlanmış üretim (saldırgan üretimin küresel ölçüsü). Ek olarak, küçük liglerin birden fazla seviyesi olduğundan, küçük lig oyun seviyesi için kukla değişkenler ekledim (Çift A, Yüksek A, Düşük A, Çaylak ve Üçlü A ile Kısa Sezon [ana liglerden önceki en yüksek seviye] referans değişkeni olarak]). Not: WAR'u 0 ile 1 arasında değişen bir değişken olacak şekilde yeniden ölçeklendirdim.

Değişken dağılım grafiği aşağıdaki gibidir:

dağılım grafiği

Başvuru için, bağımlı değişken olan oWAR aşağıdaki şemaya sahiptir:

dependentvariableplot

Doğrusal bir regresyonla başladım oWAR = B1zAge + B2zSOPct + B3zBBPct + B4zAdjProd + B5DoubleA + B6HighA + B7LowA + B8Rookie + B9ShortSeasonve aşağıdaki teşhis planlarını elde ettim :

linearRegressionDiagnostics

Kalıntıların tarafsızlığı ve rastgele varyasyon eksikliği ile ilgili açık problemler vardır. Ayrıca, artıklar normal değildir. Regresyonun sonuçları aşağıda gösterilmiştir:

linearRegressionResults

Önceki bir konudaki tavsiyeyi takiben, hiç başarılı olmayan bir Box-Cox dönüşümü denedim. Sonra, günlük bağlantısı olan bir GAM denedim ve şu grafikleri aldım:

spline'lar

orijinal diagnosticChecksGAM

Yeni Tanı Grafiği GAMDiag

Yivler verilere uymaya yardımcı olmuş gibi görünüyor, ancak teşhis grafikleri hala zayıf bir uyum gösteriyor. DÜZENLEME: Başlangıçta takılan değerlere karşı artıklara baktığımı sanıyordum ama yanılmışım. Orijinal olarak gösterilen çizim Orijinal (yukarıda) olarak işaretlenir ve daha sonra yüklediğim çizim Yeni Teşhis Çizim olarak işaretlenir (ayrıca yukarıda)

GAMResults

R2 modelin arttı

fakat komuta tarafından üretilen sonuçlar gam.check(myregression, k.rep = 1000)umut verici değil.

GAMResults2

Herkes bu model için bir sonraki adım önerebilir mi? Şimdiye kadar kaydettiğim ilerlemeyi anlamak için yararlı olabileceğini düşündüğünüz diğer bilgileri vermekten mutluluk duyuyorum. Verebileceğiniz herhangi bir yardım için teşekkürler.


2
Kodu bu mükemmel primerde GAM'de R'de buldum - www3.nd.edu/~mclark19/learn/GAMS.pdf Kod: kütüphane (araba) scatterplotMatrix (mydata [, c (1,1: 8)], pch = 19, cex = .5, reg.line = F, lwd.smooth = 1.25, yayılma = F, elips = T, col = c ('gray60', '# 2957FF', '# FF8000'), col.axis = 'grey50')
zgall1

1
Veri kümenizi paylaşabilir misiniz? Ayrıca, bu dağılım grafiği matrisi için +1. Bu mükemmel.
Zach

1
Bu çok kötü, ilginç bir veri kümesine benziyor. Benim önerim başka bir makine öğrenme algoritması denemek, örneğin rastgele bir orman olabilir.
Zach

2
Rasgele ormanlar karar ağaçlarına dayanır. R'deki randomForest paketine ve rastgele orman wikipedia sayfasını kontrol edin: en.wikipedia.org/wiki/Random_forest
Zach

2
"Bağımlı değişken ... oyuncunun kariyeri boyunca dahil olduğu her oyuna yönelik saldırgan katkıların toplamı olarak ölçülür." Bu bana atlıyor. Burada ciddi bir karışıklık, bir oyuncunun ne kadar zamandır oynadığıdır, hem [a] daha uzun oynatma süresinin, daha iyi oyuncuların muhtemelen daha uzun süreler oynayacağı "daha iyi" oWAR "toplamak" için daha fazla zaman anlamına gelir.
Affine

Yanıtlar:


6

Güzel iş. Bence bu durum yarı-orantılı orantılı oransal sıralı lojistik modeli için bir adaydır. lrmR işlev rmspaket modeli uyacaktır. Şimdilik yuvarlamak isteyebilirsinizYsadece 100-200 seviyesine sahip. Yakında modelin binlerce müdahalesine verimli bir şekilde izin veren rmsyeni bir işlevle yeni bir sürümü yayınlanacak orm, yani,Y[sürekli güncelleme: 2014'te çıktı]. Orantılı olasılık modeliβs nasıl değişmez Ydönüştürülür. Yani kantil de değişmez. Tahmini bir ortalama istediğinizde,Y uygun aralık ölçeğinde olduğu varsayılır.


1
Seviyelere göre, Y değişkenini 100-200 kovaya bölmek mi? Öyleyse, kutu boyutunu seçmek için tercih edilen herhangi bir yöntem var mı? Aynı boyutta olmalılar mı?
zgall1

1
Sürekli çözüme sahip olmadıkça binlemeyi geçici olarak yapın. 100 yüzdelik dilime girebilirsiniz, örneğinrequire(Hmisc); cut2(y, g=100, levels.mean=TRUE)
Frank Harrell

Yeni sürümünün rmsyakında yayınlanacağını söylediğinizde , bunun ne zaman olabileceği hakkında bir fikriniz var mı?
zgall1

Eğer linux kullanıyorsanız, şimdi size verebilirim, aksi takdirde 2 hafta bekleyin.
Frank Harrell

Linux kullanmıyorum bu yüzden beklemem gerekecek. Lütfen ne zaman uygun olduğunu bana bildirin.
zgall1

1

Bağımlı değişken ve modelin yeniden çalışması burada verimli olabilir. Kalıntılarınıza baktığınız zaman lm(), asıl mesele, yüksek kariyere sahip SAVAŞ (tüm SAVAŞ'ın toplamı olarak tanımladığınız) oyunculara aittir. En yüksek tahmin edilen (ölçekli) SAVAŞIN maksimum 1 üzerinden 0,15 olduğuna dikkat edin! Bu bağımlı değişken ile bu sorunu daha da kötüleştiren iki şey olduğunu düşünüyorum:

  • Daha uzun süre oynayan oyuncuların SAVAŞ toplamak için daha fazla zamanı var
  • İyi oyuncular daha uzun süre korunma eğiliminde olacak ve böylece SAVET toplamak için daha uzun zamana sahip olma fırsatına sahip olacaklar.

Bununla birlikte, öngörme bağlamında, açıkça bir kontrol olarak oynanan zaman da dahil olmak üzere (herhangi bir şekilde, ağırlık olarak veya payda olarak ortalama kariyer savaşının hesaplanmasında) ters etki yaratır (ayrıca etkisinin de doğrusal olmayacağından şüpheleniyorum). Bu yüzden lme4veya kullanarak karma bir modelde zaman modelinin biraz daha az belirgin olmasını öneriyorum nlme.

Bağımlı değişkeniniz mevsimsel SAVAŞ olur ve farklı bir sayınız olur j=mi oyuncu başına sezon sayısı i. Model, rastgele bir etki olarak oyuncuya sahip olacak ve aşağıdaki çizgiler boyunca olacaktır:

sWbirR,benj=α+σben2+<diğer şeyler>+εbenj

İle lme4, bu gibi bir şey olurdu
lmer(sWAR ~ <other stuff> + (1|Player), data=mydata)

Hala dönüşüm yapmanız gerekebilir sWbirR,, ancak bunun bu geri bildirim döngüsünde yardımcı olacağını düşünüyorum.


Tam olarak anladığımdan emin değilim. Bağımlı değişken mevsimsel WAR ise bağımsız değişkenler nelerdir? Her oyuncu için aynı küçük lig statüsü mü? Esasen küçük lig statüsü A'nın büyük lig B, C, D ve E liglerine yol açabileceğini mi söylüyoruz?
zgall1

Ayrıca, bu modeli yayınladığımızdan beri, burada kontrol etmek isteyebileceğiniz ek bir gönderi izledim
zgall1
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.