Monedas trucadas. Mathieu Kessler Departamento de Matemática Aplicada y Estadı́stica Universidad Politécnica de Cartagena Monedas trucadas: ilustración del interés de la distribución muestral El objetivo de esta práctica es decidir del número de veces que deberı́amos tirar una moneda que sospechamos está trucada, para llegar con garantı́as a una conclusión en un sentido o en otro. Está pensada para ilustrar cómo el hecho de conocer la distribución muestral de un estadı́stico permite de tomar decisiones sobre el valor de un parámetro. Corresponde de hecho al fundamento básico de los contrastes de hipótesis. En esta prácticas seguiremos los siguientes pasos: a) Supondremos que la moneda está trucada y que la probabilidad de que salga cara es 0.65. Aprenderemos a simular de una variable que puede tomar el valor “cara” y el valor “cruz” A continuación realizaremos 10 tiradas, y calcularemos la proporción de “caras”. b) Repetiremos el paso b) anterior 1000 veces. c) Realizamos un histograma de los 1000 valores de la proporción de “caras” en series de 10 tiradas que hemos obtenido en el paso anterior d) A la vista del histograma decidimos si con 10 tiradas es fácil detectar que esta moneda está trucada. e) Realizamos todo lo anterior con series con un mayor número de tiradas. Paso a) Para simular la elección de un elemento al azar entre varios, podemos utilizar la función sample. 1 Para obtener una descripción de esta función, y en particular de los argumentos que admite, podemos recurrir a la ayuda en lı́nea de R. Podemos por ejemplo introducir en la lı́nea de comando: help(sample) Obtenemos el resultados siguiente: Random Samples and Permutations Description: ’sample’ takes a sample of the specified size from the elements of ’x’ using either with or without replacement. Usage: sample(x, size, replace = FALSE, prob = NULL) Arguments: x: Either a (numeric, complex, character or logical) vector of more than one element from which to choose, or a positive integer. size: non-negative integer giving the number of items to choose. replace: Should sampling be with replacement? prob: A vector of probability weights for obtaining the elements of the vector being sampled. Cuando en la descripción de una función algunos de los argumentos están seguidos del signo “=” y de un valor, corresponde a su valor por defecto. Deducimos que podemos introducir en nuestro script el vector de cadenas x=c(‘‘cara’’,’’cruz’’) sample(x,size=1,prob=c(0.65,0.35)) para obtener una (porque he indicado size=1) tirada de una moneda trucada con 65% de posibilidades de que salga “cara” y solo 35% de posibilidades de que salga cruz. No he indicado el valor del argumento “replace”, puesto que me conviene el argumento por defecto. Obtengo [1] ‘‘cara’’ Puedo repetir la tirada individual un cierto número de veces, o puedo obtener de golpe 10 tiradas por ejemplo cambiando el argumento “size” asi como el argumento “replace”. u=sample(x,size=10,replace=TRUE,prob=c(0.65,0.35)) ¿Cuántas veces ha salido “cara” entre estas diez tiradas? A qué proporción de “cara” corresponde? ¿Nos da a pensar que la moneda está trucada? Cómo podrı́amos pedir a R que calcule la proporción de “cara” en el vector u? 2 Paso b) Queremos ahora repetir un gran número de veces el experimento de realizar 10 tiradas y calcular la proporción de “cara” obtenidas entre estas 10. Esta repetición se realiza de manera sencilla si utilizamos un “bucle”. Al igual que en muchos lenguajes de programación, el comando para realizar un bucle en R es for. Supongamos que queremos llevar a cabo dos veces el paso a) descrito arriba. Utilizamos for (i in 1:2) { u=sample(x,size=10,replace=TRUE,prob=c(0.65,0.35))} Si pedimos ahora el valor de u, nos encontramos con el vector correspondiente a la última realización del experimento de las 10 tiradas: hemos sobreescrito el resultado de la primera realización.... Nos interesa guardar la proporción de caras obtenidas en cada uno de las realizaciones del experimento de las 10 tiradas. Vamos por lo tanto a definir un vector p en el que iremos guardando las proporciones obtenidas. p=c(0,0) for (i in 1:2){u=sample(x,size=10,replace=TRUE,prob=c(0.65,0.35)) p[i]=sum(u=="cara")/length(u)} Yo he obtenido: > p [1] 0.7 0.5 Ejercicio: obtener las proporciones de “caras” para 10000 realizaciones del experimento de realizar 10 tiradas. Paso c): realización del histograma o diagrama de barras. Hemos visto en la primera sesión cómo obtener un histograma (o un diagrama de barras’) del vector p. Paso d): interpretación ¿Os parece fácil detectar, basándose en una serie de 10, tiradas que la moneda está trucada? ¿Qué modelo parece razonable para la distribución de los valores que puede tomar la proporción de 1 en series de 10 tiradas de moneda? 3 Paso f ): investigación Ejercicio: investigar si con series que contienen más tiradas, será más fácil detectar que la moneda está trucada. Para ir más lejos... Ejercicio: puede escribir una función de R que admita como argumentos n el número de veces que quiero repetir el experimento de realizar size tiradas de una moneda, asi como prob, el vector de probabilidades de sacar “cara” y “cruz” y que devuelva el vector p de proporciones de caras obtenidas en las realizaciones del experimento. La sintáxis básica de la función que decido llamar micalculo, que admite como argumentos n,size,prob y que devuelva p es: micalculo=function(n,size,prob){ ....expresiones de R para calcular p.... return(p)} Para más información, ya sabeis....help(function) 4