# Ver experimento: The Galton Board # https://www.youtube.com/watch?v=Kq7e6cj2nDw # Bernoulli p=0.5;intentos=1 rbinom(1,size=intentos,prob=p) # Muestra de bernoulli rbern <- function(tamano_muestra,p=0.5){ return(rbinom(tamano_muestra,size=1,prob=p)) } muestra_bern <- rbern(tamano_muestra=33,p=0.5) muestra_bern tamano_muestra = length(muestra_bern) # Una muestra de tamano n de una variable aleatoria # bernoulli sirve para representar el camino que hace # una pelota (que no pica) cuando cae entre los clavos # puede ir por la izq (0) o por la derecha (1) camino_de_la_pelota = muestra_bern largo_del_camino = tamano_muestra # Las bolitas que caen en un mismo casillero pueden haber # seguido caminos muy distintos, pero sabemos que # todas las bolitas que caen un mismo casillero tinen que # tener la misma cantidad de saltos a la izquierda que a # la derecha saltos_a_la_derecha = sum(camino_de_la_pelota) saltos_a_la_izquierda = largo_del_camino - saltos_a_la_derecha # Si enumeramos los casilleros por su orden con un n\'umero natural # desde 0 al tama\~no de la muestra, length(camino_de_la_pelota), # entonces la cantidad de saltos a la derecha nos permite indicar # en que casillero cay\'o una pelota nombre_de_casilleros_numero_natural = seq(0,largo_del_camino) nombre_de_casilleros_numero_natural casillero = saltos_a_la_derecha casillero # Si en vez de nombrar a los casilleros con un n\'umero natural # lo hacemos con un n\'umero real entre 0 y 1, equidistantes, # entonces la proporci\'on de saltos a la derecha nos permite # indicar en que casillero cay\'o una pelota nombre_de_casillero_proporcion = nombre_de_casilleros_numero_natural/largo_del_camino nombre_de_casillero_proporcion casillero = saltos_a_la_derecha/largo_del_camino ##### ATENCION ## La clave para entender por qu\'e el experimento del video ## es un experiemento del teorma central del l\'imite es lo siguiente: casillero == mean(muestra_bern) ## Esto es importante porque la propiedad el Teorema Central del L\'imite afirma ## solo vale sobre un tipo especial de variable aleatoria ( v.a.): ## _X_n ~ la media de una muestra (i.i.d.) de tama\~no n obtenida de una v.a. X ## con E(X)=\mu y V(X)=\sigma^2 ## El casillero donde cae la bolita es PRECISAMENTE la variable aleatoria de la ## que habla el TCL, la media de una muestra. ## Luego cada bolita representa una muestra, el casillero representa la media, y ## por el TCL sabemos que la media de una muestra tiene una distribuci\'on de ## probabilidad se parece una normal N(\mu,(\sigma^2)/n) ## En el experimento cada bolita representa una muestra, la posici\'on de una ## bolita en un casillero representa la media de una muestra. ## Tirar muchas bolitas representa entonces la generaci\'on de muchas muestras ## diferentes (en este caso muestras de una v.a. bernoulli pero seg\'un el TCL ## no importa cual es la v.a. a partir de la cual se extraen muestras, solo ## importa su esperanza y su varianza) ## En la vida real generalmente: ## a) No conocemos la distribuc\'on de la v.a. X a partir de la cual se extrajo ## la muestra ## b) No conocemos su esperanza, E(X), ni su varianza, V(X) ## c) Solo tenemos una sola muestra ## El TCL es \'util porque nos permite estimar, en un escenario de la vida real, ## alrededor de qu\'e punto se encuentra la esperanza de la poblaci\'on y ## determinar cual es la probabilidad de que nuestra estimaci\'on sea falsa! ## Esto \'ultimo dejemoslo para la siguiente clase. Ahora lo que queremos es ## convencernos a nosotros mismos que el TCL funciona, y para eso vamos a simular ## el experimento del video. Nosotros que tenemos una computadora vamos a poder ## simular y ver que pasa si le agregamos o le sacamos capas al triangulo. ## Nuestro objetivo es entender lo que representan: ## a) un clavos ## b) una bolita ## c) un camino ## d) la posici\'on en un casillero ## e) la cantidad de bolitas ## f) la forma en la que se ordenan el conjunto de las bolitas en los casilleros. ##### # Propiedades Bernoulli esperanza_rbern = function(p) return(p) varianza_rbern = function(p) return(p*(1-p)) desvio_rbern = function(p) return(sqrt(varianza_rbern(p))) # Ejemplo p=0.3 esperanza_rbern(p) varianza_rbern(p) desvio_rbern(p) # Ac\'a vamos a simular un experimento como el del video. Pero como nosotros trabajamos # con una computadora podemos imagninar el escenario que queramos: # - Podemos tener mas o menos bolitas (bolitas) # - Podemos tener m\'as o menos capas de clavos (capas) # - Podemos tener clavos que no sean equiprobables (p) tirar_bolitas <- function(bolitas,capas=33,p=0.5){ CasilleroS <- c() # Para guardar la posici\'on del casillero de las bolitas i <- 0 # contador while( i < bolitas ){ camino_de_la_bolita <- rbern(tamano_muestra=capas,p=p) muestra_i <- camino_de_la_bolita media <- mean(muestra_i) casillero <- media CasilleroS <- c(CasilleroS,casillero) i = i + 1 } return(CasilleroS) } ## Variable globales del experimento bolitas = 333; n_muestras = bolitas p = 0.5 # Por el teorema central del limite (TCL) sabemos que la distribuci\'on de medias es una # exactemente una Normal cuando el tama\~no de la muestra es infinito. Para representar # una distribuci\'on continua como la Normal, que requiere infinitos casilleros, vamos # a trabajar en cambio con un n\'umero grande de casilleros. tamano_muestra_muy_grande = 10000 casilleros_con_muestras_muy_grandes <- seq(0,1,length.out = tamano_muestra_muy_grande ) x <- casilleros_con_muestras_muy_grandes ### Caso mediano (como en el video) ### capas = 33 tamano_muestras=33; capas= tamano_muestras casilleros <- seq(0,1,length.out = capas+2) # Experimento casilleros_rbern <- tirar_bolitas(bolitas=n_muestras,capas=tamano_muestras,p=p) # A pensar esta linea! hist(casilleros_rbern, breaks=casilleros, freq = F,main="",col=rgb(0,0,0,0.45)) lines(x,dnorm(x,mean=esperanza_rbern(p), sd=desvio_rbern(p)/sqrt(tamano_muestras))) ### Caso chico ### capas = 2 tamano_muestras=2; capas= tamano_muestras casilleros <- seq(0,1,length.out = capas+2) # Experimento casilleros_rbern <- tirar_bolitas(bolitas=n_muestras,capas=tamano_muestras,p=p) # A pensar esta linea! hist(casilleros_rbern, breaks = casilleros,freq = F,main="",col=rgb(0,0,0,0.5)) lines(x,dnorm(x,mean=esperanza_rbern(p), sd=desvio_rbern(p)/sqrt(tamano_muestras))) ### Caso grande ### capas = 99 tamano_muestras=99; capas=tamano_muestras casilleros <- seq(0,1,length.out = capas+2) # Experimento casilleros_rbern <- tirar_bolitas(bolitas=n_muestras,capas=tamano_muestras,p=p) # A pensar esta linea! hist(casilleros_rbern, freq = F,main="",col=rgb(0,0,0,0.5),breaks = seq(0,1,length.out = capas+2)) lines(x,dnorm(x,mean=esperanza_rbern(p), sd=desvio_rbern(p)/sqrt(tamano_muestras))) ################################################################# ### Opcional: interpretacion 2. Binomail ### ################################################################# # La distribuci\'on Binomial es una generalizaci\'on (o transformaci\'on) de # la una muestra bernoulli. # La transformaci\'on (o variable aleatoria) binomial es # X : cantidad de exitos en n intentos v.a.binomial <- function(muestra_rbern){ return(sum(muestra_rbern)) } # En esta interpretacion una bolita que cae en un casillero # ya no es m\'as una muestra de una v.a. bernoulli sino # es una muestra binomial de tamano uno (1) con la misma cantidad # de intentos que el tama\~no de la muestra bernoulli intentos = 33 camino_de_la_pelota <- rbern(tamano_muestra=intentos) muestra_rbinom <- v.a.binomial(camino_de_la_pelota) saltos_a_la_derecha <- muestra_rbinom saltos_a_la_derecha # De forma similar a como hicimos en la primera interpretaci\'on (muestras bernoulli) # lo fundamental para entender por qu\'e el experimento representa # el comportamiento mencionado en el TCL fue poner en correspondencia # la posici\'on del casillero con la media de la muestra casillero = saltos_a_la_derecha casillero == mean(muestra_rbinom) # Bajo esta nueva interpretaci\'on (mustras binomial), los casilleros representan # la media de la muestra. En particular, como la muestra es de tama\~no 1, su media es # igual al valor del \'unico elementos de la muestra # Finalmente, lo \'unico que nos importa de la v.a. original (en este caso Binomial) # es su esperanza y su varianza esperanza_rbinom = function(n,p) return(n*esperanza_rbern(p)) varianza_rbinom = function(n,p) return(n*varianza_rbern(p)) desvio_rbinom = function(n,p) return(sqrt(varianza_rbinom(n,p))) # Ejemplo n = intentos esperanza_rbinom(n,p) varianza_rbinom(n,p) desvio_rbinom(n,p) # Finalmente modificamos el experimento para incorporar esta segunda interpretaci\'on # del experimento tirar_bolitas <- function(bolitas,capas=33,interpretacion="bernoulli",p=0.5){ CasilleroS <- c() i <- 0 while( i < bolitas ){ camino_de_la_bolita <- rbern(tamano_muestra=capas,p=p) if(interpretacion == "bernoulli"){ muestra_i <- camino_de_la_bolita } if(interpretacion == "binomial"){ muestra_i <- v.a.binomial(camino_de_la_bolita) } media <- mean(muestra_i) casillero <- media CasilleroS <- c(CasilleroS,casillero) i = i + 1 } return(CasilleroS) } ##### Interpretado como binomial ##### Caso unico n = 1 tamano_muestras=1 ### Los casos que podemos cambiar son la cantidad de intentos intentos = 33; capas = intentos; n = capas # Por el teorema central del limite (TCL) sabemos que la distribuci\'on de medias es una # exactemente una Normal cuando el tama\~no de la muestra es infinito. Para representar # una distribuci\'on continua como la Normal, que requiere infinitos casilleros, vamos # a trabajar en cambio con un n\'umero grande de casilleros. tamano_muestra_muy_grande = 10000 casilleros_con_muestras_muy_grandes <- seq(0,n,length.out = tamano_muestra_muy_grande ) x <- casilleros_con_muestras_muy_grandes casilleros <- seq(0,n,length.out = capas+2) # Experimento casilleros_rbinom <- tirar_bolitas(bolitas=n_muestras,capas=intentos,interpretacion = "binomial",p=p) # A pensar esta linea! hist(casilleros_rbinom, breaks = casilleros ,freq = F,main="",col=rgb(0,0,0,0.5)) # Teoria lines(x,dnorm(x,mean=esperanza_rbinom(n,p), sd=desvio_rbinom(n,p)/sqrt(tamano_muestras)))