Dans quelle mesure les erreurs de paramètres sont-elles significatives ou utiles lors de l'exécution d'un LinearModelFit ou NonlinearModelFit non pondéré?

Aug 16 2020

C'est peut-être une question qui est sur le point d'appartenir davantage au domaine des statistiques et de la SE validée croisée , mais je suis aussi particulièrement intéressé par les routines d'appareillage Mathematica.

Habituellement, si je veux adapter un modèle à certaines données en utilisant l'un NonlinearModelFitou l' autre, LinearModelFitj'aurai des erreurs associées à mon$y$-données que j'utilise pour pondérer les ajustements. Ces erreurs peuvent être simplement l'erreur standard acquise à partir de mesures répétées, ou je pourrais savoir quelque chose sur les processus physiques et attribuer des poids.

Par exemple Weights->1/YDataErrors^2, je règle toujours mon estimateur de variance sur VarianceEstimatorFunction -> (1 &). Je peux ensuite obtenir mes erreurs de paramètres à partir de la matrice de covariance, ou simplement avec MyFit["ParameterErrors"].

Cependant, dans certains cas, il se peut que vous n'ayez aucune erreur pour les données que vous souhaitez ajuster, ce qui signifie que vous ne pouvez pas fournir de poids de la manière décrite ci-dessus. Ma question est donc de savoir dans quelle mesure les erreurs de paramètres d'un ajustement non pondéré dans Mathematica sont-elles fiables - ou plus important encore - dans quelle mesure les erreurs de paramètres sont-elles significatives physiquement / statistiquement?

Réponses

4 JimB Aug 16 2020 at 19:20

Par exemple, si l'on a deux sources d'erreur, disons une erreur de mesure et une erreur de manque d'ajustement, alors l'utilisation des poids basés sur les erreurs de mesure peut entraîner des sous-estimations grossières des erreurs standard. Considérez le modèle suivant:

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

$y$ est la réponse mesurée, $x$ est le prédicteur, $a$ et $b$ sont des constantes à estimer, $\gamma$ est l'erreur de mesure répétée avec $\gamma \sim N(0,\sigma_{ME})$, et $\epsilon$ est l'erreur de manque d'ajustement avec $\epsilon \sim N(0,\sigma)$ et toutes les erreurs sont supposées indépendantes.

Définissez d'abord quelques paramètres spécifiques:

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

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

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

Générez et tracez des données:

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]

Considérons maintenant deux modèles linéaires différents, où lm1est ce que vous suggérez et lm2ce que je suggère:

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

lm2["ParameterTable"]

Les estimations des paramètres sont identiques mais les erreurs types pour lm1sont inférieures de moitié à celles de lm2. Laquelle est correcte?

La «vraie» matrice de covariance des estimateurs des moindres carrés de aet bpour ce modèle est

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

$X$est la matrice de conception. Dans le code Mathematica , l'erreur standard pour best

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

Cela correspond assez bien avec lm2.

Il s'agit d'un exemple légèrement artificiel dans la mesure où toutes les erreurs standard de mesure sont identiques car les fonctions de régression de Mathematica n'autorisent qu'un seul terme d'erreur. Et en ayant les erreurs standard de mesure identiques, il en résulte un modèle équivalent avec une seule erreur.

Cependant, même lorsque les écarts-types de mesure varient considérablement, le problème de la pondération incorrecte telle qu'elle ne correspond pas à la structure d'erreur du modèle demeure.

Les routines de régression de Mathematica ne sont pas encore adéquates pour les modèles comportant plus d'une source d'erreur. J'aurais aimé qu'ils le soient.