Trouver le meilleur compromis point sur une courbe

Dire que j'ai eu certaines données, pour qui je veux pour s'adapter à un modèle paramétrées sur elle. Mon objectif est de trouver la meilleure valeur pour ce paramètre du modèle.

Je suis en train de faire la sélection d'un modèle à l'aide d'un AIC/BIC/MDL type de critère qui récompense les modèles avec une faible erreur, mais pénalise les modèles avec une haute complexité (on recherche la plus simple et la plupart des explication convaincante de ces données pour ainsi dire, à la Le rasoir d'Occam).

À la suite de la ci-dessus, c'est un exemple du genre de choses que je reçois pour les trois critères différents (les deux doivent être réduites au minimum, et un être agrandie):

Trouver le meilleur compromis point sur une courbe
Trouver le meilleur compromis point sur une courbe

Visuellement, vous pouvez facilement voir le coude de la forme et de vous choisir une valeur pour le paramètre quelque part dans cette région.
Le problème est que je suis en train de faire cela pour un grand nombre d'expériences et j'ai besoin d'un moyen de trouver cette valeur, sans intervention.

Ma première intuition était d'essayer de dessiner une ligne à 45 degrés d'angle à partir de l'angle et continuez d'avancer jusqu'à l'intersection de la courbe, mais c'est plus facile à dire qu'à faire 🙂 il peut Aussi manquer la région d'intérêt si la courbe est un peu biaisé.

Des idées sur la façon de le mettre en œuvre, ou de meilleures idées?

Voici les échantillons nécessaires à la reproduction de l'une des parcelles ci-dessus:

curve = [8.4663 8.3457 5.4507 5.3275 4.8305 4.7895 4.6889 4.6833 4.6819 4.6542 4.6501 4.6287 4.6162 4.585 4.5535 4.5134 4.474 4.4089 4.3797 4.3494 4.3268 4.3218 4.3206 4.3206 4.3203 4.2975 4.2864 4.2821 4.2544 4.2288 4.2281 4.2265 4.2226 4.2206 4.2146 4.2144 4.2114 4.1923 4.19 4.1894 4.1785 4.178 4.1694 4.1694 4.1694 4.1556 4.1498 4.1498 4.1357 4.1222 4.1222 4.1217 4.1192 4.1178 4.1139 4.1135 4.1125 4.1035 4.1025 4.1023 4.0971 4.0969 4.0915 4.0915 4.0914 4.0836 4.0804 4.0803 4.0722 4.065 4.065 4.0649 4.0644 4.0637 4.0616 4.0616 4.061 4.0572 4.0563 4.056 4.0545 4.0545 4.0522 4.0519 4.0514 4.0484 4.0467 4.0463 4.0422 4.0392 4.0388 4.0385 4.0385 4.0383 4.038 4.0379 4.0375 4.0364 4.0353 4.0344];
plot(1:100, curve)

MODIFIER

J'ai accepté la solution donnée par la Jonas. En gros, pour chaque point de p sur la courbe, on trouve l'une avec la distance maximale d donnée par:

Trouver le meilleur compromis point sur une courbe

  • J'allais dire tracer une ligne de 45 ° aussi :\
  • Combien attendez-vous de vos graphiques afin de s'écarter de la générale des formes dans les exemples ci-dessus? En d'autres termes, pensez-vous que le "coude" de la graphique sera toujours près le même coin de la graphique?
  • Est-il OK pour n'avoir que 6 points sur les 100 dans la partie supérieure de la courbe? Essayez plot(1:100,curve,'.')
  • les exemples que j'ai donné sont les cas habituels, mais cela ne signifie pas que il n'y a pas d'exceptions à la règle 🙂 Comme je l'ai expliqué, les courbes représentent le compromis entre la probabilité du modèle vs sa complexité, de sorte que vous pourrait imaginer une forme sans dur "coude" au lieu ressemblant plus à un plat de ligne..
  • En vérité KennyMorton réponse est la bonne. En utilisant AIC etc. vous êtes déjà à la correction de la complexité du modèle, dans une certaine mesure. Vous devez utiliser l'un de ces critères et de choisir le plus bas, ou essayer de trouver le coude sur une courbe de la complexité du modèle vs raw qualité de l'ajustement, pas goodness-of-fit-ajustée-pour-la complexité.
InformationsquelleAutor Amro | 2010-01-07