2015-09-12 48 views
6

Ho un set di> 2000 numeri, raccolti dalla misurazione. Voglio campionare da questo set di dati, ~ 10 volte in ciascun test, preservando la distribuzione della probabilità complessiva e in ciascun test (in misura approssimativa possibile). Ad esempio, in ogni test, voglio un piccolo valore, un valore di classe media, un certo valore grande, con la media e la varianza approssimativamente vicino alla distribuzione originale. Combinando tutti i test, voglio anche la media e la varianza totale di tutti i campioni, approssimativamente vicino alla distribuzione originale.Campionamento casuale da un set di dati, preservando la distribuzione di probabilità originale

Come il mio set di dati è un long-tail probability distribution, la quantità di dati per ogni quantile non sono gli stessi: plot

Probability density

Fig 1. Densità ~ 2k elementi di dati.

Sto usando Java, e in questo momento sto usando un uniform distribution, e utilizzare un int a caso dal set di dati, e restituire il dato in quella posizione:

public int getRandomData() { 
    int data[] ={1231,414,222,4211,,41,203,123,432,...}; 
    length=data.length; 
    Random r=new Random(); 
    int randomInt = r.nextInt(length); 
    return data[randomInt]; 
} 

Non so se funziona come voglio, perché uso i dati per misurarli, il che ha una grande quantità di correlazione seriale.

risposta

3

Funziona come vuoi tu. L'ordine dei dati è irrilevante.

+0

Mi hai fatto riempire meglio. :-) Ma come posso dimostrarlo? E sono ancora preoccupato per il fatto che non ottengo abbastanza valori piccoli e grandi in ogni test. – Ho1

+0

@ Ho1 le medie e la deviazione standard non vengono modificate dall'ordine. Se si desidera la stessa distribuzione è necessario ordinare i valori e selezionare casualmente porzioni diverse dei campioni, Ovviamente ciò non è del tutto casuale poiché si vincolano i risultati desiderati. –

+0

@PeterLawrey: Quello che dici è FALSO. –

2

Il campionamento casuale mantiene la distribuzione di probabilità.