Perché aumentare la dimensione del campione del lancio della moneta non migliora l'approssimazione normale della curva?


19

Sto leggendo il libro Statistics (Freeman, Pisani, Purves) e sto provando a riprodurre un esempio in cui una moneta viene lanciata diciamo 50 volte, il numero di teste contate e questo viene ripetuto diciamo 1.000 volte.

  1. Innanzitutto, ho mantenuto il numero di lanci (dimensione del campione) a 1000 e aumentato le ripetizioni. Più ripetizioni, migliore è la corrispondenza dei dati con la curva normale.

  2. Quindi, ho provato a mantenere il numero di ripetizioni fissato a 1.000 e aumentato la dimensione del campione. Maggiore è la dimensione del campione, peggio la curva normale sembra adattarsi ai dati. Ciò sembra essere in contraddizione con l'esempio del libro che approssima meglio la curva normale all'aumentare della dimensione del campione.

  3. Volevo vedere cosa sarebbe successo se avessi aumentato la dimensione del campione, ma con un numero maggiore di ripetizioni fissate a 10.000. Questo sembra contraddire anche il libro.

Qualche idea su cosa sto facendo di sbagliato?

Codice e grafici di seguito.

%matplotlib inline

def plot_hist(num_repetitions, num_tosses):
    tosses = np.random.randint(0, 2, size=[num_repetitions, num_tosses])
    sums = np.apply_along_axis(lambda a: np.sum(a == 1), 1, tosses)

    xmin, xmax = min(sums), max(sums)  
    lnspc = np.linspace(xmin, xmax, len(sums))

    m, s = stats.norm.fit(sums) # get mean and standard deviation  
    pdf_g = stats.norm.pdf(lnspc, m, s) # now get theoretical values in our interval  

    bins = np.arange(xmin, xmax) - 0.5
    step = int((xmax - xmin)/5)

    fig, ax = plt.subplots()
    _ = ax.hist(sums, bins, edgecolor='black', linewidth=1.2, density=True)
    _ = ax.plot(lnspc, pdf_g, label="Norm", color='red')
    _ = ax.set_xticks(bins[::step] + 0.5)
    _ = ax.set_title('{:,} tosses - {:,} repetitions'.format(num_tosses, num_repetitions))

1. Sperimenta con un numero crescente di ripetizioni (dimensione del campione fissa di 1000)

plot_hist(1000, 1000)

inserisci qui la descrizione dell'immagine

plot_hist(10000, 1000)

inserisci qui la descrizione dell'immagine

plot_hist(100000, 1000)

inserisci qui la descrizione dell'immagine

2. Sperimenta con l'aumento della dimensione del campione (fissato a 1000 ripetizioni)

plot_hist(1000, 100)

inserisci qui la descrizione dell'immagine

plot_hist(1000, 1000)

inserisci qui la descrizione dell'immagine

plot_hist(1000, 10000)

inserisci qui la descrizione dell'immagine

3. Sperimenta con l'aumento della dimensione del campione (fissato a 10.000 ripetizioni)

plot_hist(10000, 100)

inserisci qui la descrizione dell'immagine

plot_hist(10000, 1000)

inserisci qui la descrizione dell'immagine

plot_hist(10000, 10000)

inserisci qui la descrizione dell'immagine

plot_hist(10000, 100000)

inserisci qui la descrizione dell'immagine


9
Hai bisogno di un plotter istogramma migliore: questo è particolarmente scarso e sta creando artefatti. Meglio ancora, confronta le distribuzioni con un diagramma di probabilità piuttosto che un istogramma.
whuber

1
Questo è utile da sapere e ha aumentato la mia conoscenza oggi. Grazie!
Chris Snow,

3
"Ripetizioni" indica la "dimensione del campione", non i lanci. Aumentare il numero di lanci è qualcosa di diverso
Marte

1
Scusa, ho pensato, pensato e pensato, ma non posso con il termine per quello! Ma indipendentemente dal numero di lanci, alla fine, ti dà 1 numero (numero di teste). Ti dà 1 campione.
Mars

1
Ho pubblicato una nuova domanda che si concentra solo sulla terminologia: stats.stackexchange.com/questions/389892/…
Chris Snow

Risposte:


27

Nel secondo caso, aumentando il numero di lanci, si aumenta il numero di bin in cui può cadere un singolo processo. Mentre il primo caso dell'esperimento 2 ha solo un massimo di 100 contenitori che possono essere riempiti, l'ultimo esempio ha 10000 contenitori. Hai aumentato la "risoluzione" del tuo esperimento di un fattore 100 (ovvero, un cestino nel tuo primo esperimento è ora rappresentato da circa 100 nel secondo). Ovviamente questo significa che ti aspetteresti di richiedere un fattore 100 in più di dati per riempire i tuoi contenitori.


Ah, ha senso. Impostando il numero di bin su 35 ( _ = ax.hist(sums, bins=35, edgecolor='black', linewidth=1.2, density=True)) il terzo esperimento ora approssima la curva normale.
Chris Snow,

5

Puoi pensare a un singolo lancio di una moneta come a un processo indipendente di Bernoulli. Una prova ti darà rispettivamente testa / croce o successo / fallimento. Se lo ripeti dico 100.000 volte, il numero medio di teste sarà molto vicino a 0,5, se la moneta è giusta.

Ora se aumenti il ​​numero di prove a 1.000 e mantieni la ripetizione a 1, otterrai una sequenza di 1.000 successi / fallimenti e non puoi dire molto sulla probabilità di osservare, in media, 500 teste a meno che non aumenti il ​​numero di ripetizioni per ognuna di quelle prove indipendenti. All'aumentare del numero di ripetizioni, otterrai un'approssimazione sempre migliore alla distribuzione normale.

Per me è più facile pensare alle prove non come "lanci" o "dimensioni del campione" ma invece di monete separate e le ripetizioni come il numero di lanci di ciascuna di quelle monete. Quindi ha anche intuitivamente senso che aumentando il numero di monete (o prove), mantenendo costante il numero totale di ripetizioni (o lanci), l'approssimazione dei dati alla distribuzione normale peggiora.


2

Penso che le altre risposte qui siano fantastiche, ma volevo aggiungere una risposta che si estenda a un altro strumento statistico.

Stai iniziando con una linea di base che ritieni dovrebbe approssimare una curva normale, e poi vai da lì per vedere se riesci ad approssimare meglio una curva normale. Prova ad andare nell'altra direzione e vedi cosa puoi fare per fare un lavoro peggiore nell'approssimazione. Prova simulazioni in cui hai 10 lanci e 1000 ripetizioni. Confronta questo con le simulazioni in cui hai 1000 lanci e 10 ripetizioni. Dovrebbe essere chiaro che il primo caso ha una migliore approssimazione.

L'estensione che voglio fare è di ANOVA (analisi della varianza). Si vedono molti nuovi data scientist che hanno una scarsa comprensione di questo problema e progettano i loro studi in modo che abbiano molti salti mortali, ma poche ripetizioni. Hanno molti dati, ma dice meno di quanto vorrebbero. Come misurare ogni foglia su un albero, ma avere solo due alberi. Possiamo dire un bel po 'di foglie su quei due alberi, ma non di foglie sugli alberi in generale. Sarebbe stato meglio ottenere un campione molto più piccolo di foglie e ottenere molti alberi.


Grazie per la risposta. Saresti in grado di elaborare come utilizzare ANOVA in questo contesto?
Chris Snow,

1
@ChrisSnow ANOVA è una prospettiva di regressione lineare che si concentra sul fatto che diversi gruppi siano o meno diversi osservando la varianza (da cui il nome). La connessione è che con troppe ripetizioni, in realtà non si può dire la differenza tra i gruppi, anche se ci sono molti lanci. L'approssimazione alla curva normale peggiora e la varianza di ciascun gruppo non è abbastanza diversa per concludere che qualsiasi cosa sia, in effetti, diversa.
Jeremy

1

Per ottenere qualche intuizione aggiuntiva, considerare quanto segue:

Immagina di fare solo una singola ripetizione.

In tal caso, puoi aumentare il numero di tiri che desideri, ma non assomiglierà a una distribuzione normale. E questo ha senso dal momento che il tuo istogramma avrà un solo picco.


La distribuzione normale è un'approssimazione per la distribuzione di probabilità (della distribuzione binomiale).

Quello che hai fatto non è stato creare questa distribuzione. Invece, hai approssimato questa distribuzione usando un numero limitato (e piccolo) di simulazioni. (e quello che hai scoperto è che questa approssimazione peggiora quando aumenti il ​​numero di bin nell'istogramma)


Quindi entrambi avete bisogno di un alto numero di lanci e ripetizioni.

  • quando il numero di lanci è alto, la distribuzione binomiale (lanci multipli di monete) può essere approssimata mediante una distribuzione normale.
  • quando il numero di ripetizioni / simulazioni è elevato rispetto all'istogramma di questi esperimenti si avvicina alla densità della distribuzione binomiale.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.