Come simulare la deviazione standard
Vorrei simulare i dati in base ai dati reali acquisiti. I dati reali acquisiti sono 15 osservazioni. La simulazione basata sui dati esistenti è di 100 osservazioni. Ho una media e una deviazione standard per le 15 osservazioni, tuttavia come faccio a simulare la deviazione standard per un campione più ampio (100 osservazioni) in base ai dati reali più piccoli? La deviazione standard dovrebbe generalmente diminuire con un aumento della dimensione del campione, ma a quale velocità?
Risposte
L' errore standard diminuisce all'aumentare della dimensione del campione. La deviazione standard è un concetto correlato ma forse non abbastanza correlato da giustificare una terminologia simile che confonde tutti coloro che stanno iniziando a imparare le statistiche.
Una distribuzione campionaria è la distribuzione dei valori che otterresti se campionassi ripetutamente da una popolazione e calcolassi una statistica, diciamo la media, ogni volta. La deviazione standard di quella distribuzione campionaria è l'errore standard. Per l'errore standard della media, diminuisce di$\sqrt{n}$, così $s/\sqrt{n}$ come stima dell'errore standard (dove $s$ è la deviazione standard del campione).
La deviazione standard di una distribuzione è qualunque essa sia, e non importa quanto sia grande un campione che disegni o se campionerai del tutto.
Sembra che tu voglia simulare i dati da una distribuzione con la media e la deviazione standard che hai calcolato dal campione di $15$, quindi fallo. Se sei disposto ad assumere una distribuzione normale, il comando R è rnorm e il comando Python è numpy.random.normal.
La deviazione standard non diminuisce con la dimensione del campione. Più grande è il tuo campione, più vicina dovrebbe essere la deviazione standard alla deviazione standard della popolazione. Ciò che segue, con una dimensione del campione maggiore, la diffusione delle deviazioni standard stimate su campioni più grandi rispetto a campioni più piccoli diminuirebbe, perché sulla base di campioni più grandi saremmo più precisi.
Di seguito puoi vedere un esempio numerico in R per questo, in cui simuliamo disegni dalla distribuzione normale standard (con sd = 1) per 15 e 100 campioni, e quindi stimiamo le deviazioni standard per loro.
> summary(replicate(100000, sd(rnorm(15))))
Min. 1st Qu. Median Mean 3rd Qu. Max.
0.3039 0.8515 0.9762 0.9824 1.1061 1.8886
> summary(replicate(100000, sd(rnorm(100))))
Min. 1st Qu. Median Mean 3rd Qu. Max.
0.6916 0.9498 0.9971 0.9980 1.0451 1.3089
Chiedete specificatamente della simulazione. Seguendo la risposta di @ Dave (+1), ecco un paio di simulazioni in R.
Supponiamo che prenda un milione di campioni di dimensioni $n = 16$ da una popolazione distribuita come $\mathsf{Gamma}(\mathrm{shape} = 4,\, \mathrm{rate}=.1),$ in modo che la media della popolazione sia $\mu = 40$ la varianza della popolazione è $\sigma^2 = 400,$ e $\sigma = 20.$
Quindi il campione significa (medie) $A =\bar X_{15}$ avere $E(A) = 40$ ed errori standard $SD(A)= \sigma/\sqrt{n} = 5.$ Con un milione di campioni, i risultati della simulazione dovrebbero essere precisi fino a circa tre cifre significative.
set.seed(904)
a = replicate(10^6, mean(rgamma(16, 4, .1)))
mean(a); sd(a)
[1] 40.00176 # aprx 40
[1] 4.996061 # aprx 5
Al contrario, facciamo una simulazione simile di un milione di campioni di dimensioni $n = 100$dalla stessa popolazione. Adesso$E(\bar X_{100}) = 40$ e $SD(\bar X_{100}) = \sigma/\sqrt{n} = 20/\sqrt{100} = 2.$
set.seed(2020)
a = replicate(10^6, mean(rgamma(100, 4, .1)))
mean(a); sd(a)
[1] 40.0014 # aprx 40
[1] 2.001084 # aprx 20/10 = 2