La domanda sopra dice tutto. Fondamentalmente la mia domanda è per una funzione di adattamento generica (potrebbe essere arbitrariamente complicata) che non sarà lineare nei parametri che sto provando a stimare, come scegliere i valori iniziali per inizializzare l'adattamento? Sto cercando di fare minimi quadrati non lineari. C'è qualche strategia o metodo? Questo è stato studiato? Qualche riferimento? Nulla oltre all'ipotesi ad hoc? In particolare, in questo momento una delle forme di adattamento con cui sto lavorando è una forma gaussiana più lineare con cinque parametri che sto cercando di stimare, come
dove (dati di ascissa) e (dati di ordinata) significa che nello spazio di registro-log i miei dati sembrano una linea retta più un bump che sto approssimando da un gaussiano. Non ho una teoria, niente che mi guidi su come inizializzare l'adattamento non lineare, tranne forse la rappresentazione grafica e il bulbo oculare come la pendenza della linea e qual è il centro / larghezza dell'urto. Ma ho più di cento di questi adattamenti per farlo, invece di rappresentare graficamente e indovinare, preferirei un approccio che può essere automatizzato. y = registro 10
Non riesco a trovare riferimenti, in biblioteca o online. L'unica cosa che mi viene in mente è di scegliere casualmente i valori iniziali. MATLAB offre di scegliere i valori in modo casuale tra [0,1] distribuiti uniformemente. Quindi, con ogni set di dati, eseguo il fit inizializzato casualmente mille volte e quindi scelgo quello con il più alto ? Altre idee (migliori)?
Addendum # 1
Innanzitutto, ecco alcune rappresentazioni visive dei set di dati solo per mostrarvi di che tipo di dati sto parlando. Sto pubblicando entrambi i dati nella sua forma originale senza alcun tipo di trasformazione e quindi la sua rappresentazione visiva nello spazio log-log in quanto chiarisce alcune delle caratteristiche dei dati mentre ne distorce altri. Sto pubblicando un campione di dati positivi e negativi.
Ciascuno dei sei pannelli in ciascuna figura mostra quattro set di dati tracciati insieme rosso, verde, blu e ciano e ogni set di dati ha esattamente 20 punti dati. Sto cercando di adattare ciascuno di loro con una linea retta più un gaussiano a causa dei dossi visti nei dati.
La prima cifra mostra alcuni dei buoni dati. La seconda figura è il diagramma log-log degli stessi buoni dati della figura uno. La terza cifra è alcuni dei dati errati. La quarta figura è il diagramma log-log della figura tre. Ci sono molti più dati, questi sono solo due sottoinsiemi. La maggior parte dei dati (circa 3/4) è buona, simile ai buoni dati che ho mostrato qui.
Ora alcuni commenti, per favore, abbi pazienza perché ciò potrebbe richiedere molto tempo ma penso che tutti questi dettagli siano necessari. Cercherò di essere il più conciso possibile.
Inizialmente mi aspettavo una legge di potenza semplice (che significa linea retta nello spazio log-log). Quando ho tracciato tutto nello spazio log-log, ho visto il bump inaspettato a circa 4,8 mHz. Il dosso è stato studiato a fondo ed è stato scoperto anche in altri lavori, quindi non è che abbiamo sbagliato. È fisicamente presente e anche altre opere pubblicate ne parlano. Quindi ho appena aggiunto un termine gaussiano alla mia forma lineare. Si noti che questo adattamento doveva essere fatto nello spazio log-log (quindi le mie due domande, compresa questa).
Ora, dopo aver letto la risposta di Stumpy Joe Pete a un'altra mia domanda (non collegata affatto a questi dati) e aver letto questo e questo e riferimenti in esso (roba di Clauset), mi rendo conto che non dovrei inserirmi nel log-log spazio. Quindi ora voglio fare tutto nello spazio pre-trasformato.
Domanda 1: guardando i buoni dati, penso ancora che un lineare più un gaussiano nello spazio pre-trasformato sia ancora una buona forma. Mi piacerebbe sentire da altri che hanno più esperienza dei dati ciò che pensano. Gaussian + linear è ragionevole? Dovrei fare solo un gaussiano? O una forma completamente diversa?
Domande 2: Qualunque sia la risposta alla domanda 1, avrei ancora bisogno (molto probabilmente) di minimi quadrati non lineari, quindi ho ancora bisogno di aiuto con l'inizializzazione.
I dati in cui vediamo due set, preferiamo fortemente catturare il primo bump a circa 4-5 mHz. Quindi non voglio aggiungere altri termini gaussiani e il nostro termine gaussiano dovrebbe essere centrato sul primo bump che è quasi sempre il bump più grande. Vogliamo "maggiore precisione" tra 0,8 mHz e circa 5 mHz. Non ci preoccupiamo troppo delle frequenze più alte, ma non vogliamo nemmeno ignorarle completamente. Quindi forse una sorta di pesatura? Oppure B può essere inizializzato sempre intorno a 4.8mHz?
I dati dell'ascissa sono la frequenza in unità di millihertz, denotata da . I dati ordinata è un coefficiente che stiamo computing, denotare facendo . Quindi nessuna trasformazione del log e il modulo èL
- è frequenza, è sempre positivo.
- è un coefficiente positivo. Quindi stiamo lavorando nel primo quadrante.
- A > 0 A , anche l'ampiezza dovrebbe essere sempre positiva, perché penso che abbiamo a che fare solo con i dossi. Quando guardo i dati vedo sempre picchi e nessuna valle. Sembra che in tutti i dati ci siano più dossi a frequenze più alte. Il primo dosso è sempre molto più grande di altri. In buoni dati, i dossi secondari sono molto deboli, ma in dati cattivi (pannello 2 e 5 per esempio), i dossi secondari sono forti. Quindi in realtà non abbiamo una valle, ma piuttosto due dossi. Significa che l'ampiezza . E poiché ci preoccupiamo principalmente del primo picco, una ragione in più per è positiva.
- è il centro del bump e lo vogliamo sempre su quel bump grande intorno a 4-5mHz. Nella nostra gamma di frequenza risolta, appare quasi sempre a 4.8mHz.
- C - C è la larghezza dell'urto. Immagino che sia simmetrico intorno allo zero, il che significa che avrebbe lo stesso effetto di perché è al quadrato. Quindi non ci interessa quale sia il suo valore. Diciamo che lo preferiamo positivo.
- è la pendenza della linea, sembra che potrebbe essere leggermente negativa, quindi non imporre alcuna restrizione su di essa. La pendenza è interessante a sé stante, quindi invece di imporre eventuali restrizioni su di essa, vogliamo solo vedere quale sarebbe. È positivo o negativo? Quanto è grande / piccola la grandezza? e così via.
- L E L f = 0 è l' intercettazione (quasi) . La cosa sottile qui è che a causa del termine gaussiano, non è proprio l' intercettazione aL'intercettazione effettiva (se dovessimo estrapolare a ) sarebbe
Quindi l'unica limitazione qui è che anche l'intercettazione dovrebbe essere positiva. L'intercettazione è zero, non so cosa significherebbe. Ma il negativo sembrerebbe sicuramente privo di senso. Immagino che qui possiamo consentire che sia leggermente negativo con una piccola magnitudine, se necessario. Il motivo e l'intercettazione sono importanti qui, ma alcuni dei nostri colleghi sono effettivamente interessati anche all'estrapolazione. La frequenza minima che abbiamo è 0,8 mHz e vogliono estrapolare tra 0 e 0,8 mHz. La mia idea ingenua era quella di usare solo l'adattamento per scendere fino a .E f = 0
So che l'estrapolazione è più dura / più pericolosa dell'interpolazione ma usare una linea retta più un gaussiano (sperando che decada abbastanza velocemente) mi sembra ragionevole. Un po 'come delle spline cubiche naturali con condizioni al contorno naturali, la pendenza all'estremità sinistra, basta estendere la linea e vedere dove attraversa l' asseSe non è negativo, utilizzare quella riga per l'estrapolazione.
Domande 3: Cosa ne pensate estrapolare in questo caso? Qualche pro / contro? Altre idee per l'estrapolazione? Ancora una volta ci preoccupiamo solo delle frequenze più basse in modo da estrapolare tra 0 e 1mHz ... a volte frequenze molto piccole, vicine allo zero. So che questo post è già pieno. Ho fatto questa domanda qui perché le risposte potrebbero essere correlate, ma se preferite, posso separare questa domanda e farne un'altra in seguito.
Infine, ecco due set di dati di esempio su richiesta.
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 prima colonna è le frequenze in mHz, identiche in ogni singolo set di dati. La seconda colonna è un buon set di dati (dati validi figura uno e due, riquadro 5, indicatore rosso) e la terza colonna è un insieme di dati errato (dati errati figura tre e quattro, riquadro 5, indicatore rosso).
Spero che questo sia abbastanza per stimolare qualche discussione più illuminata. Grazie a tutti