J'utilise Matlab pour effectuer des moindres carrés sans contrainte (moindres carrés ordinaires) et il génère automatiquement les coefficients, les statistiques de test et les valeurs de p.
Ma question est, lors de l'exécution des moindres carrés contraints (coefficients strictement non négatifs), il ne produit que les coefficients, SANS statistiques de test, les valeurs de p.
Est-il possible de calculer ces valeurs pour garantir leur signification? Et pourquoi n'est-il pas directement disponible sur le logiciel (ou tout autre logiciel d'ailleurs?)
Réponses:
La résolution d'un moindre carré non négatif (NNLS) est basée sur un algorithme qui le différencie des moindres carrés normaux.
Expression algébrique pour l'erreur standard (ne fonctionne pas)
Avec les moindres carrés réguliers, vous pouvez exprimer les valeurs de p en utilisant un test t en combinaison avec des estimations de la variance des coefficients.
Cette expression de la variance d'échantillon de l'estimation des coefficients est La variance des erreurs sera généralement inconnue mais il peut être estimé en utilisant les résidus. Cette expression peut être dérivée algébriquement à partir de l'expression des coefficients en termes de mesuresθ^ Va r ( θ^) = σ2( XTX)- 1 σ y
Cela implique / suppose que le peut être négatif, et donc il se décompose lorsque les coefficients sont restreints.θ
Inverse de la matrice d'informations de Fisher (sans objet)
La variance / distribution de l'estimation des coefficients se rapproche également asymptotiquement de la matrice d'information de Fisher observée :
Mais je ne sais pas si cela s'applique bien ici. L'estimation NNLS n'est pas une estimation non biaisée.
Méthode Monte Carlo
Chaque fois que les expressions deviennent trop compliquées, vous pouvez utiliser une méthode de calcul pour estimer l'erreur. Avec la méthode de Monte Carlo, vous simulez la distribution du caractère aléatoire de l'expérience en simulant des répétitions de l'expérience (recalculant / modélisant de nouvelles données) et sur cette base, vous estimez la variance des coefficients.
Ce que vous pourriez faire est de prendre les estimations observées des coefficients du modèle et de la variance résiduelle et sur la base de ces nouvelles données de calcul (quelques milliers de répétitions, mais cela dépend de la précision que vous souhaitez) à partir de laquelle vous pouvez observer la distribution (et la variation et en déduire l'estimation de l'erreur) pour les coefficients. (et il existe des schémas plus compliqués pour effectuer cette modélisation)θ^ σσ^
la source
Si vous voulez bien utiliser RI, pensez que vous pouvez également utiliser
bbmle
lamle2
fonction de pour optimiser la fonction de vraisemblance des moindres carrés et calculer des intervalles de confiance à 95% sur les coefficients nnls non négatifs. De plus, vous pouvez prendre en compte que vos coefficients ne peuvent pas devenir négatifs en optimisant le log de vos coefficients, de sorte que sur une échelle rétrotransformée, ils ne pourraient jamais devenir négatifs.Voici un exemple numérique illustrant cette approche, ici dans le cadre de la déconvolution d'une superposition de pics chromatographiques de forme gaussienne avec du bruit gaussien sur eux: (tous commentaires bienvenus)
Simulons d'abord quelques données:
Déconvoluons maintenant le signal bruyant mesuré
y
avec une matrice en bandes contenant une copie décalée du noyau de flou de forme gaussienne connubM
(c'est notre matrice de covariable / conception).Tout d'abord, déconvoluez le signal avec les moindres carrés non négatifs:
Maintenant, optimisons la log-vraisemblance négative de notre objectif de perte gaussien, et optimisons le log de vos coefficients de sorte que sur une échelle rétrotransformée, ils ne puissent jamais être négatifs:
Je n'ai pas essayé de comparer les performances de cette méthode par rapport au bootstrap non paramétrique ou paramétrique, mais c'est sûrement beaucoup plus rapide.
J'étais également enclin à penser que je devrais être en mesure de calculer les intervalles de confiance de Wald pour les
nnls
coefficients non négatifs sur la base de la matrice d'informations de Fisher observée, calculée à une échelle de coefficient transformée en log pour appliquer les contraintes de non-négativité et évaluée auxnnls
estimations.Je pense que cela va comme ça, et en fait devrait être formellement identique à ce que j'ai fait
mle2
ci-dessus:Les résultats de ces calculs et ceux retournés par
mle2
sont presque identiques (mais beaucoup plus rapides), donc je pense que c'est juste, et correspondraient à ce que nous faisions implicitement avecmle2
...Le simple réajustement des covariables avec des coefficients positifs dans un
nnls
ajustement utilisant un ajustement linéaire régulier de modèle btw ne fonctionne pas, car un tel ajustement de modèle linéaire ne prendrait pas en compte les contraintes de non-négativité et entraînerait donc des intervalles de confiance absurdes qui pourraient devenir négatifs. Cet article intitulé «Exact post model selection inference for marginal screening» de Jason Lee et Jonathan Taylor présente également une méthode pour effectuer une inférence de sélection post-modèle sur des coefficients nnls (ou LASSO) non négatifs et utilise pour cela des distributions gaussiennes tronquées. Je n'ai pas vu de mise en œuvre ouvertement disponible de cette méthode pour les ajustements nnls - pour les ajustements LASSO, il y a l'inférence sélectivepaquet qui fait quelque chose comme ça. Si quelqu'un devait avoir une implémentation, faites-le moi savoir!Dans la méthode ci-dessus, on pourrait également diviser les données dans un ensemble d'apprentissage et de validation (par exemple, observations paires et impaires) et déduire les covariables avec des coefficients positifs de l'ensemble d'apprentissage, puis calculer les intervalles de confiance et les valeurs p à partir de l'ensemble de validation. Ce serait un peu plus résistant au surapprentissage, mais cela entraînerait également une perte de puissance, car on n'utiliserait que la moitié des données. Je ne l'ai pas fait ici parce que la contrainte de non-négativité en elle-même est déjà assez efficace pour se prémunir contre le sur-ajustement.
la source
Pour être plus précis concernant la méthode Monte Carlo @Martijn référée, vous pouvez utiliser Bootstrap, une méthode de rééchantillonnage qui implique l'échantillonnage à partir des données d'origine (avec remplacement) de plusieurs ensembles de données pour estimer la distribution des coefficients estimés et donc toute statistique connexe, y compris les intervalles de confiance et les valeurs de p.
La méthode largement utilisée est détaillée ici: Efron, Bradley. "Méthodes Bootstrap: un autre regard sur le jackknife." Percées statistiques. Springer, New York, NY, 1992. 569-593.
Matlab l'a implémenté, voir https://www.mathworks.com/help/stats/bootstrp.html en particulier la section intitulée Bootstrapping a Regression Model.
la source