R'de doğal kübik spline düğümleri ayarlamak


23

Çok sayıda ilişkili özelliğe sahip verilerim var ve bir LDA'yı çalıştırmadan önce özellikleri düzgün bir temel işleviyle azaltarak başlamak istiyorum. splinesPaketinde doğal kübik spline nsişlevini kullanmaya çalışıyorum . Düğümleri nasıl atabilirim?

İşte temel R kodu:

library(splines)
lda.pred <- lda(y ~ ns(x, knots=5))

Ama budakların nasıl seçileceği hakkında hiçbir fikrim yok ns.


3
Düğümlerin nasıl belirtileceğini mi soruyorsunuz (yani, ns argümanlarını kullanarak ) veya düğümleri nereye yerleştireceğinize karar vermek için stratejiler mi soruyorsunuz? R,
kardinal

1
Düğümlerin nereye yerleştirileceğine dair iyi bir tartışma için bkz. Harrell, Regression Strategies 2015, (önemli değil, bu yüzden miktarlar her şey kadar iyidir - istisnalar, bir noktada davranış değişikliklerine inanmak için sağlam nedenleriniz varsa) ve (N bağlı olarak, 3, 4, ya da 5) düğüm sayısı
statsguy

Yanıtlar:


40

R knot nasıl belirlenir

nsİşlevi üreten doğal regresyon eğri bir giriş vektörü verilen temel. Düğümler, dfbir tamsayı alan serbestlik dereceli bir argümanla veya düğümlerin istenen yerleşimini veren knotsbir vektör alan bir düğüm argümanı ile belirtilebilir. Yazdığınız kodda

library(splines)
lda.pred <- lda(y ~ ns(x, knots=5))

Beş düğüm talep etmediniz, ancak 5. konumda tek bir (iç) düğüm istediniz .

dfArgümanı kullanırsanız, iç düğümler vektörün miktarlarına göre seçilecektir.x . Örneğin, aramayı yaparsanız

ns(x, df=5)

Daha sonra, temel , 20, 40, 60 ve 80'inci miktarlarda yerleştirilmiş iki sınır düğümü ve 4 iç düğüm içerir.x , sırasıyla . Sınır düğümleri, varsayılan olarak, minimum ve maks x.

İşte deniz mili konumlarını belirtmek için bir örnek

x <- 0:100
ns(x, knots=c(20,35,50))

Onun yerine arayacak olsaydın ns(x, df=4) olursanız, sırasıyla 25, 50 ve 75 konumlarında 3 iç düğüm ile bitirdiniz.

Kesişim terimi isteyip istemediğinizi de belirleyebilirsiniz. Normalde bu ,ns çoğu zaman lmdolaylı olarak bir kesişme içeren (buna zorlanmadığı sürece) ile birlikte kullanıldığı için belirtilmez . Eğer kullanırsanız intercept=TRUEçağrınızda ns, bildiğinizden emin olun neden Bunu yaparken Bunu ve daha sonra ararsanız beri, lmsafça, tasarım matris mertebe eksik sona erecek.

Düğüm yerleştirme stratejileri

Düğümler, varsayılan davranış gibi, en çok niceliklere yerleştirilir ns. Sezgi, birbirine yakın kümelenmiş çok sayıda veriye sahipseniz, o bölgedeki olası doğrusal olmayanlıkları modellemek için orada daha fazla düğüm isteyebilirsiniz. Ancak bu, (a) tek seçenek veya (b) en iyi seçenek olduğu anlamına gelmez.

Diğer seçimler açıkça yapılabilir ve alana özeldir. Belirteçlerinizin histogramlarına ve yoğunluk tahminlerine bakıldığında, verileriniz verilen bazı "kanonik" seçenekler olmadığı sürece, düğümlerin nerede gerektiği konusunda ipuçları sağlayabilir.

Regresyonların yorumlanması açısından, düğüm yerleşimi ile kesinlikle "oynamayı" rağmen, bunun için herhangi bir çıkarımı değerlendirmek için dikkatli olmanız ve herhangi bir çıkarımı ayarlamak için dikkatli olmanız gerektiğinin farkında olmalısınız. sonuç.


verilmiş x <- 0:100 , kesme noktalarını tanımlamanın "uygun" yolu knots_x <- quantile(x, probs=c(.2, .35, .5)), daha sonra ns(x, knots=knots_x)sırasıyla 25, 50 ve 75 konumlarında 3 iç düğüm tanımlamak için kullanılacaktır . Ne var bana cevap karıştı ben istenen miktarlarını belirlemek için ihtiyaç bekliyordum olmasıydı knotsben gelen giriş gerçek değerler gerek oysa argüman x... vektörü
landroni

Sağlık Anketlerinin Analizi, Edward L. Korn, Barry I. Graubard s.98, Durrleman ve Simon'ın (1989) doğal hatlar için tavsiye ettiği (0.05.0.50.0.95)
Chris
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.