Je voudrais estimer l'incertitude ou la fiabilité d'une courbe ajustée. Je ne nomme pas intentionnellement une quantité mathématique précise que je recherche, car je ne sais pas ce que c'est.
Ici, (énergie) est la variable dépendante (réponse) et (volume) est la variable indépendante. Je voudrais trouver la courbe énergie-volume, , de certains matériaux. J'ai donc fait quelques calculs avec un programme informatique de chimie quantique pour obtenir l'énergie pour certains volumes d'échantillons (cercles verts dans l'intrigue).
J'ai ensuite ajusté ces échantillons de données avec la fonction Birch – Murnaghan : qui dépend de quatre paramètres: . Je suppose également que c'est la fonction d'ajustement correcte, donc toutes les erreurs viennent simplement du bruit des échantillons. Dans ce qui suit, la fonction ajustée sera écrit en fonction de .
Ici vous pouvez voir le résultat (ajustement avec un algorithme des moindres carrés). La variable de l' axe des y est et la variable x est l' axe . La ligne bleue est l'ajustement et les cercles verts sont les points d'échantillonnage.
J'ai maintenant besoin d'une certaine mesure de la fiabilité (au mieux en fonction du volume) de cette courbe ajustée, , car j'en ai besoin pour calculer d'autres quantités comme les pressions de transition ou les enthalpies.
Mon intuition me dit que la courbe ajustée est la plus fiable au milieu, donc je suppose que l'incertitude (disons la plage d'incertitude) devrait augmenter vers la fin des données de l'échantillon, comme dans ce croquis:
Cependant, quel est ce type de mesure que je recherche et comment puis-je le calculer?
Pour être précis, il n'y a en fait qu'une seule source d'erreur ici: les échantillons calculés sont bruyants en raison des limites de calcul. Donc, si je calculais un ensemble dense d'échantillons de données, ils formeraient une courbe cahoteuse.
Mon idée pour trouver l'estimation d'incertitude souhaitée est de calculer l '' 'erreur' 'suivante en fonction des paramètres au fur et à mesure que vous l'apprenez à l'école ( propagation de l'incertitude ):
Est-ce une approche acceptable ou je me trompe?
PS: Je sais que je pourrais aussi simplement résumer les carrés des résidus entre mes échantillons de données et la courbe pour obtenir une sorte d '«erreur standard», mais cela ne dépend pas du volume.
Réponses:
C'est un problème de moindres carrés ordinaire!
Définition
le modèle peut être réécrit
où les coefficients sont algébriquement liés aux coefficients d'origine viaβ=(βi)′
C'est simple à résoudre algébriquement ou numériquement: choisissez la solution pour laquelle et sont positifs. La seule raison de le faire est d'obtenir des estimations de et et de vérifier qu'elles sont physiquement significatives. Toutes les analyses de l'ajustement peuvent être effectuées en termes de .B0,B′0 w B0,B′0,w E0 β
Cette approche est non seulement beaucoup plus simple que l'ajustement non linéaire, elle est également plus précise: la matrice de variance-covariance pour renvoyée par un ajustement non linéaire n'est qu'une approximation quadratique locale de la distribution d'échantillonnage de ces paramètres, alors que (pour les erreurs normalement réparties dans la mesure de , de toute façon) les résultats OLS ne sont pas des approximations.(E0,B0,B′0,V0) E
Les intervalles de confiance, les intervalles de prédiction, etc. peuvent être obtenus de la manière habituelle sans avoir besoin de trouver ces valeurs: calculez-les en termes d'estimations et de leur matrice variance-covariance. (Même Excel pourrait le faire!) Voici un exemple, suivi du code (simple) qui l'a produit.β^
R
Si vous êtes intéressé par la distribution conjointe des estimations de paramètres d'origine, il est facile de simuler à partir de la solution OLS: générez simplement des réalisations normales multivariées de et convertissez-les en paramètres. Voici une matrice de nuage de points de 2000 réalisations. La forte curvilinéarité montre pourquoi la méthode Delta est susceptible de donner de mauvais résultats.β
la source
Il existe une approche standard pour cela appelée la méthode delta. Vous formez l'inverse de la Hesse de la log-vraisemblance par rapport à vos quatre paramètres. Il existe un paramètre supplémentaire pour la variance des résidus, mais il ne joue aucun rôle dans ces calculs. Ensuite, vous calculez la réponse prévue pour les valeurs souhaitées de la variable indépendante et calculez son gradient (la dérivée par rapport à ces quatre paramètres). Appelons l'inverse de la Hesse et du vecteur de gradient . Vous produit matriciel vectorielI g
Cela peut être fait pour n'importe quelle variable dépendante dans AD Model Builder. On déclare une variable à l'endroit approprié dans le code comme ceci
et écrit le code évaluer la variable dépendante comme ceci
Notez que cela est évalué pour une valeur de la variable indépendante 2 fois la plus grande observée dans l'ajustement du modèle. Ajuster le modèle et on obtient l'écart type pour cette variable dépendante
J'ai modifié le programme pour inclure le code de calcul des limites de confiance pour la fonction enthalpie-volume Le fichier de code (TPL) ressemble à
J'ai ensuite réaménagé le modèle pour obtenir les devs standard pour les estimations de H.
Ceux-ci sont calculés pour vos valeurs V observées, mais pourraient être facilement calculés pour n'importe quelle valeur de V.
Il a été souligné qu'il s'agit en fait d'un modèle linéaire pour lequel il existe un code R simple pour effectuer l'estimation des paramètres via OLS. C'est très attrayant en particulier pour les utilisateurs naïfs. Cependant, depuis les travaux de Huber il y a plus de trente ans, nous savons ou devons savoir que l'on devrait probablement presque toujours remplacer OLS par une alternative modérément robuste. La raison pour laquelle cela n'est pas systématiquement fait, je crois, c'est que les méthodes robustes sont intrinsèquement non linéaires. De ce point de vue, les méthodes OLS attrayantes simples dans R sont plus un piège, plutôt qu'une fonctionnalité. Un avantage de l'approche AD Model Builder est sa prise en charge intégrée pour la modélisation non linéaire. Pour changer le code des moindres carrés en un mélange normal robuste, une seule ligne du code doit être modifiée. La ligne
est changé en
La quantité de surdispersion dans les modèles est mesurée par le paramètre a. Si a est égal à 1,0, la variance est la même que pour le modèle normal. S'il y a inflation de la variance par les valeurs aberrantes, nous nous attendons à ce que a soit inférieur à 1,0. Pour ces données, l'estimation de a est d'environ 0,23, de sorte que la variance est d'environ 1/4 de la variance pour le modèle normal. L'interprétation est que les valeurs aberrantes ont augmenté l'estimation de la variance d'un facteur d'environ 4. Cela a pour effet d'augmenter la taille des limites de confiance pour les paramètres du modèle OLS. Cela représente une perte d'efficacité. Pour le modèle de mélange normal, les écarts-types estimés pour la fonction enthalpie-volume sont
On constate qu'il y a de petits changements dans les estimations ponctuelles, tandis que les limites de confiance ont été réduites à environ 60% de celles produites par OLS.
Le point principal que je veux faire est que tous les calculs modifiés se produisent automatiquement une fois que l'on change la seule ligne de code dans le fichier TPL.
la source
La validation croisée est un moyen simple d' estimer la fiabilité de votre courbe: https://en.wikipedia.org/wiki/Cross-validation_(statistics)
La propagation de l'incertitude avec des différentiels partiels est excellente si vous connaissez vraiment et . Cependant, le programme que vous utilisez ne donne que des erreurs d'ajustement (?). Celles-ci seront trop optimistes (irréalistes).ΔE0,ΔV0,ΔB0 ΔB′
Vous pouvez calculer une erreur de validation 1 fois en laissant un de vos points loin de l'ajustement et en utilisant la courbe ajustée pour prédire la valeur du point qui a été laissé. Répétez cette opération pour tous les points afin que chacun soit laissé de côté une fois. Ensuite, calculez l'erreur de validation de votre courbe finale (courbe équipée de tous les points) en tant que moyenne des erreurs de prédiction.
Cela ne vous indiquera que la sensibilité de votre modèle pour tout nouveau point de données. Par exemple, il ne vous dira pas à quel point votre modèle énergétique est inexact. Cependant, il s'agira d'une estimation d'erreur beaucoup plus réaliste, simple erreur d'ajustement.
Vous pouvez également tracer des erreurs de prédiction en fonction du volume si vous le souhaitez.
la source