Las variables categóricas suelen representarse en R usando factor
s y tienen una representación especial en la librería DataFrames de Julia mediante el tipo de datos PooledDataArray
(cada nivel de la variable categórica pertenece a un pool o grupo de niveles posibles).
En algunos análisis estadísticos, las variables aleatorias pueden clasificarse como variables de variable respuesta y variable explicativa. La variable respuesta, es a veces llamada dependiente suele representarse en el eje Y. La variable explicativa o independiente, es la que suele controlarse en el diseño experimental y suele representarse en el eje X.
Tanto la formula
de R como la Formula
de la biblioteca DataFrames de Julia ubican las variables respuesta a la izquierda y las variables explicativas a la derecha:
Y ~ X
La función de densidad de probabilidad (PDF por Probability Density Function) o de masa de probabilidad (PMF por Probability Mass Function) describen la probabilidad relativa de una variable a tomar un cierto valor. En general, el término masa (PMF) se utiliza para variable categóricas o discretas mientras el de densidad (PDF) se usa con variables continuas.
Sólo en el caso de variables discretas, la función de masa de probabilidad para la variable $X$ ($PMF_X$) evaluada en un punto $x$ retorna la probabilidad de que la variable $X$ sea igual a $x$:
Las funciones de masa/densidad de probabilidad son no-negativas a lo largo de todo su dominio. En el caso de las funciones de masa de probabilidad, la imagen sólo puede tomar valores en el intervalo cerrado $[0,1]$. La suma de las probabilidades (imagen de la $PMF$) para todos los posibles valores una variable discreta $X$ debe ser igual a 1, es decir, al menos uno de sus valores tiene que ocurrir.
Evaluar la función de densidad de probabilidad de una variable continua $X$, $PDF_X$, en un punto $x$ no retorna la probabilidad de ese punto. Sólo obtenemos probabilidades a partir de una función de densidad de probabilidad integrandola en un determinado intervalo (la probabilidad es el área bajo la PDF). No existe la probabilidad de un punto para variables continuas, así como no existe el área bajo un punto.
La integral de una PDF sobre todo su dominio, es decir el área total bajo la PDF debe ser 1.
La función de distribución acumulada (CDF por Cumulative Distribution Function, a veces llamada CMF por Cumulative Mass Function en el caso de variables categóricas) retorna la probabilidad de que una variable aleatoria no nominal sea menor a un determinado valor.
En el caso de variable categóricas, esto se logra sumando los valores de las probabilidades PMF para todos los valores inferiores o iguales a $x$:
Para variables continuas, es la integral desde menos infinito (o el menor valor del dominio) hasta $x$:
La imagen de una CDF es el intervalo $[0,1]$, siendo ésta función monótona creciente.
Es fácil obtener la probabilidad de que un valor de $X$ caiga dentro de un cierto intervalo $(a,b]$ usando su CDF:
$$P(a < X \leqslant b) = CDF_X(b) - CDF_X(a)$$
Las CDF suelen ser útiles en los tests de hipótesis, donde es necesario calcular la probabilidad de observar un valor mayor o menor a un cierto valor $x$. En el caso de querer calcular la probabilidad de observar un valor mayor a $x$ suele usarse la CCDF (Complementary Cumulative Distribution Function):
Una variable aleatoria es una función que puede tomar una serie de valores medibles u observables, estando la frecuencia de aparición de esos valores asociados a una distribución de probabilidad. Estas variables resultan de experimentos aleatorios, en los cuales dada las mismas condiciones iniciales no se obtienen los mismos resultados en cada experiencia o prueba.
Los resultados de una variable aleatoria pueden medirse en diferentes escalas de medida dependiendo de su naturaleza o de la necesidad. Existen diferentes escalas de medidas, siendo la primera la propuesta por el psicólogo Stanley Smith Stevens:
Nivel | Variable | Precisión | Descripción | Operaciones |
---|---|---|---|---|
Nominal | Cualitativas | Menor | No hay orden | == != |
Ordinal | Cualitativas, Cuantitativas | Intermedia | Hay orden pero no hay distancias | ... < > <= >= |
Intervalar | Cuantitativas | Intermedia | El cero/la escala es arbitrario/a | ... + - |
Racional | Cuantitativas | Mayor | El cero/la escala no es arbitrario/a (ej. MKS) | ... / // ... (todas) |
La distribución Normal, también llamada de Gauss o Gaussiana. Su función de densidad de probabilidad es la campana de Gauss que es simétrica alrededor de un parámetro μ.
La distribución normal posee dos parámetros de forma, el promedio μ y la desviación estándar σ (varianza σ²). Una distribución normal con parametros μ=0
y σ=1
se conoce como normal estándar $\mathcal{N}(0,1)$
In [1]:
using Distributions
In [2]:
?Distributions.Normal
Out[2]:
In [3]:
N = Normal(0,1)
Out[3]:
In [7]:
using Plots
pyplot(reuse=true, size=(600,300))
plot(
plot(x -> pdf(N, x), -6, 6, label="PDF"),
plot(x -> cdf(N, x), -6, 6, label="CDF")
)
Out[7]:
Las distribuciones que poseen parámetros de forma, como la distribución Normal, se denominan distribuciones paramétricas. Estás definen una familia de funciones de densidad/masa de probabilidad, dependiendo de los parámetros que tomen.
In [11]:
animación = Animation()
@animate for μ in -2:0.1:2 # μ ∈ R
PDF = plot(x -> pdf(Normal(μ,1), x), -6, 6, label=μ)
CDF = plot(x -> cdf(Normal(μ,1), x), -6, 6, label=μ)
vline!(PDF, [μ]); vline!(CDF, [μ])
plot(PDF, CDF)
frame(animación)
end
gif(animación, "Normal_mu.gif", fps=5)
Out[11]:
In [12]:
animación = Animation()
@animate for σ in 0.5:0.1:2 # σ > 0
PDF = plot(x -> pdf(Normal(0,σ), x), -6, 6, ylim=(0,1), label=σ)
CDF = plot(x -> cdf(Normal(0,σ), x), -6, 6, ylim=(0,1), label=σ)
vline!(PDF, [-σ, σ]); vline!(CDF, [-σ, σ])
plot(PDF, CDF)
frame(animación)
end
gif(animación, "Normal_sigma.gif", fps=5)
Out[12]:
Esta distribución es importante debido al Teorema Central del Límite, según el cual, dada una muestra de valores independientes e idénticamente distribuidos de tamaño $n$ de una distribución con media poblacional $\mu$ y desviación estándar $\sigma$, la distribución de la media muestral $\overline{x_{n}}$ converge a una distribución
$$\overline{x_{n}} \sim \mathcal{N}(\mu,\frac{\sigma}{\sqrt{n}})$$
cuando $n \rightarrow \infty$.
Debido a la ley de los grandes números, la media o promedio de la muestra se acercara a la media poblacional (valor esperado) a medida que el valor de $n$ aumenta. La desviación estándar de la distribución media muestral $\frac{\sigma}{\sqrt{n}}$ se denomina error estadístico.
In [13]:
?Distributions.Exponential
Out[13]:
In [14]:
distribución = Exponential(2)
Out[14]:
In [16]:
plot(
plot(x -> pdf(distribución, x), 0, 10, label="PDF"),
plot(x -> cdf(distribución, x), 0, 10, label="CDF")
)
Out[16]:
In [17]:
mean(distribución)
Out[17]:
In [18]:
std(distribución)
Out[18]:
In [26]:
animación = Animation()
@animate for n in 5:5:100
muestra = rand(distribución, n)
histograma_muestra = histogram(muestra, legend=false, bins=10)
estimada_muestra = fit(Exponential, muestra)
PDF_población = plot(x -> pdf(estimada_muestra,x), 0, 6, labels="Estimada", ylim=(0,0.5))
plot!(PDF_población, x -> pdf(distribución,x), 0, 6, labels="Limite")
medias_muestrales = Float64[mean(rand(distribución, n)) for i in 1:100]
histograma_media = histogram(medias_muestrales, legend=false, bins=10)
estimada_media = fit(Normal, medias_muestrales)
PDF_media = plot(x -> pdf(estimada_media,x), 0, 6, labels="Estimada", ylim=(0,2.5))
plot!(PDF_media, x -> pdf(Normal(2,2/sqrt(n)),x), 0, 6, labels="Limite")
plot(histograma_muestra, histograma_media,
PDF_población, PDF_media, grid=false,
xlim=(0,6), yticks=nothing, layout=grid(2,2), title="n = $n")
frame(animación)
end
gif(animación, "TCL.gif", fps=1)
Out[26]:
La distribución T (de Student) con $n-1$ grados de libertad es la distribución que sigue la media de una muestra de tamaño $n$ cuando se le sustrae la media poblacional y se divide al valor restante por la desviación estándar de la muestra sobre $\sqrt{n}$, sólo si la población de la cual se obtiene la muestra tiene una distribución normal. $$t = \frac{\overline{X_{n}}-\mu}{\frac{S_{n}}{\sqrt{n}}}$$
In [13]:
?Distributions.TDist
Out[13]:
La distribución T converge hacia una distribución normal $\mathcal{N}(0,1)$ cuando $n \rightarrow \infty$.
In [30]:
animación = Animation()
@animate for n in 2:1:50
x = -6.0:0.01:6.0
plt = plot(x, x -> pdf(Normal(0,1), x), label="Normal(0,1)", xlim=(-6,6))
plot!(plt, x, x -> pdf(TDist(n-1), x), label="n = $n")
frame(animación)
end
gif(animación, "TStudent.gif", fps=2)
Out[30]:
La distribución binomial se utiliza con variables categóricas que sólo pueden tomar dos valores (dicotómicas) los cuales suelen denominarse éxito (1
, true
) y fracaso (0
, false
) generalmente (aunque no estén relacionados con la idea de éxito). El número de éxitos productos de $n$ ensayos (ensayos de Bernoulli) sigue una distribución binomial con parámetros $n$ y $p$, donde $p$ es la probabilidad de éxitos.
La distribución Binomial(n,p) asumen que el valor de $n$ fue fijado y que $p$ es igual en cada uno de los $n$ ensayos. Es decir que ensayos idénticos (mismo $p$) e independientes dado que un ensayo no afecta a la probabilidad de otro.
In [31]:
?Distributions.Binomial
Out[31]:
In [32]:
B = Binomial(10,0.5) # ej. Tirar 10 veces una moneda, éxito = cara
Out[32]:
In [33]:
plot(
scatter(0:1:10, x -> pdf(B, x), label="PDF"),
scatter(0:1:10, x -> cdf(B, x), label="CDF")
)
Out[33]:
In [34]:
pdf(B, 8) # Probabilidad de obtener 8 veces cara (8 éxitos)
Out[34]:
In [36]:
ccdf(B, 8) # Probabilidad de obtener 8 o más veces cara (8 o más éxitos)
Out[36]:
In [37]:
using RCall
In [38]:
R"dbinom(8,10,0.5)" # PDF de una distribución Binomial con n=10 (size) y p=0.5 (prob), d es por density
Out[38]:
In [39]:
R"1 - pbinom(8,10,0.5)" # CDF de la distribución Binomial con n=10 (size) y p=0.5 (prob)
Out[39]:
La distribución multinomial es una generalización de la distribución binomial, pudiendo representar más de dos categorías. Para $n$ ensayos independientes que pueden dar un éxito solo en una de $k$ categorías, teniendo cada categoría una probabilidad de éxito fija, la distribución multinomial da la probabilidad de una combinación de números de éxitos particular para varias categorías. Los parámetros de la distribución multinomial son $n$ y la probabilidad de éxito $p_{k}$ de cada categoría $k$.
In [40]:
pₖ = [ 1/6 for i in 1:6 ] # Cada cara/categoría es equiprobable (k puede 1, 2, 3, 4, 5 o 6)
Out[40]:
In [41]:
using Base.Test
@test_approx_eq sum(pₖ) 1.0 # La suma de pₖ para todos los valores de k debe ser 1
In [42]:
distribución = Multinomial(5, pₖ) # Se tiran 5 dados (n = 5, cada dado es independiente)
Out[42]:
In [43]:
# Generala son 5 veces la misma cara.
# Hay una generala posible por cada cara.
P_generala = 6 * pdf(distribución, [5,0,0,0,0,0])
Out[43]:
Una manera de estimar la misma probabilidad, es tomar muestras randoms generadas a partir de esa distribución multinomial y contar la cantidad de veces que aparece una generala. Sería equivalente a tomar cinco dados, lanzarlos un número N
de veces y contar la cantidad de veces que obtenemos una generala y para dividir ese número por N
.
In [44]:
N = 10_000
muestras = rand(distribución, N) # Cada columna es una muestra
Out[44]:
In [45]:
generalas = sum(muestras .== 5, 1)
Out[45]:
In [46]:
mean(generalas)
Out[46]:
Notar que al final tenemos una variable aleatoria categórica dicotómica, es o no es generala. La cual se muestrea N
veces, en N
ensayos de Bernoulli idénticos e independientes. Por lo tanto, el número total de generalas obtenidas sigue una distribución Binomial(N,P_generala)
.
In [53]:
muestras_de_muestras = Float64[ sum(rand(distribución, N) .== 5) for i in 1:1000 ]
Out[53]:
In [54]:
valor_esperado = N * P_generala
histograma = histogram(muestras_de_muestras, bins=20)
vline!(histograma, [valor_esperado])
binomial = scatter(0:20, x -> pdf(Binomial(N,P_generala), x), label="Binomial", ylim=(0,0.2))
vline!(binomial, [valor_esperado])
plot(histograma, binomial, xlim=(0,20))
Out[54]:
In [55]:
?Poisson
Out[55]:
In [56]:
animación = Animation()
@animate for λ in 1:15 # λ > 0
PDF = scatter(0:30, x -> pdf(Poisson(λ), x), label=λ)
CDF = scatter(0:30, x -> cdf(Poisson(λ), x), label=λ)
vline!(PDF, [λ]); vline!(CDF, [λ])
plot(PDF, CDF)
frame(animación)
end
gif(animación, "Poisson_mu.gif", fps=1)
Out[56]: