## [1] "LC_COLLATE=es_ES.UTF-8;LC_CTYPE=es_ES.UTF-8;LC_MONETARY=es_ES.UTF-8;LC_NUMERIC=C;LC_TIME=es_ES.UTF-8"
El objetivo de esta actividad es la aplicación práctica de los conceptos explicados durante la semana 18 del máster.
Con el dataset “iris”
data(iris)
data = iris
attach(data)
data %>%
head(5) %>%
kable() %>%
kable_styling("striped", full_width = FALSE, position = "center", font_size = 16) %>%
row_spec(0, monospace = TRUE, bold = TRUE, color = "navy", background = "grey") %>%
row_spec(1:ncol(data), color = "black", background = "lightgrey")
Sepal.Length | Sepal.Width | Petal.Length | Petal.Width | Species |
---|---|---|---|---|
5.1 | 3.5 | 1.4 | 0.2 | setosa |
4.9 | 3.0 | 1.4 | 0.2 | setosa |
4.7 | 3.2 | 1.3 | 0.2 | setosa |
4.6 | 3.1 | 1.5 | 0.2 | setosa |
5.0 | 3.6 | 1.4 | 0.2 | setosa |
## [1] 150 5
Calcular y añadir explicaciones y gráficos a los cálculos:
Inspección de los datos
ggpairs(iris,
aes(color = Species),
title = "Iris") +
theme(plot.title = element_text(size = 10, face = "bold"))
Se seleccionan las variables numéricas para poder hacer la correlación correctamente, para que no se incluyan las categorías
## [1] "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width"
data_setosa = iris %>% filter(Species=="setosa") %>% select(variables_numericas_df)
head(data_setosa)
## Sepal.Length Sepal.Width Petal.Length Petal.Width
## 1 5.1 3.5 1.4 0.2
## 2 4.9 3.0 1.4 0.2
## 3 4.7 3.2 1.3 0.2
## 4 4.6 3.1 1.5 0.2
## 5 5.0 3.6 1.4 0.2
## 6 5.4 3.9 1.7 0.4
Estandarización: Dividiendo la media por la desviación con la función scale(). Esto se hace como una opción de normalización, por que cuando se hace una correlación, las variables numéricas tienen que estar normalizadas para que no tengan más peso unas que otras.
## Sepal.Length Sepal.Width Petal.Length Petal.Width
## [1,] 0.26667447 0.1899414 -0.3570112 -0.4364923
## [2,] -0.30071802 -1.1290958 -0.3570112 -0.4364923
## [3,] -0.86811050 -0.6014810 -0.9328358 -0.4364923
## [4,] -1.15180675 -0.8652884 0.2188133 -0.4364923
## [5,] -0.01702177 0.4537488 -0.3570112 -0.4364923
## [6,] 1.11776320 1.2451711 1.3704625 1.4613004
## Sepal.Length Sepal.Width Petal.Length Petal.Width
## 0 0 0 0
## Sepal.Length Sepal.Width Petal.Length Petal.Width
## 1 1 1 1
Matriz de covarianzas
Respuesta:
## Sepal.Length Sepal.Width Petal.Length Petal.Width
## Sepal.Length 1.0000000 0.7425467 0.2671758 0.2780984
## Sepal.Width 0.7425467 1.0000000 0.1777000 0.2327520
## Petal.Length 0.2671758 0.1777000 1.0000000 0.3316300
## Petal.Width 0.2780984 0.2327520 0.3316300 1.0000000
Matriz de correlaciones
Respuesta:
## Sepal.Length Sepal.Width Petal.Length Petal.Width
## Sepal.Length 1.0000000 0.7425467 0.2671758 0.2780984
## Sepal.Width 0.7425467 1.0000000 0.1777000 0.2327520
## Petal.Length 0.2671758 0.1777000 1.0000000 0.3316300
## Petal.Width 0.2780984 0.2327520 0.3316300 1.0000000
La matriz de covarianza y la matriz de correlación son iguales por que los datos se estandarizaron, la matriz de covarianza de una matriz de datos estandarizados es la matriz de correlaciones (con Pearson) cuando los datos no son normales, no se usa una correlación de Pearson, se usa Spaerman
## Call:corr.test(x = data_setosa, method = "spearman")
## Correlation matrix
## Sepal.Length Sepal.Width Petal.Length Petal.Width
## Sepal.Length 1.00 0.76 0.28 0.30
## Sepal.Width 0.76 1.00 0.18 0.29
## Petal.Length 0.28 0.18 1.00 0.27
## Petal.Width 0.30 0.29 0.27 1.00
## Sample Size
## [1] 50
## Probability values (Entries above the diagonal are adjusted for multiple tests.)
## Sepal.Length Sepal.Width Petal.Length Petal.Width
## Sepal.Length 0.00 0.00 0.17 0.17
## Sepal.Width 0.00 0.00 0.21 0.17
## Petal.Length 0.05 0.21 0.00 0.17
## Petal.Width 0.03 0.04 0.06 0.00
##
## To see confidence intervals of the correlations, print with the short=FALSE option
Un muestreo aleatorio con reposición
Respuesta:
## [1] 14 50 118 43 14 118 90 91 91 92
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 14 4.3 3.0 1.1 0.1 setosa
## 50 5.0 3.3 1.4 0.2 setosa
## 118 7.7 3.8 6.7 2.2 virginica
## 43 4.4 3.2 1.3 0.2 setosa
## 14.1 4.3 3.0 1.1 0.1 setosa
## 118.1 7.7 3.8 6.7 2.2 virginica
## 90 5.5 2.5 4.0 1.3 versicolor
## 91 5.5 2.6 4.4 1.2 versicolor
## 91.1 5.5 2.6 4.4 1.2 versicolor
## 92 6.1 3.0 4.6 1.4 versicolor
Un muestreo aleatorio sin reposición
Respuesta:
## [1] 28 80 101 111 137 133 144 132 98 103
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 28 5.2 3.5 1.5 0.2 setosa
## 80 5.7 2.6 3.5 1.0 versicolor
## 101 6.3 3.3 6.0 2.5 virginica
## 111 6.5 3.2 5.1 2.0 virginica
## 137 6.3 3.4 5.6 2.4 virginica
## 133 6.4 2.8 5.6 2.2 virginica
## 144 6.8 3.2 5.9 2.3 virginica
## 132 7.9 3.8 6.4 2.0 virginica
## 98 6.2 2.9 4.3 1.3 versicolor
## 103 7.1 3.0 5.9 2.1 virginica
Un muestreo aleatorio sistemático
Respuesta:
## [1] 68
incremento <- floor(150/10)
filas <- seq(from = primera_fila,
by = incremento,
length.out = 10)
filas
## [1] 68 83 98 113 128 143 158 173 188 203
## [1] 68 83 98 113 128 143 8 23 38 53
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 68 5.8 2.7 4.1 1.0 versicolor
## 83 5.8 2.7 3.9 1.2 versicolor
## 98 6.2 2.9 4.3 1.3 versicolor
## 113 6.8 3.0 5.5 2.1 virginica
## 128 6.1 3.0 4.9 1.8 virginica
## 143 5.8 2.7 5.1 1.9 virginica
## 8 5.0 3.4 1.5 0.2 setosa
## 23 4.6 3.6 1.0 0.2 setosa
## 38 4.9 3.6 1.4 0.1 setosa
## 53 6.9 3.1 4.9 1.5 versicolor
Generar 10.000 muestras de tamaño 40 con reposición de las longitudes del pétalo (Petal.Length). Hallar los valores medios de cada muestra. Comparar la media y la desviación típica de dichos valores medios y con los valores exactos dados por las propiedades de la media muestral
Respuesta:
Muestreo Aleatorio estratificado: muestra de 4 flores de cada estrato(Especies) con reposición
set.seed(123)
# filas_setosa = sample(1:50, 4, replace = TRUE)
# filas_setosa
# iris[filas_setosa, ]
# primera_fila <- sample(1:150, 1)
filas_setosa <- sample(which(iris$Species == "setosa"), 4, replace = TRUE)
filas_setosa
## [1] 31 15 14 3
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 31 4.8 3.1 1.6 0.2 setosa
## 15 5.8 4.0 1.2 0.2 setosa
## 14 4.3 3.0 1.1 0.1 setosa
## 3 4.7 3.2 1.3 0.2 setosa
## [1] 92 100 93 87
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 92 6.1 3.0 4.6 1.4 versicolor
## 100 5.7 2.8 4.1 1.3 versicolor
## 93 5.8 2.6 4.0 1.2 versicolor
## 87 6.7 3.1 4.7 1.5 versicolor
## [1] 114 125 126 127
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 114 5.7 2.5 5.0 2.0 virginica
## 125 6.7 3.3 5.7 2.1 virginica
## 126 7.2 3.2 6.0 1.8 virginica
## 127 6.2 2.8 4.8 1.8 virginica
muestra_estratificada_con_reposicion = rbind(iris[filas_virginica, ],
iris[filas_versicolor, ],
iris[filas_setosa, ])
muestra_estratificada_con_reposicion
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 114 5.7 2.5 5.0 2.0 virginica
## 125 6.7 3.3 5.7 2.1 virginica
## 126 7.2 3.2 6.0 1.8 virginica
## 127 6.2 2.8 4.8 1.8 virginica
## 92 6.1 3.0 4.6 1.4 versicolor
## 100 5.7 2.8 4.1 1.3 versicolor
## 93 5.8 2.6 4.0 1.2 versicolor
## 87 6.7 3.1 4.7 1.5 versicolor
## 31 4.8 3.1 1.6 0.2 setosa
## 15 5.8 4.0 1.2 0.2 setosa
## 14 4.3 3.0 1.1 0.1 setosa
## 3 4.7 3.2 1.3 0.2 setosa
Ejemplo de Media Muestral Se sacan 10.000 ,uestras aleatorias para las que se quiere saber la longitud del petalo, cada muestra es de n=40 con reposision
set.seed(123)
media_cada_muestra <- replicate(10000,
mean(sample(iris$Petal.Length,
40,
replace = TRUE)))
head(media_cada_muestra, 5) %>% kable() %>% kable_styling()
x |
---|
3.8950 |
3.7075 |
3.4325 |
3.4850 |
4.2400 |
## [1] 10000
## [1] 3.761938
## [1] 0.2726602
## [1] 3.758
## [1] 0.2791182
Representación Gráfica
hist(media_cada_muestra,
freq = F,
main = "Histograma de las medias de 10.000 muestras\n de tamaño 40 de las longitudes de los petalos",
xlab = "Valores medios de las longitudes de los petalos",
ylab = "Densidad",
ylim = c(0, 1.5))
lines(density(media_cada_muestra),
lty = 2,
lwd = 2,
col = "red")
x <- sort(iris$Petal.Length)
lines(x,
dnorm(x, mean(Petal.Length),
sd(Petal.Length)/sqrt(40)),
lty = 2,
lwd = 2,
col = "blue")
legend("topright",
legend = c("densidad", "normal"),
lty = c(2,3),
lwd = c(2,2),
col = c("red","blue"))
Dada una muestra de 60 flores, estimar la proporción de flores de la especie setosa y estimar la desviación estándar de dicha proporción
Respuesta:
Ejemplo de proporción muestral Se sacan 10.000 muestras, cada muestreo el aleatorio con N=60 con reposición -Estimar proporción de flores con especie Setosa -Estimar la desviación estándar de dicha porcionero
set.seed(123)
filas <- sample(1:150, 60, replace = TRUE)
muestra_con_resposcicion <- iris[filas, ]
head(muestra_con_resposcicion)
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 14 4.3 3.0 1.1 0.1 setosa
## 50 5.0 3.3 1.4 0.2 setosa
## 118 7.7 3.8 6.7 2.2 virginica
## 43 4.4 3.2 1.3 0.2 setosa
## 14.1 4.3 3.0 1.1 0.1 setosa
## 118.1 7.7 3.8 6.7 2.2 virginica
##
## FALSE TRUE
## 39 21
proporcion_setosa = table(muestra_con_resposcicion$Species == "setosa")[2]/length(muestra_con_resposcicion$Species)
proporcion_setosa
## TRUE
## 0.35
# Para replicarlo 10.000
proporcion_muestral = replicate(10000,
table(sample(iris$Species, 60, replace = TRUE) == "setosa")[2]/length(muestra_con_resposcicion$Species))
sd(proporcion_muestral)
## [1] 0.05997709
Representación Gráfica
hist(proporcion_muestral,
freq = F,
main = "Histograma de las proporciones muestrales de 10.000 muestras\n de tamaño 60",
xlab = "Proporciones Muestrales",
ylab = "Densidad",
ylim = c(0, 6.5))
lines(density(proporcion_muestral),
lty = 2,
lwd = 2,
col = "red")
x <- seq(from = 0,
to = 1,
by = 0.01)
lines(x,
dnorm(x,
1/3,
sqrt((1/3)*(2/3)/60)),
lty = 2,
lwd = 2,
col = "blue")
legend("topright",
legend = c("densidad", "normal"),
lty = c(2,3),
lwd = c(2,2),
col = c("red","blue"))