La question ci-dessus dit tout. Fondamentalement, ma question concerne une fonction d'ajustement générique (qui pourrait être arbitrairement compliquée) qui sera non linéaire dans les paramètres que j'essaie d'estimer, comment choisit-on les valeurs initiales pour initialiser l'ajustement? J'essaie de faire des moindres carrés non linéaires. Existe-t-il une stratégie ou une méthode? Cela a-t-il été étudié? Des références? Autre chose que des suppositions ad hoc? Plus précisément, en ce moment, l'une des formes d'ajustement avec lesquelles je travaille est une forme gaussienne plus linéaire avec cinq paramètres que j'essaie d'estimer, comme
où (données en abscisses) et (données en ordonnées), ce qui signifie que dans l'espace log-log, mes données ressemblent à une ligne droite plus une bosse que je rapproche d'un gaussien. Je n'ai pas de théorie, rien pour me guider sur la façon d'initialiser l'ajustement non linéaire, sauf peut-être un graphique et un globe oculaire comme la pente de la ligne et quel est le centre / la largeur de la bosse. Mais j'ai plus de cent de ces ajustements à faire au lieu de représenter graphiquement et de deviner, je préférerais une approche qui peut être automatisée. y = log 10
Je ne trouve aucune référence, dans la bibliothèque ou en ligne. La seule chose à laquelle je peux penser est de choisir simplement au hasard les valeurs initiales. MATLAB propose de choisir des valeurs au hasard parmi [0,1] uniformément réparties. Donc, avec chaque ensemble de données, j'exécute l'ajustement initialisé au hasard mille fois, puis je choisis celui avec le le plus élevé ? D'autres (meilleures) idées?
Addendum # 1
Tout d'abord, voici quelques représentations visuelles des ensembles de données juste pour vous montrer de quel type de données je parle. Je poste à la fois les données dans leur forme d'origine sans aucune sorte de transformation, puis sa représentation visuelle dans l'espace log-log car elle clarifie certaines caractéristiques des données tout en déformant d'autres. Je publie un échantillon de bonnes et de mauvaises données.
Chacun des six panneaux de chaque figure montre quatre ensembles de données tracés ensemble en rouge, vert, bleu et cyan et chaque ensemble de données a exactement 20 points de données. J'essaie d'adapter chacun d'eux avec une ligne droite plus un gaussien à cause des bosses observées dans les données.
Le premier chiffre fait partie des bonnes données. La deuxième figure est le tracé log-log des mêmes bonnes données de la figure un. Le troisième chiffre fait partie des mauvaises données. La quatrième figure est le diagramme log-log de la figure trois. Il y a beaucoup plus de données, ce ne sont que deux sous-ensembles. La plupart des données (environ 3/4) sont bonnes, similaires aux bonnes données que j'ai montrées ici.
Maintenant, je vous prie de faire quelques commentaires, car cela pourrait être long, mais je pense que tous ces détails sont nécessaires. J'essaierai d'être aussi concis que possible.
Je m'attendais à l'origine à une loi de puissance simple (ce qui signifie une ligne droite dans l'espace log-log). Lorsque j'ai tout tracé dans l'espace log-log, j'ai vu la bosse inattendue à environ 4,8 MHz. La bosse a été minutieusement étudiée et a été découverte dans d'autres travaux, donc ce n'est pas que nous avons foiré. Il est physiquement là et d'autres ouvrages publiés le mentionnent également. Alors j'ai juste ajouté un terme gaussien à ma forme linéaire. Notez que cet ajustement devait être fait dans l'espace log-log (d'où mes deux questions dont celle-ci).
Maintenant, après avoir lu la réponse de Stumpy Joe Pete à une autre de mes questions (pas du tout liée à ces données) et lu ceci et cela et les références qui s'y trouvent (trucs de Clauset), je me rends compte que je ne devrais pas tenir dans le log-log espace. Alors maintenant, je veux tout faire dans un espace pré-transformé.
Question 1: En regardant les bonnes données, je pense toujours qu'un linéaire plus un gaussien dans un espace pré-transformé est toujours une bonne forme. J'aimerais entendre d'autres personnes qui ont plus d'expérience en données ce qu'elles pensent. Est-ce que gaussien + linéaire est raisonnable? Dois-je seulement faire un gaussien? Ou une forme entièrement différente?
Questions 2: Quelle que soit la réponse à la question 1, j'aurais toujours besoin (très probablement) de moindres carrés non linéaires donc j'ai encore besoin d'aide pour l'initialisation.
Les données où nous voyons deux ensembles, nous préférons très fortement capturer la première bosse à environ 4-5 mHz. Je ne veux donc pas ajouter plus de termes gaussiens et notre terme gaussien devrait être centré sur la première bosse qui est presque toujours la plus grosse bosse. Nous voulons "plus de précision" entre 0,8 MHz et environ 5 MHz. Nous ne nous soucions pas trop des fréquences plus élevées, mais nous ne voulons pas non plus les ignorer complètement. Alors peut-être une sorte de pesée? Ou B peut-il toujours être initialisé autour de 4,8 MHz?
Les données en abscisses sont la fréquence en unités de millihertz, désignons-la par . Les données de coordonnées est un coefficient nous calculons, désignent par . Donc, pas de transformation de journal, et le formulaire estL
- est la fréquence, est toujours positif.
- est un coefficient positif. Nous travaillons donc dans le premier quadrant.
- A > 0 A , l'amplitude devrait toujours être positive aussi, je pense parce que nous avons juste affaire à des bosses. Quand je regarde les données, je vois toujours des pics et pas de vallées. Il semble que dans toutes les données, il y ait plusieurs bosses à des fréquences plus élevées. La première bosse est toujours beaucoup plus grande que les autres. Dans les bonnes données, les bosses secondaires sont très faibles mais dans les mauvaises données (panel 2 et 5 par exemple), les bosses secondaires sont fortes. Nous n'avons donc pas de vallée, mais plutôt deux bosses. Cela signifie que l'amplitude . Et puisque nous nous soucions surtout du premier pic, raison de plus pour que soit positif.
- est le centre de la bosse et nous le voulons toujours sur cette grosse bosse autour de 4-5 MHz. Dans notre gamme de fréquences résolues, il apparaît presque toujours à 4,8 MHz.
- C - C est la largeur de la bosse. J'imagine qu'il est symétrique autour de zéro, ce qui signifie que aurait le même effet que car il est carré. Nous ne nous soucions donc pas de sa valeur. Disons que nous le préférons positif.
- est la pente de la ligne, il semble qu'elle pourrait être légèrement négative, ce qui ne lui impose aucune restriction. La pente est intéressante en soi, donc au lieu d'imposer des restrictions, nous voulons juste voir ce que ce serait. Est-ce positif ou négatif? Quelle est sa taille / son ampleur? etc.
- L E L f = 0 est le (presque) -intercept. La chose subtile ici est qu'en raison du terme gaussien, n'est pas tout à fait le -intercept. L'ordonnée à l'origine réelle (si nous extrapolions à ) serait
Donc, la seule restriction ici est que l'interception doit également être positive. L'interception étant nulle, je ne sais pas ce que cela signifierait. Mais le négatif semblerait certainement absurde. Je suppose que nous pouvons ici permettre à d'être légèrement négatif avec une petite amplitude si nécessaire. La raison pour laquelle et l'interception est importante ici, mais certains de nos collègues sont également intéressés par l'extrapolation. La fréquence minimale que nous avons est de 0,8 MHz et ils veulent extrapoler entre 0 et 0,8 MHz. Mon idée naïve était de simplement utiliser l'ajustement pour descendre jusqu'à .E f = 0
Je sais que l'extrapolation est plus difficile / plus dangereuse que l'interpolation, mais l'utilisation d'une ligne droite plus un gaussien (en espérant qu'elle se désintègre assez rapidement) me semble raisonnable. Un peu comme des splines cubiques naturelles avec des conditions aux limites naturelles, la pente au point d'extrémité gauche, il suffit de prolonger la ligne et de voir où elle traverse l' axeS'il n'est pas négatif, utilisez cette ligne pour l'extrapolation.
Questions 3: Que pensez-vous d'extrapoler de cette façon dans ce cas? Des avantages / inconvénients? D'autres idées d'extrapolation? Encore une fois, nous ne nous soucions que des fréquences plus basses, donc extrapolant entre 0 et 1 MHz ... parfois des fréquences très très petites, proches de zéro. Je sais que ce message est déjà emballé. J'ai posé cette question ici parce que les réponses peuvent être liées, mais si vous préférez, je peux séparer cette question et en poser une autre plus tard.
Enfin, voici deux exemples de jeux de données sur demande.
0.813010000000000 0.091178000000000 0.012728000000000
1.626000000000000 0.103120000000000 0.019204000000000
2.439000000000000 0.114060000000000 0.063494000000000
3.252000000000000 0.123130000000000 0.071107000000000
4.065000000000000 0.128540000000000 0.073293000000000
4.878000000000000 0.137040000000000 0.074329000000000
5.691100000000000 0.124660000000000 0.071992000000000
6.504099999999999 0.104480000000000 0.071463000000000
7.317100000000000 0.088040000000000 0.070336000000000
8.130099999999999 0.080532000000000 0.036453000000000
8.943100000000001 0.070902000000000 0.024649000000000
9.756100000000000 0.061444000000000 0.024397000000000
10.569000000000001 0.056583000000000 0.025222000000000
11.382000000000000 0.052836000000000 0.024576000000000
12.194999999999999 0.048727000000000 0.026598000000000
13.008000000000001 0.045870000000000 0.029321000000000
13.821000000000000 0.041454000000000 0.067300000000000
14.633999999999999 0.039596000000000 0.081800000000000
15.447000000000001 0.038365000000000 0.076443000000000
16.260000000000002 0.036425000000000 0.075912000000000
La première colonne est les fréquences en mHz, identiques dans chaque ensemble de données. La deuxième colonne est un bon ensemble de données (bonnes données, figures 1 et 2, panneau 5, marqueur rouge) et la troisième colonne est un mauvais ensemble de données (mauvaises données, figures 3 et 4, panneau 5, marqueur rouge).
J'espère que cela suffit pour stimuler une discussion plus éclairée. Merci à tous.