Orijinal farkı doğru bir şekilde not ettiğiniz gibi, ilk durumda "ham" polinomları, ikinci durumda ise ortogonal polinomları kullanmanızdır. Daha sonra nedenle lm
çağrı içine değiştirilmiş: fit3<-lm(y~ poly(x,degree=2, raw = TRUE) -1)
biz arasına aynı sonuçları alacağı fit
ve fit3
. Nedeni neden biz bu durumda aynı sonuçları almak için "önemsiz" dir; taktığımızla aynı modele uyuyoruz fit<-lm(y~.-1,data=x_exp)
, orada sürpriz yok.
İki modelin model matrislerinin aynı olup olmadığını kolayca kontrol edebilirsiniz all.equal( model.matrix(fit), model.matrix(fit3) , check.attributes= FALSE) # TRUE
).
Daha ilginç olan, bir kesişim kullanırken neden aynı grafikleri elde edeceğinizdir. Dikkat edilmesi gereken ilk şey, bir modeli bir araya sokarak takarken
Durumunda fit2
basitçe dikey model tahminleri taşımak biz; eğrinin gerçek şekli aynıdır.
Öte yandan, fit
sonuçlarda bir kesişim dahil olmak üzere , dikey yerleştirme açısından sadece farklı bir çizgiye değil, genel olarak tamamen farklı bir şekle sahiptir.
Mevcut arsaya sadece aşağıdaki parçaları ekleyerek bunu kolayca görebiliriz.
fit_b<-lm(y~. ,data=x_exp)
yp=predict(fit_b,xp_exp)
lines(xp,yp, col='green', lwd = 2)
fit2_b<-lm(y~ poly(x,degree=2, raw = FALSE) )
yp=predict(fit2_b,data.frame(x=xp))
lines(xp,yp,col='blue')
Tamam ... Kesişim dahil uyumlar aynı iken kesişmesiz uyumlar neden farklıydı? Yakalama bir kez daha diklik durumundadır.
Durumunda fit_b
kullanılan model matris gram matrisi, ortogonal olmayan elemanları ihtiva crossprod( model.matrix(fit_b) )
çapraz uzaktır; fit2_b
elemanların dik olması durumunda ( crossprod( model.matrix(fit2_b) )
etkili bir şekilde diyagonaldir).
Bu nedenle, fit
bir kesişim içerecek şekilde genişlettiğimizde fit_b
, Gram matris TX'in köşegen olmayan girişlerini değiştirdik ve sonuçta ortaya çıkan uyum, bir bütün olarak (farklı eğrilik, kesişim, vb.) tarafından sağlanan uygun ile . Durumunda olduğu gibi biz bir yolunu kesmek dahil etmek genişletmek zaman olsa biz sadece zaten biz sütunlara dik olan bir sütun eklemek, diklik ise dereceye 0 sabit polinomun karşı . Bu, takılan hattımızı kesişme noktasından dikey olarak hareket ettirmekle sonuçlanır. Bu nedenle araziler farklı.XTXfit
fit2
fit2_b
İlginç soru , fit_b
ve öğelerinin neden fit2_b
aynı olduğudur; sonuçta model matrislerden alınır fit_b
ve yüz değerindefit2_b
aynı değildir . Burada nihayetinde bunu hatırlamamız ve aynı bilgilere sahip olmamız gerekiyor . sadece lineer bir kombinasyon olduğu için ortaya çıkan uyumları aynı olacaktır. Takılan katsayıda gözlemlenen farklar, değerleri dikleştirmek için değerlerin doğrusal rekombinasyonunu yansıtır . (G. Grothendieck cevaba bakınız burada çok farklı örneğin.)fit_b
fit2_b
fit2_b
fit_b
fit_b
=
ve<-
atama için kullanmanızdır . Bunu gerçekten yapmazdım, tam olarak kafa karıştırıcı değil, ancak kodunuza çok fazla görsel gürültü ekliyor. Kişisel kodunuzda kullanmak için birine ya da diğerine yerleşmeli ve sadece ona uymalısınız.