Novena sesión con Rcmdr: variables aleatorias discretas en R. Sampleando en R.

En esta entrada vamos a ocuparnos de los cálculos necesarios para trabajar con una
variable aleatoria discreta X, dada mediante una tabla de valores y probabilidades (la tabla de densidad de probabilidad) como esta:

\begin{array}{c|c|c|c|c|}valor&x_1&x_2&\cdots&x_k \\\hline probabilidad&p_1&p_2&\cdots&p_k\end{array}

En esta situación, queremos calcular \mu_X (la media de X) y \sigma_X (la desviación típica de X), y vamos a aprender a utilizar R para calcularlos. Para fijar ideas vamos a pensar en un ejemplo concreto. Supongamos que la densidad de probabilidad de la variable X es esta:

\begin{array}{c|c|c|c|c|c|}valor&2&4&7&8&11\\\hline probabilidad&1/5&1/10&1/10&2/5&1/5\end{array}

Entonces, para calcular la media en R usaríamos estos comandos:

#Tabla de densidad de la variable aleatoria discreta
valores=c(2,4,7,8,11)
probabilidades=c(1/5,1/10,1/10,2/5,1/5)

#Cálculo de la media
mu=sum(valores*probabilidades)
mu

#Cálculo de la varianza y la desviación típica
varianza=sum((valores-mu)^2*probabilidades)
varianza
sigma=sqrt(varianza)
sigma

Y se obtienen estos resultados:

> #Tabla de densidad de la variable aleatoria discreta
> valores=c(2,4,7,8,11)
> probabilidades=c(1/5,1/10,1/10,2/5,1/5)
> #Cálculo de la media
> mu=sum(valores*probabilidades)
> mu
[1] 6.9
> #Cálculo de la varianza y la desviación típica
> varianza=sum((valores-mu)^2*probabilidades)
> varianza
[1] 9.49
> sigma=sqrt(varianza)
> sigma
[1] 3.080584

También podemos representar gráficamente la distribución de probabilidad, mediante este comando:

barplot(probabilidades,names.arg=valores,col="lightseagreen")

El gráfico que se obtiene (en la ventana R, no en la de Rcmdr) esPara entender el comando barplot, empecemos por lo más sencillo: el último argumento col=»lightseagreen» es, simplemente, para dar color (verdoso, en lugar del gris por defecto) al gráfico.  SI quieres ver (una parte de) los colores disponibles en R, ejecuta el comando colors().  El primer argumento determina la altura de las columnas (que vienen dadas por las probabilidades, claro). Y el segundo argumento, names.arg=valores ,sirve para pedirle a R que rotule las columnas con los valores de la variable X, que están almacenados en ese vector valores.

Función de distribución (probabilidad acumulada)

La función de distribución de la variable aleatoria X es, recordémoslo:

F(k)=P(X\leq k)

Es decir, que dado el valor de k, debemos sumar todos los valores de la densidad de probabilidad para valores menores o iguales que k. En el ejemplo que estamos utilizando, si queremos calcular F(7), debemos hacer:

F(7)=P(X=2)+P(X=4)+P(X=7)=\frac{1}{5}+\frac{1}{10}+\frac{1}{10}

Se trata de sumas acumuladas. ¿Cómo hacemos esto en R? Usaríamos la función cumsum, que ya encontramos en la quinta sesión al hacer tablas de frecuencias acumuladas. Es decir,

#Función de distribución
cumsum(probabilidades)

que produce un vector con los valores de F(k) para cada $k$.

> cumsum(probabilidades)
[1] 0.2 0.3 0.4 0.8 1.0

Seguramente preferiríamos ver estos resultados en forma de tabla, para poder localizar el valor de F que corresponde a cada valor de k. Con lo que hemos aprendido de matrices en la anterior sesión, es fácil conseguirlo. Pondríamos:

#Función de distribución
rbind(valores,cumsum(probabilidades))

y obtenemos una tabla de valores de F:

> rbind(valores,cumsum(probabilidades))
[,1] [,2] [,3] [,4] [,5]
valores  2.0  4.0  7.0  8.0   11
0.2  0.3  0.4  0.8    1

Sampleando

Muchas veces queremos hacer experimentos o, mejor dicho, simulaciones, utilizando el ordenador para imitar lo que sucedería al obtener valores de una determinada variable aleatoria, de la que conocemos su densidad de probabilidad. Es decir, que queremos simular la obtención de una muestra de dicha variable. Como apuntamos en la sexta sesión, puede usarse la función sample (sample es muestra en inglés) de R para hacer esto. En este ejemplo, para obtener una muestra de 100 valores de X haríamos:

muestra=sample(valores,1000,prob=probabilidades,replace=T)

Como se ve, debemos explicarle a sample cuáles son los valores, y cuáles son sus probabilidades (mediante prob=). Además, en el segundo argumento indicamos cuántos elementos queremos (1000). Finalmente, para que sea posible obtener 1000 valores de ua variable que sólo toma cinco valores distintos, debemos permitir que sample repita valores. Por eso aparece el argumento replace=T. Mediante ese argumento R repetirá los valores, con frecuencias que se corresponden con la densidad de probabilidad de X.

Conclusión

Para facilitarte el trabajo con las variables aleatorias discretas, aquí tienes un resumen de todos los comandos que hemos visto en esta entrada. Puedes usar este fichero como plantilla cuando tengas que trabajar con este tipo de problemas, y sólo tendrás que cambiar los vectores de valores y probabilidades.

Y muchas gracias por la atención.

#Tabla de densidad de la variable aleatoria discreta
valores=c(2,4,7,8,11)
probabilidades=c(1/5,1/10,1/10,2/5,1/5)

#Cálculo de la media
mu=sum(valores*probabilidades)
mu

#Cálculo de la varianza y la desviación típica
varianza=sum((valores-mu)^2*probabilidades)
varianza
sigma=sqrt(varianza)
sigma

#Grafico de columnas de la distribucion de probabilidad
barplot(probabilidades,names.arg=valores,col="lightseagreen")

#Función de distribución
rbind(valores,cumsum(probabilidades))

#Muestra. Elegirprimero el numero de elementos de la muestra (y si hay remplazamiento).
numeroElementosMuestra=10000
muestra=sample(valores,numeroElementosMuestra,prob=probabilidades,replace=T)
muestra
mediaMuestral=mean(muestra)
mediaMuestral

2 comentarios en “Novena sesión con Rcmdr: variables aleatorias discretas en R. Sampleando en R.

  1. Pingback: Duodécima sesión en R: funciones de densidad para variables aleatorias continuas. | PostData

  2. Pingback: 13ª sesión con Rcmdr: un momento de respiro, y algo de ayuda. | PostData

Deja una respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Salir /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s