Quanto sono significativi o utili gli errori di parametro prodotti quando si esegue un LinearModelFit o NonlinearModelFit non ponderato?

Aug 16 2020

Questa potrebbe essere una domanda che vacilla sull'orlo di appartenere maggiormente al regno della statistica e dell'SE con convalida incrociata , ma sono anche specificamente interessato alle routine di adattamento di Mathematica.

Di solito, se voglio adattare un modello ad alcuni dati utilizzando uno NonlinearModelFito l'altro LinearModelFit, avrò alcuni errori associati al mio$y$-dati che uso per valutare gli attacchi. Questi errori potrebbero essere semplicemente l'errore standard acquisito da misurazioni ripetute, oppure potrei sapere qualcosa sui processi fisici e posso assegnare pesi.

Ad esempio, Weights->1/YDataErrors^2e ho sempre impostato il mio stimatore della varianza come VarianceEstimatorFunction -> (1 &). Posso quindi ottenere i miei errori di parametro dalla matrice di covarianza o semplicemente con MyFit["ParameterErrors"].

Tuttavia in alcuni casi potrebbe non esserci alcun errore per i dati che si desidera adattare, il che significa che non è possibile fornire i pesi nel modo descritto sopra. La mia domanda è quindi: quanto sono affidabili - o cosa più importante - quanto sono fisicamente / statisticamente significativi gli errori dei parametri per un adattamento non ponderato in Mathematica?

Risposte

4 JimB Aug 16 2020 at 19:20

Ad esempio, se si hanno due fonti di errore, ad esempio un errore di misurazione e un errore di mancanza di adattamento, l'utilizzo dei pesi basati sugli errori di misurazione può comportare una grave sottostima degli errori standard. Considera il seguente modello:

$$y=a+b x +\gamma + \epsilon$$

dove $y$ è la risposta misurata, $x$ è il predittore, $a$ e $b$ sono costanti da stimare, $\gamma$ è l'errore di misurazione ripetuto con $\gamma \sim N(0,\sigma_{ME})$, e $\epsilon$ è l'errore di mancanza di adattamento con $\epsilon \sim N(0,\sigma)$ e si presume che tutti gli errori siano indipendenti.

Per prima cosa imposta alcuni parametri specifici:

(* Measurement error standard deviation *)
σME = 10;

(* Lack-of-fit error standard deviation *)
σ = 20;

(* Regression coefficients *)
a = 1;
b = 1;

Genera e traccia alcuni dati:

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]

Ora considera due diversi modelli lineari adatti dove lm1è ciò che suggerisci ed lm2è ciò che suggerisco:

lm1 = LinearModelFit[data, z, z, Weights -> 1/ConstantArray[σME^2, n],
   VarianceEstimatorFunction -> (1 &)];
lm2 = LinearModelFit[data, z, z];
lm1["ParameterTable"]

lm2["ParameterTable"]

Le stime dei parametri sono identiche ma gli errori standard per lm1sono meno della metà di quelli per lm2. Quale è corretto?

La matrice di covarianza "vera" degli stimatori dei minimi quadrati di ae bper questo modello è

$$\left(\sigma ^2+\sigma_{ME}^2\right) \left(X^T.X\right)^{-1}$$

dove $X$è la matrice del design. Nel codice Mathematica l'errore standard per bè

X = Transpose[{ConstantArray[1, n], Range[n]}]
Sqrt[(σME^2 + σ^2) Inverse[Transpose[X].X][[2, 2]]] // N
(* 0.0774635 *)

Quello si abbina abbastanza bene con lm2.

Questo è un esempio un po 'artificioso in quanto ho tutti gli errori standard di misurazione identici perché le funzioni di regressione di Mathematica consentono solo un singolo termine di errore. E avendo gli errori standard di misurazione identici, si ottiene un modello equivalente con un singolo errore.

Tuttavia, anche quando le deviazioni standard di misurazione variano considerevolmente, rimane il problema di una ponderazione impropria tale da non corrispondere alla struttura di errore del modello.

Le routine di regressione di Mathematica non sono ancora adeguate per i modelli con più di una fonte di errore. Vorrei che lo fossero.