Bu tür bir model aslında bazı bilim dallarında (örneğin fizik) ve mühendislikte "normal" doğrusal regresyondan çok daha yaygındır. Bu nedenle, fizik araçlarında ROOT
, bu tür bir uyum yapmak önemsizdir, lineer regresyon doğal olarak uygulanmaz! Fizikçiler bunu sadece "zinde" veya ki-kare minimize edici zinde olarak adlandırırlar.
Normal doğrusal regresyon modeli, genel bir varyans olduğunu varsayar. σher ölçüme bağlı. Daha sonra olasılığı en üst düzeye çıkarır
L ∝Πbene-12(yben- ( axben+ b )σ)2
veya eşdeğer olarak logaritması
günlük( L ) = c o n s t a n t -12σ2Σben(yben- ( axben+ b ))2
Bu nedenle, en küçük kareler adı - olasılığı en üst düzeye çıkarmak, karelerin toplamını en aza indirmekle aynıdır ve
σyeter ki gibi bir önemsiz sabittir
olduğu sabittir. Bilinen farklı belirsizlikleri olan ölçümlerle, maksimize etmek isteyeceksiniz
L ∝ ∏e-12(y- ( a x + b )σben)2
veya eşdeğer olarak logaritması
günlük( L ) = c o n s t a n t -12Σ(yben- ( axben+ b )σben)2
Yani, aslında ölçümleri ters varyansla ağırlıklandırmak istiyorsunuz
1 /σ2ben, varyans değil. Bu mantıklıdır - daha doğru bir ölçüm daha küçük belirsizliğe sahiptir ve daha fazla ağırlık verilmelidir. Bu ağırlık sabitse, yine de toplamın dışında olduğunu unutmayın. Yani, tahmin değerleri etkilemez, ancak
gerektiği ikinci türevi alınan standart hataları, etkileyen
günlük( L ).
Bununla birlikte, burada fizik / bilim ve genel olarak istatistikler arasında bir başka farka geliyoruz. Tipik olarak istatistiklerde, iki değişken arasında bir korelasyon olabileceğini beklersiniz, ancak nadiren kesin olur. Öte yandan fizik ve diğer bilimlerde, sadece sinir bozucu ölçüm hataları için olmasaydı, genellikle bir korelasyon veya ilişkinin kesin olmasını beklersiniz (ör.F= M bir, değil F= m a + ϵ). Sorununuz daha çok fizik / mühendislik olayına giriyor gibi görünüyor. Sonuç olarak, lm
ölçümlerinize ve ağırlıklarınıza bağlı belirsizlikleri yorumlamak istediğinizle tam olarak aynı değildir. Ağırlıkları alacak, ama yine de genel olarak var olduğunu düşünüyorσ2regresyon hatasını hesaba katmak, ki bu istediğiniz şey değil - ölçüm hatalarınızın var olan tek hata olmasını istiyorsunuz. ( lm
Yorumunun sonucu, yalnızca ağırlıkların göreceli değerlerinin önemli olduğudur, bu nedenle test olarak eklediğiniz sabit ağırlıkların hiçbir etkisi yoktur). Buradaki soru ve cevap daha fazla ayrıntıya sahiptir:
lm ağırlıkları ve standart hata
Oradaki cevaplarda birkaç olası çözüm var. Özellikle, anonim bir cevap,
vcov(mod)/summary(mod)$sigma^2
Temel olarak, lm
kovaryans matrisini tahminiσve bunu geri almak istiyorsunuz. Daha sonra istediğiniz bilgileri düzeltilmiş kovaryans matrisinden alabilirsiniz. Bunu deneyin, ancak manuel lineer cebir ile yapabiliyorsanız tekrar kontrol etmeye çalışın. Ve ağırlıkların ters varyanslar olması gerektiğini unutmayın.
DÜZENLE
Bu tür bir şeyi çok yapıyorsanız, kullanmayı düşünebilirsiniz ROOT
(ki bunu doğal olarak yapıyor lm
ve glm
yapmıyor gibi görünüyor ). İşte bunun nasıl yapılacağına dair kısa bir örnek ROOT
. Öncelikle, ROOT
C ++ veya Python ile kullanılabilir ve büyük bir indirme ve yükleme. Sen, bir Jüpiter Notebook üzerinden bağlantıyı takip tarayıcıda deneyebilirsiniz burada sağda "Bağlayıcı" seçerek ve soldaki "Python".
import ROOT
from array import array
import math
x = range(1,11)
xerrs = [0]*10
y = [131.4,227.1,245,331.2,386.9,464.9,476.3,512.2,510.8,532.9]
yerrs = [math.sqrt(i) for i in y]
graph = ROOT.TGraphErrors(len(x),array('d',x),array('d',y),array('d',xerrs),array('d',yerrs))
graph.Fit("pol2","S")
c = ROOT.TCanvas("test","test",800,600)
graph.Draw("AP")
c.Draw()
Belirsizlik olarak kare köklere koydum ydeğerler. Uygun çıktı
Welcome to JupyROOT 6.07/03
****************************************
Minimizer is Linear
Chi2 = 8.2817
NDf = 7
p0 = 46.6629 +/- 16.0838
p1 = 88.194 +/- 8.09565
p2 = -3.91398 +/- 0.78028
ve güzel bir arsa üretilir:
KÖK tesisatçısı aynı zamanda xmuhtemelen daha da hacklenmesi gereken değerler lm
. Herkes R bunu yapmak için yerel bir yol biliyorsa, ben öğrenmek istiyorum.
İKİNCİ DÜZENLEME
@Wolfgang'ın aynı önceki sorunun diğer cevabı daha da iyi bir çözüm sunuyor: paketteki rma
araç metafor
(Başlangıçta bu cevaptaki metni, kesişimin hesaplanmadığı anlamına geldiği için yorumladım, ancak durum böyle değil). Y ölçümlerindeki varyansların basitçe y olması:
> rma(y~x+I(x^2),y,method="FE")
Fixed-Effects with Moderators Model (k = 10)
Test for Residual Heterogeneity:
QE(df = 7) = 8.2817, p-val = 0.3084
Test of Moderators (coefficient(s) 2,3):
QM(df = 2) = 659.4641, p-val < .0001
Model Results:
estimate se zval pval ci.lb ci.ub
intrcpt 46.6629 16.0838 2.9012 0.0037 15.1393 78.1866 **
x 88.1940 8.0956 10.8940 <.0001 72.3268 104.0612 ***
I(x^2) -3.9140 0.7803 -5.0161 <.0001 -5.4433 -2.3847 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Bu kesinlikle bulduğum regresyon türü için en iyi saf R aracı.
boot
R'deki paketi kullanarak önyükleme yapabilirsiniz . Daha sonra önyüklemeli veri kümesi üzerinde doğrusal bir regresyonun çalışmasına izin verebilirsiniz.