Wyjaśnienie symulacji statystycznej

10

Nie jestem statystykiem. Więc proszę, znoście moje błędy, jeśli w ogóle.

Czy mógłbyś wyjaśnić w prosty sposób, w jaki sposób przeprowadzana jest symulacja? Wiem, że pobiera losową próbkę z normalnego rozkładu i używa do symulacji. Ale nie rozumiem jasno.

Ciekawy
źródło
11
Symulowanie co ?! :-)
chl
Dokładnie dręczące, ale czasem pytania zniechęcają pytającego, a to jeden z takich przypadków.
amit
1
@ phaedrus Czy to komentarz do mojej intencji? Jeśli tak, czy możesz wyjaśnić, co rozumiesz na podstawie powyższego pytania?
chl
To pytanie CV może również być interesujące: Wykorzystanie symulacji komputerowych do lepszego zrozumienia pojęć statystycznych na poziomie absolwenta .
gung - Przywróć Monikę

Odpowiedzi:

27

W statystyce symulację stosuje się do oceny wydajności metody, zwykle w przypadku braku podstaw teoretycznych. Dzięki symulacjom statystyczny zna i kontroluje prawdę .

Symulację stosuje się korzystnie w wielu sytuacjach. Obejmuje to dostarczenie empirycznej oceny rozkładów próbkowania, badanie błędnej specyfikacji założeń w procedurach statystycznych, określenie mocy w testach hipotez itp.

Badania symulacyjne powinny być zaprojektowane z dużą dokładnością. Burton i in. (2006) przedstawili bardzo ładny przegląd w swojej pracy „ Projektowanie badań symulacyjnych w statystyce medycznej ”. Badania symulacyjne przeprowadzone w różnych sytuacjach można znaleźć w literaturze.

Prosty przykład ilustrujący Rozważ model liniowy

y=μ+βx+ϵ

gdzie jest zmienną binarną ( x = 0 lub x = 1 ), a ϵ N ( 0 , σ 2 ) . Korzystając z symulacji w R, sprawdźmy toxx=0x=1ϵN.(0,σ2))

mi(β^)=β.
> #------settings------
> n <- 100            #sample size                          
> mu <- 5             #this is unknown in practice                         
> beta <- 2.7         #this is unknown in practice
> sigma <- 0.15       #this is unknown in practice
> #--------------------
> 
> #------set the seed so that this example can be replicated------
> set.seed(937)
> #---------------------------------------------------------------
>
> #------generate 1000 data sets and store betaHat------
> betaHat <- numeric(1000)
> for(i in 1:1000)
+ {
+     #generate the binary covariate --> n Bernoulli trials
+   x <- sample(x=c(0, 1), size=n, replace=TRUE, prob=c(0.5, 0.5))
+     #generate the errors
+   epsilon <- rnorm(n=n, mean=0, sd=sigma)
+     #form the response variable      
+   y <- mu + beta * x + epsilon 
+     #the ith generated data set
+   data_i <- data.frame(y=y, x=x)
+     #fit the model
+   mod <- lm(y~x, data=data_i)
+     #store the estimate of beta
+   betaHat[i] <- as.numeric(coef(mod)[2])     
+ }    
> #-----------------------------------------------------
> 
> #------E(betaHat) = beta?------
> mean(betaHat)
[1] 2.698609
> #------------------------------

Uwaga : Do redakcji znajduje się list do papieru, o którym mowa powyżej.

ocram
źródło
9

Przede wszystkim istnieje wiele, wiele różnych rodzajów symulacji w statystykach, a nawet więcej w otaczających polach. Samo powiedzenie „Symulacja” jest tak samo użyteczne jak powiedzenie „Model” - to znaczy niewiele.

Opierając się na pozostałej części twojego pytania, przypuszczam, że masz na myśli symulację Monte Carlo, ale nawet to jest trochę niejasne. Zasadniczo, co się dzieje, jest wielokrotnie pobierają próbki z pomocą dystrybucji (nie musi być normalny), aby wykonać niektóre analizy statystycznej na sztucznej populacji znana, ale losowe właściwości.

Cel tego dzieli się na dwie kategorie:

Czy moja metoda obsługuje X? : Zasadniczo symulujesz serię wielu losowych populacji ze znaną „właściwą” odpowiedzią, aby sprawdzić, czy nowa technika daje ci odpowiedź właściwą. Jako podstawowy przykład załóżmy, że opracowałeś nowy sposób pomiaru korelacji między dwiema zmiennymi, X i Y. Symulowałbyś dwie zmienne, w których wartość Y zależy od wartości X, wraz z jakiś losowy hałas. Na przykład Y = 0,25x + szum. Następnie utworzyłbyś populację z pewnymi losowymi wartościami X, niektórymi wartościami Y, które były równe 0,25x + liczbą losową, prawdopodobnie wiele tysięcy razy, a następnie pokazałeś, że przeciętnie, twoja nowa technika wydziela liczbę, która poprawnie pokazuje, że Y = 0,25x.

Co się zdarzy jeśli? Symulację można przeprowadzić jako analizę wrażliwości dla istniejącego badania. Powiedzmy na przykład, że przeprowadziłem badanie kohortowe, ale wiem, że mój pomiar ekspozycji nie jest zbyt dobry. Niepoprawnie klasyfikuje 30% moich pacjentów jako narażonych, kiedy nie powinni być, i klasyfikuje 10% moich pacjentów jako nienaświetlonych, kiedy nie powinni. Problem polega na tym, że nie mam lepszego testu, więc nie wiem, który jest który.

Wziąłbym moją populację i dałbym każdemu narażonemu podmiotowi 30% szansy na przejście na nienaświetlony, a każdemu nienaświetlonemu podmiotowi 10% szansy na przejście na narażony. Następnie tworzyłem tysiące nowych populacji, losowo ustalając, które podmioty się zmieniają, i ponownie przeprowadzałem analizę. Zakres tych wyników da mi dobre oszacowanie, jak bardzo mój wynik badania mógłby się zmienić, gdybym mógł poprawnie sklasyfikować wszystkich.

Oczywiście, jak zawsze, istnieje większa złożoność, niuans i użyteczność symulacji, w zależności od tego, ile chcesz kopać.

Fomite
źródło
1. Więc to, co wyjaśniłeś w swojej odpowiedzi, to symulacja Monte-Carlo? 2. Czy istnieją inne rodzaje symulacji (inne niż Monte-Carlo), które są wykorzystywane w statystykach?
vasili111
5

Symulacji można także użyć do spojrzenia na rzeczywiste procesy w warunkach teoretycznych, w których procesy te mają nieliniowy wkład. Na przykład firma produkcyjna może być zainteresowana tym, czy dodanie dodatkowej linii produkcyjnej jest opłacalne, centrum telefoniczne może być zainteresowane sposobem przekierowywania połączeń do operatorów, aby skrócić czas oczekiwania w kolejce i przeszkadzać dzwoniącym, oddział ratunkowy może być zainteresowanym tym, jak najlepiej przydzielić personel i przenieść pacjentów, lub port morski może być zainteresowany najbardziej efektywnym sposobem rozmieszczenia operacji kontenerowych. Do modelowania tych procesów można zastosować symulację zdarzeń dyskretnych, a parametry można dostosować, aby odpowiedzieć na pytania typu „co jeśli”.

Innym obszarem zainteresowania symulacji są złożone systemy. Szczególnie w naukach społecznych symulacja oparta na agentach jest interesującym rodzajem symulacji, która zaczyna gromadzić coraz więcej zwolenników. W symulacji opartej na agentach agenci (np. Pojedyncze osoby) otrzymują atrybuty, takie jak osobowości i wchodzą w interakcje, dzięki czemu modeluje chaotyczny system. Symulacja oparta na agentach sprawdza wpływ otaczających agentów na siebie i można uwzględnić efekt na odległość. Chociaż sam nie przeprowadzałem żadnych symulacji opartych na agentach, widziałem, że służy to do modelowania systemów, takich jak rozkład geograficzny wielkości populacji w prehistorycznej społeczności w czasie.

Michelle
źródło
Czy możesz podać jakieś przykłady?
vasili111
Nie jestem pewien, co masz na myśli przez niektóre przykłady. W pierwszym akapicie podałem kilka przykładów.
Michelle
2

x1,,xn

x1,,xn

fa^n(x)=1nja=1njaxjax
nfafamifa[h(X)]ψ(X1,,Xn)fa^n
σ^n2)(x1,,xn)=1n+1ja=1n(xja-x¯)2)
σ2)=varfa(X)n x1,,xnfa^n
β=σ^n2)(x1,,xn)-σ^n2)(x1,,xn)
Xi'an
źródło
3
Uważam, że warto rozdzielić dwie podstawowe koncepcje związane z metodą ładowania początkowego. Sam bootstrap powinien być uważany za sposób modyfikacji estymatora w celu uzyskania innego (miejmy nadzieję lepszego) estymatora. Można go obliczyć teoretycznie, dokładnie i (czasami) w formie zamkniętej. Symulacja nie jest nieodłączną częścią bootstrapu! Jednak w wielu przypadkach symulacja jest naturalnym i łatwym sposobem przybliżenia estymatora ładowania początkowego. Zobacz wprowadzenie i rozdział 1 w Hall, The Bootstrap i Edgeworth Expansion.
whuber
1
Jeśli chodzi o edycję: jest to naprawdę dobry przykład przypadku, w którym oszacowanie błędu początkowego można obliczyć dokładnie w formie zamkniętej: mi[β | próba]=-[2)/(n+1)]σ^n2)(x1,,xn).
Whuber