Eğri çizgiler verinin üzerinde duruyor mu?


47

Sorunum : Kısa süre önce, spline'ların yalnızca verileri araştırmak için yararlı olduğunu ve fazladan incelemeye maruz kaldığını, bu nedenle öngörmede fayda sağlamadığını bildiren bir istatistikçiyle tanıştım. Basit polinomlarla keşif yapmayı tercih etti ... Spline'ların büyük bir hayranı olduğum için ve bu sezgime aykırı olduğu için, bu argümanların ne kadar geçerli olduğunu ve eğer büyük bir anti-spline grubu olup olmadığını öğrenmek istiyorum. aktivistler orada mı?

Arkaplan : Modellerimi oluştururken Regresyon Modelleme Stratejileri (1) Frank Harrell'i izlemeye çalışıyorum. Kısıtlanmış kübik eğri çizgilerin sürekli değişkenleri araştırmak için geçerli bir araç olduğunu savunuyor. Ayrıca polinomların eşik, logaritmik gibi belirli ilişkileri modelleme konusunda yetersiz olduğunu savunuyor (2). Modelin doğrusallığını test etmek için spline için bir ANOVA testi önermektedir:

H0:β2=β3==βk1=0

Spline'lara fazla uyduğum için googledim ancak bu kadar faydalı bulamadım (çok fazla düğüm kullanmama konusunda genel uyarılar dışında). Bu forumda spline modelleme için, bir tercih var gibi görünüyor Kolassa , Harrell , kendini tutamayan .

Polinomlarla ilgili bir blog yazısı buldum, polinomları tahmin etmekten bahseden fazla şeytan şeytan . Gönderi şu yorumlarla bitiyor:

Bir dereceye kadar burada sunulan örnekler hile yapıyor - polinom regresyonunun oldukça sağlam olmadığı bilinmektedir. Uygulamada çok daha iyi, polinomlardan ziyade spline kullanmaktır.

Şimdi bu, spline'ların örnekte nasıl performans göstereceğini kontrol etmemi istedi:

library(rms)
p4 <- poly(1:100, degree=4)
true4 <- p4 %*% c(1,2,-6,9)
days <- 1:70

set.seed(7987)
noise4 <- true4 + rnorm(100, sd=.5)
reg.n4.4 <- lm(noise4[1:70] ~ poly(days, 4))
reg.n4.4ns <- lm(noise4[1:70] ~ ns(days,4))
dd <- datadist(noise4[1:70], days)
options("datadist" = "dd")
reg.n4.4rcs_ols <- ols(noise4[1:70] ~ rcs(days,5))

plot(1:100, noise4)
nd <- data.frame(days=1:100)
lines(1:100, predict(reg.n4.4, newdata=nd), col="orange", lwd=3)
lines(1:100, predict(reg.n4.4ns, newdata=nd), col="red", lwd=3)
lines(1:100, predict(reg.n4.4rcs_ols, newdata=nd), col="darkblue", lwd=3)

legend("top", fill=c("orange", "red","darkblue"), 
       legend=c("Poly", "Natural splines", "RCS - ols"))

Aşağıdaki görüntüyü verir: Spline ve polinomların karşılaştırılması

Sonuç olarak, beni tekrar gözden geçirme çizgileri konusunda ikna edecek bir şey bulamadım, neyi özlüyorum?

  1. FE Harrell, Regresyon Modelleme Stratejileri: Doğrusal Modellere Uygulamalar, Lojistik Regresyon ve Hayatta Kalma Analizi, Ciltli Kapaklı 1. Baskı'nın kapaklı baskısı. 2001. Springer, 2010.
  2. FE Harrell, KL Lee ve BG Pollock, “Klinik Çalışmalarda Regresyon Modelleri: Öngörü ve Tepki Arasındaki İlişkilerin Belirlenmesi” JNCI J Natl Cancer Inst, vol. 80, hayır. 15, sayfa 1198-1202, Ekim 1988.

Güncelleme

Yorumlar, veri aralığında neler olduğunu ama rahatsız edici kıvrımlarla beni meraklandırdı. Çoğu durumda, yukarıdaki örnekte gösterildiği gibi veri sınırlarının dışına çıkmıyorum. Bunun tahmin olarak nitelendirildiğinden emin değilim ...

Her neyse, burada polinomlara çevrilemeyen daha karmaşık bir çizgi oluşturduğum bir örnek. Gözlemlerin çoğu verilerin merkezinde olduğundan, bunu da benzetmeye çalıştım:

library(rms)
cmplx_line <-  1:200/10
cmplx_line <- cmplx_line + 0.05*(cmplx_line - quantile(cmplx_line, .7))^2
cmplx_line <- cmplx_line - 0.06*(cmplx_line - quantile(cmplx_line, .3))^2
center <- (length(cmplx_line)/4*2):(length(cmplx_line)/4*3)
cmplx_line[center] <- cmplx_line[center] + 
    dnorm(6*(1:length(center)-length(center)/2)/length(center))*10

ds <- data.frame(cmplx_line, x=1:200)

days <- 1:140/2

set.seed(1234)
sample <- round(rnorm(600, mean=100, 60))
sample <- sample[sample <= max(ds$x) & 
                     sample >= min(ds$x)]
sample_ds <- ds[sample, ]

sample_ds$noise4 <- sample_ds$cmplx_line + rnorm(nrow(sample_ds), sd=2)
reg.n4.4 <- lm(noise4 ~ poly(x, 6), data=sample_ds)
dd <- datadist(sample_ds)
options("datadist" = "dd")
reg.n4.4rcs_ols <- ols(noise4 ~ rcs(x, 7), data=sample_ds)
AIC(reg.n4.4)

plot(sample_ds$x, sample_ds$noise4, col="#AAAAAA")
lines(x=ds$x, y=ds$cmplx_line, lwd=3, col="black", lty=4)

nd <- data.frame(x=ds$x)
lines(ds$x, predict(reg.n4.4, newdata=ds), col="orange", lwd=3)
lines(ds$x, predict(reg.n4.4rcs_ols, newdata=ds), col="lightblue", lwd=3)

legend("bottomright", fill=c("black", "orange","lightblue"), 
       legend=c("True line", "Poly", "RCS - ols"), inset=.05)

Bu, aşağıdaki arsa verir:

Polinom dışı daha karmaşık bir çizgi grafiği

Güncelleme 2

Bu gönderiden bu yana , büyük bir veri setinde yaş için doğrusallıktan yoksun görünen bir makale yayınladım . Ek, farklı yöntemleri karşılaştırıyor ve bunun hakkında bir blog yazısı yazdım .


16
Dürüst olmak gerekirse istatistik arkadaşının nereden geldiğini gerçekten anlamıyorum. Polinom ve spline'larla aynı şekilde donatabilirsiniz. Aşırı donanım, aşırı kapasiteye sahip model sınıfınızdan gelir; çeşitli modellerin performansını ayırt eden, kapasitelerini nasıl kısıtladıklarıdır. (Doğal) eğri çizgiler için düğüm yerleştirme ve sayı, polinomlar için derecedir.
adam

1
@guy: Bu benim de inancım, hangi yöntemi kullanırsanız kullanın verilerinizi her zaman kullanabilirsiniz. Regresyon dersim sırasında profesörüm bana polinomların verilerin çoğunun gerçekleştiği yerde büküldüğünü ve aşırıları daha güvenilmez hale getirdiğini söyledi. Yine de bu iddiayı destekleyen bir yazı bulamadım.
Max Gordon

İlk grafiğinizdeki eğrilerin tümü sağ taraftaki verilere uymuyor.
Emil Friedman

1
Yukarıdaki grafiklerdeki 'x' boyutu zamana bağlı mı? Eğer öyleyse, bu yöntemlerden hiçbiri uygun değildir, çünkü her ikisi de modellemek için komşu noktaları (her iki tarafta) kullanmaları açısından 'ileriye dönüktür'.
arielf

@ arielf: Hayır, x bir zaman değişkeni değildir. Bunu, merkezdeki maksimum gözlem sayısını örneklediğimiz bir değişken olarak düşündüm. Araştırmamda geleceğe o kadar fazla bakmıyoruz, tahmin etmekten ziyade çıkarım alanında. Değişken bir kolesterol, kan basıncı, BMI veya başka bir yaygın sürekli değişken olması amaçlanmıştır.
Max Gordon,

Yanıtlar:


18

Aşırı donanım, çok geniş bir model sınıfına izin vermekten kaynaklanıyor. Bu, sürekli parametreli modellerde (spline ve polinomlar gibi) biraz zorlaşır, ancak eğer parametreleri belirli sayıda farklı değere ayırırsanız, düğüm / katsayı sayısının arttırılmasının katlanarak mevcut modellerin sayısını artıracağını göreceksiniz. . Her veri kümesi için, yeterli katsayılara / düğümlere izin verdiğiniz sürece, tam olarak oturan bir spline ve bir polinom vardır. Üç düğümü olan bir spline, üç katsayılı bir polinomdan daha fazlasını kaplıyor olabilir, ancak bu adil bir karşılaştırma değil.

Çok az sayıda parametreniz ve büyük bir veri kümeniz varsa, fazla uydurmadığınızdan emin olabilirsiniz. Daha yüksek sayıda parametre denemek istiyorsanız, en iyi sayıyı bulmak için test setinizde çapraz doğrulamayı deneyebilir veya Minimum Açıklama Uzunluğu gibi bir ölçüt kullanabilirsiniz .

ϵϵ

Şimdi, görev veri kümesini bazı polinomların yardımı ile mümkün olduğu kadar açık bir şekilde tanımlamak. İlk önce polinomu tarif ediyoruz. Eğer birinci dereceden bir polinom ise, sadece (n + 1) katsayıları kaydetmemiz gerekir. Yine, bu değerleri ayrıştırmamız gerekiyor. Bundan sonra, değerini saklamamız gerekir.nn+1parametre değerleri Bu bilgi ile kodumuzun bir alıcısı polinomu geri yükleyebilir. Sonra veri setini saklamak için gerekli bilgilerin geri kalanını ekleriz. Her veri noktası için, x değerini veririz ve ardından veri noktasının kaç tane aşağı veya yukarı kutusundan polinom yer alır. Her iki değer de öneksiz kodlamada depolanır, böylece kısa değerler az bit gerektirir ve noktalar arasında sınırlayıcılara ihtiyacımız olmaz. (Yalnızca değerler arasındaki artışları depolayarak x değerlerinin kodunu kısaltabilirsiniz)

Buradaki temel nokta, tradeoff. Bir sıra polinomu seçersem (f (x) = 3.4 gibi), modelin saklaması çok basittir, ancak y değerleri için, aslında ortalamanın mesafesini saklıyorum. Daha fazla katsayı bana daha uygun bir polinom (ve dolayısıyla y değerleri için daha kısa kodlar) verir, ancak modeli açıklamak için daha fazla bit harcamak zorundayım. Verileriniz için size en kısa kodu veren model, MDL kriterine en uygun olanıdır.

(Bunun 'ham MDL' olarak bilindiğini ve çeşitli teknik sorunları çözmek için yapabileceğiniz bazı iyileştirmeler olduğunu unutmayın).


Cevabınız için teşekkür ederim Peter. Başımı MDL'nin etrafına sarmayı denedim, özellikle nasıl uygulanacağını. Örneklerimden birine dayanarak açıklanması güzel olurdu. Bir istatistikçi olarak, temel lojistiği anlayabilmem için önce örneklenenlerin olmasını seviyorum. Wiki makalesindeki yazı örneği bana ulaşmadı ...
Max Gordon

Bir örnek ekledim.
Peter,

Örnek için teşekkür ederim Peter, şimdi bana çok daha açık.
Max Gordon,

20

İstatistikçiler, yıllardır polinom uydurma hakkında tartışıyorlardı ve deneyimlerime göre, bu aşağı gelir:

Splines, temelde, bir araya getirilmiş, eşitlenmiş değerlerin doğruluğunu, veri aralığının dışına yansıtma kabiliyeti pahasına artırma eğiliminde olan bir dizi farklı denklemdir. Verilerinizin saf olduğunu ve tutarlı bir kaynaktan geldiğini biliyorsanız ve farklı değerlerin değer aralığınızdaki varlığını açıklamaya çalışıyorsanız, sorun yoktur. Bununla birlikte, genellikle verilerimizi yönlendiren teorik temeller hakkında çok fazla şey öğrenemeyiz, çünkü yeni bir spline eski spline verileri doğru bir şekilde tanımlamayı bıraktığında başlar. Bu, verilerimizin dışındaki değerlerin tahminini neredeyse değersiz hale getirir.

Şimdi, spline'lar bu açıdan benzersiz değildir. Polinom fonksiyonlar aslında verilere uyarsak ve değişkenleri seçmek için teorik bir çerçeve kullanmıyorsak aynı problemden muzdariptir. Değişkenliğe izin verecek değişkenlere ve karmaşık bir polinom fonksiyonunun verilerin dışında tahminleri dışlama kabiliyetine ne kadar güveneceğine daha fazla güven duyacağına inanan, iyi biçimli bir teoriye sahip olanlar.

Ancak pek çok istatistikçi önceden belirlenmiş bir teorik çerçevenin yardımı olmadan verilerle çalışıyor ve bu da bazı insanları basit polinomlara doğru itiyor. Verilere uyan daha az esnek bir işlevin, verilerin dışındaki değerleri doğru bir şekilde tahmin etmesi daha muhtemeldir, çünkü işlevin verilerdeki anormallikler tarafından salınması daha az olasıdır. Bu konuda basit polinomları tercih eden insanlarla konuşmalar yaparken, spline karşıtı bir grup hissi almadım. Basit polinomlar, bazı istatistikçilerin aşırı giyinmekten kaçınmak konusunda kendilerini daha rahat hissetmelerini sağlıyor.

feragat

Şahsen, verilerimin çoğunda spline veya basit polinomları kullanmaya meyilli değilim, çünkü önceden belirlenmiş pek çok teorik çerçeveye sahip bir alanda çalışıyorum. Ayrıca, genellikle verilerin toplandığını gözlemledim ve sonuçları neyin yönlendirdiğini iyi bir şekilde anlayabiliyorum. Bu durumda, daha çok mantıksal bir algoritma yapıyorum ve bir polinom fonksiyonunun uygunluğunu test etmek yerine algoritmanın uygunluğunu test ediyorum. Cevabınıza bu tuz tanesini ekleyebilirsiniz.


18
Polinomlar , verilerdeki anomalilere karşı spline'lardan çok daha hassastır. Veri setinin herhangi bir yerindeki bir yersizin büyük bir küresel etkiye sahip olmasına rağmen, etkilerin yerel olduğu durumlarda.
adam

Amacınızı anlıyorum ve bu, mükemmel bir bilgi yaklaşımı kullanıyorsanız veya verilerin niteliği hakkında yeterli bilgiye sahip değilseniz geçerlidir. Pek çok istatistikçi (kendim dahil) verilere uymaya çalışmadan önce kusurlu bilgileri kabul eder ve bilinen bilgilere dayanan hariç tutma kriterlerini uygulama girişiminde bulunur. Tehlikeli aykırı değerler teorik olarak montaj girişiminin dışında bırakılmalıdır. Verilerin doğası hakkında bilinen bir bilgiye sahip değilseniz (ve bu oldukça yaygındır), o zaman aykırı değerler üzerinde çalışmaya çalışarak sıkışmışsınız demektir.
Dinre

5
Regresyon spline'larının polinomlardan ziyade tehlikeli olduğunu düşünerek daha iyi ikna edeceğim.
Frank Harrell

1
Bu yeni bir şey değil. Aksine, anlayışın erken aşamalarında yapılan istatistikler ile anlayışın sonraki aşamaları arasında görülen farktır. Bir sistemi ne kadar çok anlarsanız, monte edilmiş fonksiyonlara o kadar az güvenir ve teorik modellere o kadar güvenirsiniz.
Dinre

1
Veri noktalarının dışında doğrusal olması için işlevleri kısıtlayan sınırlı kübik eğri çizgiler kullanmaya ne dersiniz (Harrell'in kitabını okuyorum). Yine de ekstrapolasyon her zaman şüphelidir. Süper iletkenliği veya plazmayı keşfeden bir deney düşünün. Teori deneylerle kanıtlanmalı! Hangi fonksiyonların sığabileceği ile enterpolasyon problemi daha alakalı. Teori olmadan, tahminen hatalı (aynı zamanda bilinmeyen dağılım) ve y | x'in bilinmeyen dağılımını, yeterli veri verdiğiniz zaman bile tahmin edicilere sahip tek bir model seçemezsiniz.
KH Kim
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.