2009-10-01 16 views
6

Dato un array di valori 1D, qual è il modo più semplice per capire qual è la distribuzione bimodale più adatta ad esso, dove ogni 'modalità' è una distribuzione normale? O in altre parole, come si può trovare la combinazione di due distribuzioni normali che i migliori riproducono l'array di valori 1D?Adattamento di una distribuzione bimodale a un insieme di valori

In particolare, sono interessato all'implementazione di questo in python, ma le risposte non devono essere specifiche della lingua.

Grazie!

risposta

4

Quello che stai cercando di fare è chiamato un modello di miscela gaussiana. L'approccio standard per risolvere questo problema è usando Expectation Maximization, svn scipy include una sezione sull'apprendimento automatico e em chiama scikits. Lo uso un bel po '.

0

Suggerisco di utilizzare il fantastico pacchetto scipy. Fornisce alcuni metodi per l'ottimizzazione.

C'è un grosso avvertimento di grasso con la semplice applicazione di un adattamento di almeno il quadrato predefinito o qualcosa del genere.

Ecco alcuni problemi si andrà in contro:

  1. rumore più grande di secondo/entrambi i picchi.
  2. Picco parziale: i dati vengono tagliati in uno dei bordi.
  3. Campionamento: la larghezza dei picchi è inferiore ai dati campionati.
  4. Non è normale - si otterrà qualche risultato ...
  5. Sovrapposizione - Se i picchi si sovrappongono ci si accorge che spesso un picco è montato correttamente, ma il secondo sarà suddetto approccio a zero ...
0

Sto solo cercando di capire perché è necessario adattare una distribuzione bimodale per un array 1D? Quali sono i vantaggi di fare questo?

+1

Esempio: supponiamo che i valori siano le circonferenze toraciche misurate di 500 donne e 500 uomini. –

Problemi correlati