Ağırlıksız bir LinearModelFit veya NonlinearModelFit gerçekleştirilirken üretilen parametre hataları ne kadar anlamlı veya yararlıdır?
Bu, istatistik ve Çapraz Doğrulanmış SE alanına daha fazla ait olmanın eşiğine gelen bir soru olabilir , ancak ben ayrıca Mathematica uydurma rutinleriyle de özellikle ilgileniyorum.
Genellikle, bir modeli kullanarak bazı verilere uydurmak istersem NonlinearModelFit
veya LinearModelFit
benimle ilişkili bazı hatalar olur.$y$-uygulamaları tartmak için kullandığım veriler. Bu hatalar basitçe tekrarlanan ölçümlerden elde edilen standart hata olabilir veya fiziksel süreçler hakkında bir şeyler biliyor olabilir ve ağırlıkları atayabilirim.
Örneğin, Weights->1/YDataErrors^2
varyans tahmin edicimi her zaman olarak ayarlıyorum VarianceEstimatorFunction -> (1 &)
. Daha sonra parametre hatalarımı kovaryans matrisinden veya basitçe ile alabilirim MyFit["ParameterErrors"]
.
Bununla birlikte, bazı durumlarda, sığdırmak istediğiniz veriler için herhangi bir hata olmayabilir, yani yukarıda açıkladığım şekilde ağırlık sağlanamaz. O halde sorum şu: Mathematica'daki ağırlıklandırılmamış bir uyum için parametre hataları ne kadar güvenilir - veya daha da önemlisi - fiziksel / istatistiksel olarak ne kadar anlamlı?
Yanıtlar
Örneğin, birinin iki hata kaynağı varsa, örneğin bir ölçüm hatası ve bir uyumsuzluk hatası, o zaman ağırlıkların ölçüm hatalarına dayalı olarak kullanılması, standart hataların büyük ölçüde eksik tahminlerine neden olabilir. Aşağıdaki modeli düşünün:
$$y=a+b x +\gamma + \epsilon$$
nerede $y$ ölçülen yanıttır, $x$ tahmin edici $a$ ve $b$ sabitler tahmin edilecek, $\gamma$ ile tekrarlanan ölçüm hatası $\gamma \sim N(0,\sigma_{ME})$, ve $\epsilon$ uyumsuzluk hatası $\epsilon \sim N(0,\sigma)$ ve tüm hataların bağımsız olduğu varsayılır.
Önce bazı özel parametreleri ayarlayın:
(* Measurement error standard deviation *)
σME = 10;
(* Lack-of-fit error standard deviation *)
σ = 20;
(* Regression coefficients *)
a = 1;
b = 1;
Bazı verileri oluşturun ve planlayın:
n = 100;
x = Range[n];
SeedRandom[12345];
measurementError = RandomVariate[NormalDistribution[0, σME], n];
lackOfFitError = RandomVariate[NormalDistribution[0, σ], n];
y = a + b x + measurementError + lackOfFitError;
data = Transpose[{x, y}];
data2 = {#[[1]], Around[#[[2]], σME]} & /@ data;
ListPlot[data2]
Şimdi iki farklı doğrusal modelin lm1
önerdiğiniz ve lm2
benim önerdiğim yere uyduğunu düşünün :
lm1 = LinearModelFit[data, z, z, Weights -> 1/ConstantArray[σME^2, n],
VarianceEstimatorFunction -> (1 &)];
lm2 = LinearModelFit[data, z, z];
lm1["ParameterTable"]
lm2["ParameterTable"]
Parametrelerin tahminleri aynıdır, ancak için standart hatalar lm1
boyutun yarısından daha azdır lm2
. Hangisi doğru?
En küçük kareler tahmin edicilerinin a
ve b
bu model için "gerçek" kovaryans matrisi
$$\left(\sigma ^2+\sigma_{ME}^2\right) \left(X^T.X\right)^{-1}$$
nerede $X$tasarım matrisidir. In Mathematica için kod standart hata b
DİR
X = Transpose[{ConstantArray[1, n], Range[n]}]
Sqrt[(σME^2 + σ^2) Inverse[Transpose[X].X][[2, 2]]] // N
(* 0.0774635 *)
Bu çok iyi uyuyor lm2
.
Mathematica'nın regresyon fonksiyonları sadece tek bir hata terimine izin verdiğinden, tüm ölçüm standart hatalarının aynı olması nedeniyle bu biraz yapmacık bir örnektir . Ve ölçüm standart hatalarının aynı olması, tek bir hatayla eşdeğer bir modelle sonuçlanır.
Bununla birlikte, ölçüm standart sapmaları önemli ölçüde değişiklik gösterse bile, modelin hata yapısına uymayacak şekilde uygunsuz şekilde ağırlıklandırma sorunu devam etmektedir.
Mathematica'nın regresyon rutinleri, birden fazla hata kaynağı olan modeller için henüz yeterli değildir. Keşke olsalar.