R-Conomics

Si bien pensaba que en estos días ya comenzaría a trabajar en las últimas entradas respecto a la creación de gráficos para después poder pasar a temas de econometría, me parece más necesario dar un repaso de estadística, ya que de ahí se parte para poder comprender temas algo más complejos, como lo es la econometría e incluso la lógica detrás de algunos gráficos, por tanto daré una pausa a las entradas de los gráficos (partes 3 a 9) para introducir ésta entrada intermedia, donde veremos algunos conceptos y fórmulas que, a mi parecer, son bastante necesarias para poder pasar a temas más complejos.

Esta entrada se centrará principalmente en un repaso general de conceptos de estadística, así como algunos conceptos previos que se requieren para poder comprender el resto, para después pasar a las medidas de tendencia central y dispersión, explicándolas una por una y aplicando lo visto en la consola de R.

Conceptos previos

En este punto vamos a ver algunos conceptos previos que ayudarán al lector a entender principalmente la parte de probabilidad. También son útiles para inferencia estadística, pero no son tan necesarios, aunque si es recomendable tenerlos en mente.

Conjuntos

Primero que nada ¿qué son los conjuntos? Podemos definirlos como una colección de objetos, números, caracteres, etc, con características definidas, los cuales pertenecen a un mismo espacio (Aguilar Marquez, 2015, p. 225). Entre los conjuntos más conocidos tenemos al de las vocales, el cual se puede denotar de la siguiente manera:

\[\begin{equation} V=\{a,e,i,o,u\} \end{equation}\]

O también el conjunto de los números naturales 1, denotado de la siguiente manera:

\[\begin{equation} N=\{1,2,3,...,\infty\} \end{equation}\]

Ahora, generalmente en el mundo real solemos utilizar frases como pertenece a o es igual a, las cuales pueden ser traducidas a un lenguaje más formal matemáticamnte hablando (una buena forma de simplificarnos la vida y ahorrar tiempo al escribir). La siguiente tabla incluye la simbología usada en teoría de conjuntos y su significado:

Simbolo Significado Simbolo Significado
\(\{\}\) Conjunto \(\geq\) Mayor o igual que
\(\in\) Pertenece al conjunto \(\leq\) Menor o igual que
\(\notin\) No pertenece al conjunto \(\cap\) Interseccion de conjuntos
| Tal que \(\cup\) Union de conjuntos
\(n(X)\) Cardinalidad del conjunto X \(X'\) Complemento del conjunto X
\(U\) Conjunto universo = Igualdad
\(\varnothing\) Conjunto vacío \(\neq\) Diferente de (no es igual a)
\(\subseteq\) Subconjunto de \(...\) El conjunto continua
\(\subset\) Subconjunto propio de \(\Rightarrow\) Entonces
\(\nsubseteq\) No es subconjunto de \(\Leftrightarrow\) Si y solo si
> Mayor que ~ Es falso que
< Menor que \(\wedge\), \(\vee\) y, o

Hasta este punto te podrías estar preguntando: ¿qué importancia tienen los conjuntos si es una entrada de estadística y probabilidad? Bueno, una gran parte de la teoría de probabilidad se basa en las propiedades de los conjuntos, por lo que ellos son la base para entenderla, entender temas como el teorema de Bayes, etc. Está de más decir que gran parte de la inteligencia artificial se basa en el teorema de bayes, por lo que técnicamente estamos en la introducción de la introducción del Machine Learning.

Ahora, vamos a ver algunas propiedades de los conjuntos:

Propiedades de inclusion Otras propiedades Union Interseccion
\(X \subset X\) Identidad \(A \cup \varnothing = A\) \(A \cap X = A\)
\(\varnothing \subset X\) Idempotencia \(A \cup A = A\) \(A \cap A = A\)
\(X \subset Y \Rightarrow Y \nsubseteq X\); \(\Leftrightarrow\) \(X=Y\) Conmutatividad \(A \cup B = B \cup A\) \(A \cap B = B \cap A\)
\(X \subset Y\) y \(B \subset \Delta\) \(\Rightarrow\) \(A \subset \Delta\) Asociatividad \((A \cup B) \cup \Delta = A \cup (B \cup \Delta)\) \((A \cap B) \cap \Delta = A \cap (B \cap \Delta)\)
Distributividad \((A \cup B) \cap \Delta = (A \cap \Delta ) \cup (B \cap \Delta)\) \((A \cap B) \cup \Delta = (A \cup \Delta ) \cap (B \cup \Delta)\)
Absorcion \(A \cup (A \cap B) = A\) \(A \cap (A \cup B) = A\)
Complementaridad \(A \cup A^{\chi}=X\) \(A \cap A^{\chi}=\varnothing\)

A partir de éstas propiedades podemos hacer ejercicios con conjuntos y representarlos en un diagrama de Venn, el cual básicamente nos muestra el punto donde se relacionan dos subconjuntos que se encuentren en el conjunto universo. Para nuestra fortuna tenemos forma de hacer ésto en R con el paquete eulerr. Vamos a suponer el siguiente ejemplo para realizar el ejercicio: Supongamos que tenemos 3 grupos numéricos: \(A,B\) y \(C\). Cada grupo tiene 50 números y sabemos que cada grupo se relaciona entre si por 10 elemenos. Si quisieramos graficarlo entonces lo podríamos hacer de la siguiente manera:

# Cargamos el paquete
library(eulerr)

# Creamos un vector que incluya a cada conjunto y subsecuentemente las cantidades de 
# union que tienen los conjuntos entre si
diagrama <- c(A=50,
          B=50,
          C=50,
          "A&B"=10,
          "B&C"=10,
          "A&C"=10)

# Creamos un objeto con la función "euler" para poder graficarlo
venn <- euler(diagrama)

# Creamos un diagrama de Venn sencillo
plot(venn, main = "Ejemplo de un diagrama de Venn")

Ahora, imaginemos que los conjuntos \(A\) y \(B\) se relacionan por 20 unidades en lugar de 10, mientras que \(B\) y \(C\) solo lo hacen por 5. En ese caso obtendríamos el siguiente diagrama de Venn:

diagrama <- c(A=50,
          B=50,
          C=50,
          "A&B"=20,
          "B&C"=5,
          "A&C"=10)

venn <- euler(diagrama)

# Creamos un diagrama de Venn sencillo
plot(venn, main = "Ejemplo de un diagrama de Venn")

Por ahora no vamos a ver ejercicios para estimar intersecciones de conjuntos, basta con saber la lógica de ello para poder pasar a temas de probabilidad más adelante.

Repasando conceptos de estadística descriptiva

La rama de la estadística descriptiva se centra principalmente en conjuntos de técnicas que nos ayuden a mostrar, analizar y resumir datos. Para ello siempre utilizaremos una base de datos que nos recopile información sobre algún tópico en específico. Entre los principales tipos de bases de datos que tenemos a las series simples, las series de frecuencias y las series agrupadas. Vamos a definir a cada una:

[1] Series simples: Esto es básicamente una tabla con los datos recolectados (y en ocasiones ordenados por fecha, magnitud, etc). Es la forma más simple de una serie de datos.

[2] Serie de frecuencias: Este tipo de series se subdividen a su vez en otras más:

[a] Series de frecuencias absolutas: Nos dan el número de veces que se repite un dato.

[b] Frecuencias relativas: Nos dan un cociente entre la frecuencia absoluta y el tamaño de la muestra, es decir:

\[\begin{equation} (f_i) \rightarrow \frac{n_i}{N}, \frac{n_i}{\sum_i n_i} \end{equation}\]

[c] Frecuencia absoluta acumulada: Total de frecuencias absolutas para todos los eventos iguales o anteriores \((N_i)\).

[d] Frecuencia Relativa acumulada: Cociente entre la frecuencia absoluta y el total de la muestra, es decir:

\[\begin{equation} (f_i) \rightarrow \frac{N_i}{N} \end{equation}\]

[3] Serie por intervalos (datos agrupados): Esta tabla agrupa los datos que tenemos cuando la cantidad es muy grande, por ejemplo: si tuviésemos una base con más de 50 observaciones en este caso podríamos agrupar los datos por valores del 1 al 10, del 20 al 30 y de 30 en adelante. Esto se hace con el objetivo de no tener una base con demasiados datos (aunque esto no se suele hacer en temas de econometría).

A partir de las tablas de datos que nosotros tenemos podemos calcular diferentes medidas estadísticas para hacer inferencia que veremos a continuación, pero hay que mencionar que las fórmulas utilizadas para cada medida difieren dependiendo del tipo de serie que tengamos, pero eso lo veremos en el siguiente punto.

Tendencia central, dispersión y asimetría

En este punto voy a hacer una tabla que resuma todas las fórmulas principales usadas para la estadística descriptiva, empezando por aquellas de tendencia central, pasando a aquellas de dispersión y, finalmente, de asimetría, a su vez divididas por tipo de serie. Poco a poco las iremos desglozando, pero por ahora estaría bien tener una tabla que resuma todo ello. Podría serte útil como forma de repaso en caso de que tengas que hacer ejercicios con alguna de éstas fórmulas y no quieras complicarte demasiado.

Tabla resumen Serie simple Serie de frecuencias serie de datos agrupados
Media aritmetica \(\bar{x}= \frac{\sum x_i}{n}\) \(\bar{x}= \frac{\sum x_i y}{\sum y}\) \(\bar{x}= \frac{\sum x_i my}{\sum y}\) ; \(x_{im}=\frac{L_i + L_s}{2}\)
Moda Sin formula Sin formula \(M_{o} = L_{i} + [(\frac{d_1}{d_1 + d_2})(\alpha_i)]\)
\(d_1\) Sin formula Sin formula \(d_1 =y_{mo}-y_{ant}\)
\(d_2\) Sin formula Sin formula \(d_2 =y_{mo}-y_{past}\)
Mediana \(M_d =\frac{\sum n+1}{2}\) o \(\frac{\sum n}{2}\) \(M_d =\frac{\sum y+1}{2}\) o \(\frac{\sum y}{2}\) \(M_d = L_i + [\frac{\frac{\sum y}{2}-y_{ac \; ant}}{y_{md}}(\alpha_{i})]\) ; Nº orden = \(\frac{\sum y + 1}{2}\)
Varianza \(S^2 =\frac{\sum (x_i - \bar{x})^2}{n}\) \(S^2 =\frac{\sum (x_{im} - \bar{x})^2 y}{\sum y}\) \(S^2 =\frac{\sum (x_{im} - \bar{x})^2 y}{\sum y}\)
Desviacion estandar \(S =\sqrt{\frac{\sum (x_i - \bar{x})^2}{n}}\) \(S =\sqrt{\frac{\sum (x_{im} - \bar{x})^2 y}{\sum y}}\) \(S =\sqrt{\frac{\sum (x_{im} - \bar{x})^2 y}{\sum y}}\)
Coeficiente de variacion \(C_v = \frac{S}{\bar{x}}*100\) \(C_v = \frac{S}{\bar{x}}*100\) \(C_v = \frac{S}{\bar{x}}*100\)
Asimetria \(M_3 = \frac{\sum (x_i - \bar{x})^3}{n}\) \(M^2 =\frac{\sum (x_{im} - \bar{x})^3 y}{\sum y}\) \(M^2 =\frac{\sum (x_{im} - \bar{x})^3 y}{\sum y}\)
Coeficiente \(A=\frac{M_3}{S^3}\) \(A=\frac{M_3}{S^3}\) \(A=\frac{M_3}{S^3}\)
Kurtosis \(M_4 = \frac{\sum (x_i - \bar{x})^4}{n}\) \(M_4 = \frac{\sum (x_i - \bar{x})^4}{n}\) \(M_4 = \frac{\sum (x_i - \bar{x})^4}{n}\)
Coeficiente \(A=\frac{M_4}{S^4}\) \(A=\frac{M_4}{S^4}\) \(A=\frac{M_4}{S^4}\)

Media aritmética

Esta es probablemente la medida estadística más conocida, ya que nos estaría diciendo cual es el valor más probable o bien, el valor más normal en una serie de datos. Existen más maneras en las que podemos definir a la media, pero una definición que me parece bastante ilustrativa es que la media es el centroide de los datos de una muestra. Imaginemos que tenemos una serie de piedras con diferentes pesos sobre una regla, por lo que si quisieramos colocar una barra de apoyo que equilibre los pesos individuales de las piedras, ésto lo haríamos en el punto de la media (Walpole Myers, 2012, p. 11).

Pasemos a hacer el cálculo en R de la media. Vamos a usar la base de datos ChickWeight del paquete datasets. Tenemos varias formas de calcular la media, vamos a ver algunas de ellas:

# Cargamos la libreria
library(datasets)

# Forma larga: media de la variable peso (weight)
sum(ChickWeight$weight)/length(ChickWeight$weight)
## [1] 121.8183
# Forma corta
mean(ChickWeight$weight)
## [1] 121.8183

Lo que hicimos en el primer caso fue simplemente aplicar la fórmula de la media. La función sum() nos da la suma de las observaciones, mientras que la función length() nos da el número de observaciones que tiene una serie de datos, por lo que al dividir estos dos valores nos devuelve la media. En el segundo caso solo usamos la función mean(), que nos devuelve la media automáticamente.

Nótese que escribimos ChickWeight$weight para referirnos a la variable peso de la base de datos usada, pero podríamos simplemente leer la base de datos con la función attach(ChickWeight) para solo tener que escribir weight dentro de las funciones, sin tener que usar el operador $, aunque esto ya depende de la forma en la que lo quiera hacer el lector.

Mediana

Cuando calculamos la media de una serie de datos ésta nos da la tendencia central de los datos, sin embargo, la tendencia se encuentra influida por valores extremos, por ejemplo: Imaginemos que tenemos una base que tiene observaciones sobre el ingreso en México, donde la mayoría gana entre 5 a 7 mil pesos, pero resulta que metemos los ingresos de un millonario como Carlos Slim. Obviamente la media se va a mover bastante por ese valor atípico, es por ello que aquí entra en juego la mediana, ya que nos da la verdadera tendencia central de los datos, sin que éstos se vean influenciados por los datos extremos que podríamos tener.

Para calcularla en R basta con utilizar la función median() de la siguiente manera:

# Mediana de una serie de datos

median(ChickWeight$weight)
## [1] 103

Ahora, en este punto podemos simplificar aún más las cosas, ya que podemos utilizar la función summary(), la cual nos va a dar tanto la media como la mediana de una serie de datos, además de otros estadísticos como los cuartiles, el valor máximo y mínimo. Lo podemos hacer de la siguiente manera:

summary(ChickWeight$weight)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    35.0    63.0   103.0   121.8   163.8   373.0

La moda

Básicamente, la moda nos dice cual es el valor que más se repite de una serie de datos. Si tuvieramos una serie de datos donde tenemos dos valores que se repiten en la misma frecuencia entonces tendríamos una serie bimodal, ya que ambos valores serían la moda (igualmente si hubiese más valores, tendríamos más modas, o sea, una serie multimodal).

Por default R no cuenta con una función para calcular la moda, pero existen varias maneras de crearla, aunque también tenemos la opción de descargar el paquete modeest, el cual si tiene la función de la moda. Veamos ambas formas de hacerlo con el mismo dataset que usamos para el ejemplo anterior. Mohammad Shadan encontró una forma interesante de hacerlo con una función en su artículo R - Mean, Median, Mode, por lo que usaremos su código como ejemplo:

# Forma larga: Función desde 0

# Creamos una tabla con las frecuencias de cada valor

freq1 <- table(ChickWeight$weight)
head(freq1)
## 
## 35 39 40 41 42 43 
##  1  8  5 20 15  4
# Creamos una función que nos devuelva un valor de la tabla "freq" que más se repita
names(freq1)[which(freq1==max(freq1))]
## [1] "41"

Para crear la función lo primero que hicimos fue crear una tabla que nos devolviera los pesos y su respectiva frecuencia, para después crear una función que nos devuelva un valor de la tabla. Para que nos devuelva éste valor le indicamos con la función which() cuál valor queremos, y dentro de ella le indicamos que queremos aquel valor de la tabla freq1 que tenga una frecuencia más alta, ésto con la función freq1==max(freq1).

Ahora, vamos a la forma sencilla:

# Cargamos el paquete para calcular la moda
library(modeest)

# Calculamos la moda
mlv(ChickWeight$weight, method = "mfv")
## [1] 41

Varianza

La varianza es una de las medidas más importantes dentro de la econometría y el análisis de datos, ya que nos sirve tanto para métodos de mínimos cuadrados como para otros análisis, siendo el principal de ellos el ANOVA, pero ¿qué es la varianza? Básicamente, la varianza es una medida de dispersión de los datos, por lo que entre más grande sea la varianza, la dispersión de los datos va a ser mayor.

Para calcular la varianza en R basta con escribir la función var(). Veamos un ejemplo con el mismo dataset:

# Varianza 

var(ChickWeight$weight)
## [1] 5051.223

Como vemos, tenemos una varianza algo alta, por lo que podemos suponer que la dispersión de los datos es bastante elevada. Hay que considerar que los valores de la varianza están elevados al cuadrado, por lo que no se encuentran en la misma unidad de medida que los datos originales.

Desviación estandar

Este estadístico nos dice la distancia que existe entre los valores observados y la media de los datos. No es tan utilzada como la varianza pero en éste caso la unidad de medida si es la misma que la de los datos, por lo que su interpretación es más sencilla.

Para calcularla en R lo podemos hacer de manera directa o partir de la varianza, veamos ambas formas:

# Forma larga
sqrt(var(ChickWeight$weight))
## [1] 71.07196
# Forma corta
sd(ChickWeight$weight)
## [1] 71.07196

Lo que nos estaría diciendo ese valor es que el peso tiende a desviarse en 71.07196 gramos del peso promedio.

Asimetría

La medida de asimetría nos indica hacia que dirección tienden los datos que estamos graficando. Si tuviesemos una asimetría negativa entonces los datos tenderían a agruparse a la derecha de la media, mientras que por el contrario, si la asimetría es positiva entonces los datos tenderán a agruparse a la izquierda de la media. Finalmente, entre más cercana a 0 sea la asimetría entonces los datos tenderán más a la media.

Para calcularla en R basta con que usemos la función skewness() del paquete modeest. Veamos un ejemplo con los mismos datos:

# Calculamos la asimetría

skewness(ChickWeight$weight)
## [1] 0.9587845

Como vemos, tenemos una asimetría positiva, lo que nos estaría indicando que los datos tenderían a agruparse a la izquierda de la media, ¿ésto es cierto? Vamos a comprobarlo haciendo rápidamente un gráfico de densidad de Kernel en ggplot2:

# Cargamos el paquete
library(ggplot2)

# Creamos un objeto que contenga el valor de la media
media <-mean(ChickWeight$weight)

# Graficamos
ggplot(ChickWeight, aes(x = weight))+
  geom_density()+
  geom_vline(aes(xintercept = media), color = "Red")+
  theme_bw()+
  theme(legend.position = "none") +
  theme(legend.title = element_blank()) +
  guides(col = guide_legend(nrow = 1, byrow = TRUE)) + 
  xlab("weight") + 
  ylab("Densidad")+ 
  theme(plot.title = element_text(size = 11, face = "bold", hjust = 0)) + 
  theme(plot.subtitle = element_text(size = 10, hjust = 0)) + 
  theme(plot.caption = element_text(size = 10, hjust = 0)) +
  theme(plot.margin = unit(c(1,1,1,1), "cm")) +
  labs(
    title = "Gráfico de densidad",
    subtitle = "Para la variable weight.",
    caption = "Fuente: Elaboración propia. \nNotas: Comparando la media con la distribución."
  )

En efecto, podemos comprobar que los datos tienden a la izquierda de la media.

Kurtosis

La Kurtosis es un indicador sobre qué tan aplanada o alta es una distribución de datos. Entre más aplanada sea la distribución tendremos más problemas para hacer inferencia estadística. Podemos clasifar los valores de la kurtosis de la siguiente manera:

[1] Leptocúrtica: Los valores están muy concentrados en la media (valor mayor a 3)

[2] Mesocúrtica: Los valores tienen una distribución perfectamente normal (valor igual a 3)

[3] Platicúrtica: Los valores se encuentran muy dispersos (valor menor a 3)

Sabiendo eso, vamos a calcular la kurtosis en r con la función kurtosis() del paquete moments():

# Cargamos el paquete
library(moments)

# Calculo de la kurtosis
kurtosis(ChickWeight$weight)
## [1] 3.348792

Dado el valor obtenido, podemos suponer que los valores tienen una concentración muy alta y, por lo tanto, podemos hacer inferencia estadística con esos datos. Podríamos comprobarlo haciendo un histograma de la siguiente manera:

# Cargamos el paquete
library(ggplot2)

# Creamos un objeto que contenga el valor de la media
media <-mean(ChickWeight$weight)

# Graficamos
ggplot(ChickWeight, aes(x = weight))+
  geom_histogram()+
  geom_vline(aes(xintercept = media), color = "Red")+
  theme_bw()+
  theme(legend.position = "none") +
  theme(legend.title = element_blank()) +
  guides(col = guide_legend(nrow = 1, byrow = TRUE)) + 
  xlab("weight") + 
  ylab("Frecuencia")+ 
  theme(plot.title = element_text(size = 11, face = "bold", hjust = 0)) + 
  theme(plot.subtitle = element_text(size = 10, hjust = 0)) + 
  theme(plot.caption = element_text(size = 10, hjust = 0)) +
  theme(plot.margin = unit(c(1,1,1,1), "cm")) +
  labs(
    title = "Histograma",
    subtitle = "Para la variable weight.",
    caption = "Fuente: Elaboración propia. \nNotas: Comparando la media con la frecuencia"
  )

Como vemos, a pesar de no tener una distribución que se aproxime a su media, la concentración de los datos si está bien definida, lo que explica por qué tenemos una kurtosis superior a 3.

Repasando conceptos de probabilidad

En este punto vamos a tocar conceptos y ejercicios que se encuentran mayormente relacionados con la teoría de conjuntos que repasamos al principio, por lo que no estaría de más que le dieras otra lectura a esa parte.

Experimento aleatorio y espacio muestral

Cuando hablamos de un experimento aleatorio estamos hablando de variables que pueden tomar un valor de manera aleatoria, es decir, donde interviene el azar y, por lo tanto, no podemos estar seguros de cual va a ser el valor siguiente que se obtendrá, solo podemos suponer una cierta probabilidad. En econometría y series de tiempo a este tipo de sucesos aleatorios se les suele denominar random walk. Dentro de las variables aleatorias, se les puede clasificar en dos principales:

[1] Aleatorias discretas: No pueden tomar ciertos valores de un conjunto.

[2] Aleatorias continuas: pueden tomar infinitos valores.

Un ejemplo clásico para entender lo que es un evento aleatorio es el lanzamiento de una moneda. Cuando lanzamos la moneda ésta solo puede adquirir dos valores posibles: cara o cruz, ¿qué probabilidad tenemos de obtener alguno de los dos lados de la moneda? En este caso tenemos dos opciones posibles, por lo que podríamos decir que la probabilidad es del 50%, pero cuando hagamos un experimento lanzando monedas de manera indefinida, por ejemplo, unas 100 veces, es posible que no obtengamos 50 caras y 50 cruces, ya que es un evento aleatorio. Vamos a replicar el experimento en la consola de R, esto lo podemos hacer de la siguiente manera:

# Creamos un vector con los resultados posibles a obtener
Moneda <- c("cara", "cruz")

# Creamos un objeto con el número de veces a repetir el experimento (se puede omitir)
repeticiones <- 100

# Creamos un objeto que nos devuelva los valores aleatorios
Experimento <- sample(Moneda, repeticiones, replace = TRUE)

# Visualizamos los resultados obtenidos
Experimento
##   [1] "cara" "cara" "cara" "cara" "cruz" "cruz" "cruz" "cara" "cara" "cara"
##  [11] "cruz" "cruz" "cara" "cruz" "cruz" "cara" "cruz" "cara" "cruz" "cara"
##  [21] "cara" "cara" "cruz" "cara" "cruz" "cara" "cruz" "cara" "cruz" "cruz"
##  [31] "cara" "cruz" "cruz" "cara" "cara" "cara" "cara" "cara" "cruz" "cruz"
##  [41] "cruz" "cara" "cruz" "cruz" "cruz" "cruz" "cruz" "cara" "cruz" "cara"
##  [51] "cara" "cara" "cara" "cruz" "cara" "cara" "cruz" "cara" "cara" "cruz"
##  [61] "cara" "cara" "cruz" "cara" "cruz" "cruz" "cara" "cara" "cruz" "cara"
##  [71] "cara" "cara" "cruz" "cruz" "cruz" "cruz" "cruz" "cruz" "cruz" "cara"
##  [81] "cara" "cara" "cruz" "cruz" "cara" "cruz" "cruz" "cara" "cruz" "cara"
##  [91] "cara" "cara" "cruz" "cruz" "cruz" "cara" "cruz" "cruz" "cruz" "cara"
# Creamos una función que nos diga la cantidad porcentual de resultados por cara de la moneda
(table(Experimento))/repeticiones
## Experimento
## cara cruz 
##  0.5  0.5

Como vemos, no obtuvimos un valor exacto de 50/50, de hecho, lo interesante de éste ejercico es que cada vez que corramos la línea de código con la función sample(), que es la que nos da los resultados aleatorios, obtendremos un resultado diferente, por lo que te invito a intentarlo las veces que quieras, para que observes como cambian los valores.

Ahora, si nosotros quisieramos graficar el experimento entonces podríamos hacerlo convirtiendo a objeto la función table(Experimento) de la siguiente manera:

# Creamos el objeto
experimento_1 <- table(Experimento)

# Gráfico del experimento
barplot(experimento_1)

Aunque también podríamos hacerlo de manera directa, sin convertir a objeto:

barplot(table(Experimento))

Lo importante aquí es notar que, de igual manera que con el resultado, cada que corramos la linea de código en la función sample() y volvamos a correr el gráfico, el resultado será diferente, ya que estamos ante una simulación de evento aleatorio. De hecho, cada vez que yo renderizo ésta entrada el resultado cambia.

Podriamos hacer lo mismo con el experimento de un dado. Como sabemos, los resultados posibles del dado son un conjunto de números del 1 al 6 (o más, si tuvieramos un dado con más caras, pero no haremos eso por el momento), por lo que ésta vez crearemos un vector numérico del 1 al 6 para después repetir todo el proceso. Ahora, ¿qué tal si lanzamos el dado unas 800 veces? Veamos qué pasa:

# Creamos un vector con los resultados posibles a obtener
Dado <- c(1,2,3,4,5,6)

# Creamos un objeto con el número de veces a repetir el experimento (se puede omitir)
repeticiones <- 800

# Creamos un objeto que nos devuelva los valores aleatorios
Experimento_dado <- sample(Dado, repeticiones, replace = TRUE)

# Visualizamos los resultados obtenidos
Experimento_dado
##   [1] 3 5 3 5 5 2 4 4 3 1 4 5 4 3 2 4 1 6 5 6 6 6 3 3 5 3 4 3 1 1 1 3 3 5 5 2 4
##  [38] 3 3 1 3 1 1 5 6 4 1 3 1 2 3 4 5 1 5 4 2 3 4 2 2 1 1 1 5 2 6 3 3 1 1 6 4 5
##  [75] 2 3 4 2 1 5 2 6 2 6 2 6 2 3 6 2 3 2 5 1 1 1 4 6 4 6 1 1 1 5 4 3 4 5 2 1 5
## [112] 2 5 2 3 2 3 1 3 4 3 3 5 6 5 1 3 1 5 3 2 5 3 5 3 3 1 4 1 1 5 4 4 5 5 4 5 5
## [149] 4 4 5 1 6 3 6 1 2 5 1 4 1 6 2 1 3 4 6 1 1 2 5 3 4 1 5 2 4 5 3 6 4 3 6 4 5
## [186] 4 6 1 1 5 4 4 6 4 4 4 3 2 2 6 4 4 3 5 6 6 6 5 1 1 4 6 5 2 3 2 5 2 2 4 6 3
## [223] 3 5 2 3 4 3 1 5 2 1 4 4 5 2 5 6 5 5 1 6 1 6 1 2 2 2 6 3 6 4 5 4 1 5 3 6 2
## [260] 3 1 1 2 4 2 3 3 5 3 3 2 3 5 3 3 1 6 3 6 4 6 5 4 3 6 6 6 6 3 3 6 4 5 1 3 3
## [297] 6 6 4 4 5 2 2 4 3 6 5 4 3 4 2 4 4 2 4 1 5 4 5 1 4 2 6 5 5 1 4 2 2 5 3 2 1
## [334] 3 2 5 6 2 2 5 1 1 3 4 1 2 5 3 5 1 6 6 4 6 3 6 2 3 5 6 5 1 4 6 5 2 6 6 5 3
## [371] 3 4 5 3 5 5 4 6 2 5 3 5 5 2 3 1 4 1 3 2 4 4 5 3 4 3 1 1 3 1 2 2 4 2 5 4 3
## [408] 1 1 1 1 1 6 1 5 1 2 3 2 6 2 1 2 1 6 1 2 2 2 4 2 3 5 3 5 3 5 2 1 3 4 6 2 1
## [445] 3 4 4 3 2 1 4 1 3 3 5 5 1 1 5 1 3 1 2 5 3 3 4 4 3 6 2 1 5 6 4 1 4 6 6 6 2
## [482] 5 4 5 6 4 5 6 3 6 6 5 3 6 2 6 4 4 1 6 1 2 4 6 2 3 6 3 4 4 6 4 4 3 5 5 4 1
## [519] 1 5 5 6 4 1 4 4 1 4 1 3 1 5 1 5 3 2 5 3 6 1 4 5 2 2 1 5 4 3 1 4 6 4 2 1 1
## [556] 2 2 6 1 6 2 5 1 3 6 1 3 5 1 1 5 3 4 4 5 4 4 3 6 1 5 4 1 5 5 3 6 6 4 6 3 3
## [593] 6 1 4 6 6 3 6 6 5 1 2 1 5 2 3 4 5 5 1 6 3 3 6 5 2 3 3 6 6 1 1 1 1 6 3 4 6
## [630] 2 1 4 4 5 1 2 1 2 4 1 2 1 6 1 3 3 6 4 1 2 6 1 2 2 4 1 5 3 4 5 1 6 6 1 6 5
## [667] 3 6 2 6 5 5 1 4 2 3 5 1 5 4 1 6 1 1 6 4 5 3 4 2 6 4 4 3 3 1 1 1 3 1 3 2 2
## [704] 5 3 1 2 4 3 2 5 1 6 2 2 6 2 2 2 5 4 3 2 2 3 6 1 3 1 2 1 4 3 5 6 2 2 3 4 2
## [741] 2 6 4 1 1 6 5 3 5 1 4 5 6 4 2 5 3 4 6 1 6 6 6 6 5 2 4 4 5 4 4 4 1 6 6 6 1
## [778] 2 6 3 6 6 1 2 5 4 3 6 4 3 4 2 2 1 6 3 4 4 5 3
# Creamos una función que nos diga la cantidad porcentual de resultados por cara de la moneda
(table(Experimento_dado))/repeticiones
## Experimento_dado
##       1       2       3       4       5       6 
## 0.18500 0.15000 0.17250 0.17125 0.16250 0.15875
# Graficamos los resultados
barplot(table(Experimento_dado))

Permutaciones y combinaciones

Cuando hablamos de permutaciones estamos hablando de todos los arreglos posibles que se pueden hacer a un conjunto, por ejemplo: ¿de cuántas maneras diferentes se pueden ordenar las piezas de una colección de Legos?, ¿de cuántas maneras se puede ordenar una baraja de cartas? Esto se puede calcular con permutaciones. La cantidad de combinaciones que puede tener un conjunto depende enteramente de su tamaño, siendo su factorial el número de combinaciones posibles, es decir:

\[\begin{equation} C = n! \end{equation}\] Donde \(C\) son las combinacioens posibles y \(n\) es el número de elementos del conjunto.

Ahora, volvamos al ejemplo de las cartas. Supongamos que tomamos 3 cartas de una baraja de 52, ¿cuántas formas tenemos de ordenarlas en la baraja? Para ello utilizaremos una cierta fórmula, la cual es:

\[\begin{equation} P^N_n = n! \begin{pmatrix} N \\ n \end{pmatrix} = \frac{N!}{(N-n)!} \end{equation}\]

Para nuestra fortuna (como ya es costumbre) tenemos forma de calcular permutaciones en R. Para hacerlo podemos utilizar el paquete gtools. Calculemos el ejemplo de las cartas:

# Cargamos el paquete
library(gtools)

# Creamos un objeto para el total de cartas
Cartas_t <- 52


# Creamos un objeto para las cartas tomadas
Cartas_mues <- 3

# Creamos un vector que incluya las 52 cartas
Baraja <- c(1:Cartas_t)

# Calculamos las permutaciones
Permutaciones <- permutations(Cartas_t, Cartas_mues, Baraja)

# Miramos los datos finales para ver el número total de permutaciones
tail(Permutaciones)
##           [,1] [,2] [,3]
## [132595,]   52   51   45
## [132596,]   52   51   46
## [132597,]   52   51   47
## [132598,]   52   51   48
## [132599,]   52   51   49
## [132600,]   52   51   50
# O bien, le pedimos a R que nos diga el número de renglones
nrow(Permutaciones)
## [1] 132600

Como podemos observar, el número total de permutaciones posibles es de 132,600.

Hay que considerar que en las permutaciones nos importa el órden de las cosas, pero en las combinaciones no, siendo esa su diferencia.

Para calcular combinaciones dado que tomamos elementos del conjunto, la fórmula utilizada es la siguiente:

\[\begin{equation} P^N_n = n! \begin{pmatrix} N \\ n \end{pmatrix} = \frac{N!}{n!(N-n)!} \end{equation}\]

Si en lugar de usar permutaciones para el ejemplo de las cartas utilizaramos combinaciones, tendríamos lo siguiente:

# Calculamos las combinaciones con el mismo objeto
Combinaciones <- combinations(Cartas_t, Cartas_mues, Baraja)

# Miramos los datos finales para ver el número total de combinaciones
tail(Combinaciones)
##          [,1] [,2] [,3]
## [22095,]   48   50   52
## [22096,]   48   51   52
## [22097,]   49   50   51
## [22098,]   49   50   52
## [22099,]   49   51   52
## [22100,]   50   51   52
# O bien, le pedimos a R que nos diga el número de renglones
nrow(Combinaciones)
## [1] 22100

En este caso tenemos que el número total de combinaciones es igual a 22,100.

Por el momento vamos a parar aquí, ya que sería algo pesado leer ésta entrada por completo si siguieramos con probabilidad condicional, teorema de bayes, etc. La siguiente parte estará disponible muy pronto.

¡Muchas gracias por leerme! Sería de gran ayuda que compartieras ésta entrada con quien creas que pueda serle útil. Me ayudaría mucho que ésto llegue a más gente.

Referencias

[1] Conamat. (s.f.). Matemáticas simplificadas. Pearson educación.

[2] Lipschutz, S., & Ceballos, J. M. C. (1970). Teoría y problemas de teoría de conjuntos y temas afines (No. 511.322 511.322 L5T4 L5T47). McGraw-Hill.

[3] Hernández, F. (1998). Teoría de conjuntos. México: Aportaciones Matemáticas, (13).

[4] Yamane, T., & Arzayús, N. C. (1974). Estadística (No. QA276. 2. Y35 1973.). Harla.

[5] Urias, H. Q., & Salvador, B. R. P. (2014). Estadística para ingeniería y ciencias. Grupo Editorial Patria.

[6] Walpole, R. E., Myers, R. H., & Myers, S. L. (1999). Probabilidad y estadística para ingenieros. Pearson educación.

[7] Shadan, M. (2017). R - Mean, Median, Mode. 19 de marzo de 2021, de Rpubs Sitio web: https://rpubs.com/mohammadshadan/meanmedianmode


  1. Los números naturales son aquellos que se utilizan para contar los elementos de un conjunto. Existe un debate sobre si el cero pertenece o no a los naturales, pero dentro de la teoría de conjuntos generalmente se considera que si.

R-Conomics
Todos los derechos reservados