rnorm(n, mu, SD)
n es el número de valores a obtener. mu y SD son la media y la desviación estándar de la población.
set.seed(184)
pob.a<-rnorm(15000,162,6.2); head(pob.a)## [1] 159.2619 163.8257 166.4545 161.7908 166.3664 155.1610
max(pob.a); min(pob.a)## [1] 186.4574
## [1] 139.1992
En el siguiente paso vamos a obtener los valores de la media y desviación de la población. Y posteriormente vamos a explorar el efecto del tamaño de la muestra, de la independencia de los datos y de la aleatorización
mean(pob.a)## [1] 161.9852
sd(pob.a)## [1] 6.219865
Efecto del tamaño de la muestra
pob.o <- sort(pob.a)
muestra.2 <- sample(pob.o,2)
muestra.5 <- sample(pob.o,5)
muestra.30 <- sample(pob.o,30)
muestra.60 <- sample(pob.o,60)
muestra.100 <- sample(pob.o,100)
muestra.200 <- sample(pob.o,200)
muestra.500 <- sample(pob.o,500)
muestra.1000 <- sample(pob.o,1000)
cat('Muestra-2',mean(muestra.2),sd(muestra.2),"\n")## Muestra-2 153.7987 2.767558
cat('Muestra-5',mean(muestra.5),sd(muestra.5),"\n")## Muestra-5 160.1225 3.461798
cat('Muestra-30',mean(muestra.30),sd(muestra.30),"\n")## Muestra-30 162.3811 5.505754
cat('Muestra-60',mean(muestra.60),sd(muestra.60),"\n")## Muestra-60 161.4302 6.483784
cat('Muestra-100',mean(muestra.100),sd(muestra.100),"\n")## Muestra-100 161.3721 6.232668
cat('Muestra-200',mean(muestra.200),sd(muestra.200),"\n")## Muestra-200 162.3424 6.181383
cat('Muestra-500',mean(muestra.500),sd(muestra.500),"\n")## Muestra-500 161.975 6.048777
cat('Muestra-1000',mean(muestra.1000),sd(muestra.1000),"\n")## Muestra-1000 161.8729 6.029227
cat('Poblacion',mean(pob.a),sd(pob.a))## Poblacion 161.9852 6.219865
Efecto de no aleatorizar
muestra.2 <- pob.o[1:2]
muestra.5 <- pob.o[1:5]
muestra.30 <- pob.o[1:30]
muestra.60 <- pob.o[1:60]
muestra.100 <- pob.o[1:100]
muestra.200 <- pob.o[1:200]
muestra.500 <- pob.o[1:500]
muestra.1000 <- pob.o[1:1000]
cat('Muestra-2',mean(muestra.2),sd(muestra.2),"\n")## Muestra-2 139.5069 0.4351617
cat('Muestra-5',mean(muestra.5),sd(muestra.5),"\n")## Muestra-5 139.8552 0.4112735
cat('Muestra-30',mean(muestra.30),sd(muestra.30),"\n")## Muestra-30 141.7668 1.256246
cat('Muestra-60',mean(muestra.60),sd(muestra.60),"\n")## Muestra-60 143.2766 1.780588
cat('Muestra-100',mean(muestra.100),sd(muestra.100),"\n")## Muestra-100 144.3536 1.922868
cat('Muestra-200',mean(muestra.200),sd(muestra.200),"\n")## Muestra-200 145.8215 2.025987
cat('Muestra-500',mean(muestra.500),sd(muestra.500),"\n")## Muestra-500 148.0147 2.269202
cat('Muestra-1000',mean(muestra.1000),sd(muestra.1000),"\n")## Muestra-1000 149.8466 2.467124
cat('Poblacion',mean(pob.a),sd(pob.a))## Poblacion 161.9852 6.219865
sample (c(1:500), size=50, replace=T) #sin reemplazo## [1] 389 474 104 2 383 252 201 282 230 329 295 475 60 452 152 341 429 256 104
## [20] 401 287 200 34 13 411 121 50 52 87 223 127 335 235 137 172 318 416 470
## [39] 87 6 339 294 379 179 270 55 139 467 272 53
sample (c(1:20), size=10, replace=T) #con reemplazo## [1] 17 9 18 13 17 13 14 20 17 11
sample(c('Adultos','Adol', 'Niños'),10,replace=T,prob=c(0.6,0.2,0.2)) # Asignar probabilidades## [1] "Adol" "Adol" "Adultos" "Adultos" "Adultos" "Adultos" "Adultos"
## [8] "Adultos" "Adultos" "Adultos"
# Definir la población
poblacion <- 1:100
# Tamaño de la muestra
tam_muestra <- 20
# Definir el intervalo de muestreo
intervalo <- length(poblacion) / tam_muestra
# Elegir el primer elemento de la muestra
primer_elemento <- sample(1:intervalo, 1)
# Generar la muestra sistemática
muestra_sistematica <- poblacion[seq(primer_elemento, length(poblacion), intervalo)]
# Imprimir la muestra sistemática
print(muestra_sistematica)## [1] 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95
## [20] 100
library(dplyr)##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
set.seed(50)
iris %>%
group_by (Species) %>%
sample_n(., 3, replace = F)## # A tibble: 9 × 5
## # Groups: Species [3]
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## <dbl> <dbl> <dbl> <dbl> <fct>
## 1 4.6 3.2 1.4 0.2 setosa
## 2 5.4 3.7 1.5 0.2 setosa
## 3 4.8 3.1 1.6 0.2 setosa
## 4 5.5 2.4 3.8 1.1 versicolor
## 5 5.7 3 4.2 1.2 versicolor
## 6 6.9 3.1 4.9 1.5 versicolor
## 7 7.3 2.9 6.3 1.8 virginica
## 8 6.4 3.2 5.3 2.3 virginica
## 9 7.7 3.8 6.7 2.2 virginica
#set.seed ayuda a hacer el ejercicio reproducible, de tal manera que genera los mismos números en cualquier otro ordenador
set.seed(50)
#Crear un dataframe
pinos <- data.frame(Ciudad = rep(c('Guatemala','Zacapa','Chiquimula','Peten','Quetzaltenango'),each=10), altura = rnorm(10, mean=7, sd=1))
table(pinos$Ciudad)##
## Chiquimula Guatemala Peten Quetzaltenango Zacapa
## 10 10 10 10 10
#Ver las primeras 30 filas
head(pinos,30)## Ciudad altura
## 1 Guatemala 7.549670
## 2 Guatemala 6.158396
## 3 Guatemala 7.032998
## 4 Guatemala 7.524150
## 5 Guatemala 5.272396
## 6 Guatemala 6.722135
## 7 Guatemala 7.360828
## 8 Guatemala 6.409088
## 9 Guatemala 7.975591
## 10 Guatemala 5.554250
## 11 Zacapa 7.549670
## 12 Zacapa 6.158396
## 13 Zacapa 7.032998
## 14 Zacapa 7.524150
## 15 Zacapa 5.272396
## 16 Zacapa 6.722135
## 17 Zacapa 7.360828
## 18 Zacapa 6.409088
## 19 Zacapa 7.975591
## 20 Zacapa 5.554250
## 21 Chiquimula 7.549670
## 22 Chiquimula 6.158396
## 23 Chiquimula 7.032998
## 24 Chiquimula 7.524150
## 25 Chiquimula 5.272396
## 26 Chiquimula 6.722135
## 27 Chiquimula 7.360828
## 28 Chiquimula 6.409088
## 29 Chiquimula 7.975591
## 30 Chiquimula 5.554250
#Seleccionar 4 grupos de forma aleatoria
grupos <- sample(unique(pinos$Ciudad), size=4, replace=F)
grupos## [1] "Quetzaltenango" "Zacapa" "Chiquimula" "Peten"
#Agregar a todos los miembros de los gurpos
grupos_muestra <- pinos[pinos$Ciudad %in% grupos, ]
grupos_muestra## Ciudad altura
## 11 Zacapa 7.549670
## 12 Zacapa 6.158396
## 13 Zacapa 7.032998
## 14 Zacapa 7.524150
## 15 Zacapa 5.272396
## 16 Zacapa 6.722135
## 17 Zacapa 7.360828
## 18 Zacapa 6.409088
## 19 Zacapa 7.975591
## 20 Zacapa 5.554250
## 21 Chiquimula 7.549670
## 22 Chiquimula 6.158396
## 23 Chiquimula 7.032998
## 24 Chiquimula 7.524150
## 25 Chiquimula 5.272396
## 26 Chiquimula 6.722135
## 27 Chiquimula 7.360828
## 28 Chiquimula 6.409088
## 29 Chiquimula 7.975591
## 30 Chiquimula 5.554250
## 31 Peten 7.549670
## 32 Peten 6.158396
## 33 Peten 7.032998
## 34 Peten 7.524150
## 35 Peten 5.272396
## 36 Peten 6.722135
## 37 Peten 7.360828
## 38 Peten 6.409088
## 39 Peten 7.975591
## 40 Peten 5.554250
## 41 Quetzaltenango 7.549670
## 42 Quetzaltenango 6.158396
## 43 Quetzaltenango 7.032998
## 44 Quetzaltenango 7.524150
## 45 Quetzaltenango 5.272396
## 46 Quetzaltenango 6.722135
## 47 Quetzaltenango 7.360828
## 48 Quetzaltenango 6.409088
## 49 Quetzaltenango 7.975591
## 50 Quetzaltenango 5.554250
table(grupos_muestra$Ciudad)##
## Chiquimula Peten Quetzaltenango Zacapa
## 10 10 10 10
Primero crearemos el espacio geográfico de la zona de estudio
# Cargar el paquete sp
#library(sp)
# Definir las coordenadas UTM del polígono
#coords <- matrix(c(307000, 307000, 308000, 308000, 307000,
# 4100000, 4101000, 4101000, 4100000, 4100000), ncol = 2)
# Crear un objeto SpatialPolygons
#poligono <- SpatialPolygons(list(Polygons(list(Polygon(coords)), ID = "1")))
#plot(polygon)Ahora vamos añadir las coordenadas geográficas al plot()
#library(sf) ##requiere que la librería s2 esté instalada
#library(ggplot2)
#install.packages("sf", version = "1.0-5")
# Convertir el polígono a un objeto sf
#poligono_sf <- st_as_sf(poligono)
# Transformar las coordenadas UTM a coordenadas geográficas
#poligono_geo <- st_transform(poligono_sf, "+proj=longlat +datum=WGS84")
# Crear un objeto data.frame con las coordenadas geográficas
#coords_geo <- as.data.frame(poligono_geo$geometry[[1]]$coords)
# Añadir los nombres de las columnas
#colnames(coords_geo) <- c("lon", "lat")
# Visualizar el polígono y las coordenadas geográficas
#ggplot(coords_geo, aes(x = lon, y = lat)) +
# geom_polygon(data = coords_geo, fill = "transparent", color = "red") +
# geom_text(aes(label = paste("(", round(lon, 2), ",", round(lat, 2), ")", sep = "")), size = 3)Para está sección utilizaremos la base de datos Pima.tr que se encuentra en la librería MASS
npreg
number of pregnancies.
glu
plasma glucose concentration in an oral glucose tolerance test.
bp
diastolic blood pressure (mm Hg).
skin
triceps skin fold thickness (mm).
bmi
body mass index (weight in kg/(height in m)\^2).
ped
diabetes pedigree function.
age
age in years.
type
Yes or No, for diabetic according to WHO criteria.
Fuente
Smith, J. W., Everhart, J. E., Dickson, W. C., Knowler, W. C. and Johannes, R. S. (1988) Using the ADAP learning algorithm to forecast the onset of diabetes mellitus. In Proceedings of the Symposium on Computer Applications in Medical Care (Washington, 1988), ed. R. A. Greenes, pp. 261–265. Los Alamitos, CA: IEEE Computer Society Press.
Frecuencias
library(MASS)##
## Attaching package: 'MASS'
## The following object is masked from 'package:dplyr':
##
## select
head(Pima.tr)## npreg glu bp skin bmi ped age type
## 1 5 86 68 28 30.2 0.364 24 No
## 2 7 195 70 33 25.1 0.163 55 Yes
## 3 5 77 82 41 35.8 0.156 35 No
## 4 0 165 76 43 47.9 0.259 26 No
## 5 0 107 60 25 26.4 0.133 23 No
## 6 5 97 76 27 35.6 0.378 52 Yes
names(Pima.tr)## [1] "npreg" "glu" "bp" "skin" "bmi" "ped" "age" "type"
Pima.tr## npreg glu bp skin bmi ped age type
## 1 5 86 68 28 30.2 0.364 24 No
## 2 7 195 70 33 25.1 0.163 55 Yes
## 3 5 77 82 41 35.8 0.156 35 No
## 4 0 165 76 43 47.9 0.259 26 No
## 5 0 107 60 25 26.4 0.133 23 No
## 6 5 97 76 27 35.6 0.378 52 Yes
## 7 3 83 58 31 34.3 0.336 25 No
## 8 1 193 50 16 25.9 0.655 24 No
## 9 3 142 80 15 32.4 0.200 63 No
## 10 2 128 78 37 43.3 1.224 31 Yes
## 11 0 137 40 35 43.1 2.288 33 Yes
## 12 9 154 78 30 30.9 0.164 45 No
## 13 1 189 60 23 30.1 0.398 59 Yes
## 14 12 92 62 7 27.6 0.926 44 Yes
## 15 1 86 66 52 41.3 0.917 29 No
## 16 4 99 76 15 23.2 0.223 21 No
## 17 1 109 60 8 25.4 0.947 21 No
## 18 11 143 94 33 36.6 0.254 51 Yes
## 19 1 149 68 29 29.3 0.349 42 Yes
## 20 0 139 62 17 22.1 0.207 21 No
## 21 2 99 70 16 20.4 0.235 27 No
## 22 1 100 66 29 32.0 0.444 42 No
## 23 4 83 86 19 29.3 0.317 34 No
## 24 0 101 64 17 21.0 0.252 21 No
## 25 1 87 68 34 37.6 0.401 24 No
## 26 9 164 84 21 30.8 0.831 32 Yes
## 27 1 99 58 10 25.4 0.551 21 No
## 28 0 140 65 26 42.6 0.431 24 Yes
## 29 5 108 72 43 36.1 0.263 33 No
## 30 2 110 74 29 32.4 0.698 27 No
## 31 1 79 60 42 43.5 0.678 23 No
## 32 3 148 66 25 32.5 0.256 22 No
## 33 0 121 66 30 34.3 0.203 33 Yes
## 34 3 158 64 13 31.2 0.295 24 No
## 35 2 105 80 45 33.7 0.711 29 Yes
## 36 13 145 82 19 22.2 0.245 57 No
## 37 1 79 80 25 25.4 0.583 22 No
## 38 1 71 48 18 20.4 0.323 22 No
## 39 0 102 86 17 29.3 0.695 27 No
## 40 0 119 66 27 38.8 0.259 22 No
## 41 8 176 90 34 33.7 0.467 58 Yes
## 42 1 97 68 21 27.2 1.095 22 No
## 43 4 129 60 12 27.5 0.527 31 No
## 44 1 97 64 19 18.2 0.299 21 No
## 45 0 86 68 32 35.8 0.238 25 No
## 46 2 125 60 20 33.8 0.088 31 No
## 47 5 123 74 40 34.1 0.269 28 No
## 48 2 92 76 20 24.2 1.698 28 No
## 49 3 171 72 33 33.3 0.199 24 Yes
## 50 1 199 76 43 42.9 1.394 22 Yes
## 51 3 116 74 15 26.3 0.107 24 No
## 52 2 83 66 23 32.2 0.497 22 No
## 53 8 154 78 32 32.4 0.443 45 Yes
## 54 1 114 66 36 38.1 0.289 21 No
## 55 1 106 70 28 34.2 0.142 22 No
## 56 4 127 88 11 34.5 0.598 28 No
## 57 1 124 74 36 27.8 0.100 30 No
## 58 1 109 38 18 23.1 0.407 26 No
## 59 2 123 48 32 42.1 0.520 26 No
## 60 8 167 106 46 37.6 0.165 43 Yes
## 61 7 184 84 33 35.5 0.355 41 Yes
## 62 1 96 64 27 33.2 0.289 21 No
## 63 10 129 76 28 35.9 0.280 39 No
## 64 6 92 62 32 32.0 0.085 46 No
## 65 6 109 60 27 25.0 0.206 27 No
## 66 5 139 80 35 31.6 0.361 25 Yes
## 67 6 134 70 23 35.4 0.542 29 Yes
## 68 3 106 54 21 30.9 0.292 24 No
## 69 0 131 66 40 34.3 0.196 22 Yes
## 70 0 135 94 46 40.6 0.284 26 No
## 71 5 158 84 41 39.4 0.395 29 Yes
## 72 3 112 74 30 31.6 0.197 25 Yes
## 73 8 181 68 36 30.1 0.615 60 Yes
## 74 2 121 70 32 39.1 0.886 23 No
## 75 1 168 88 29 35.0 0.905 52 Yes
## 76 1 144 82 46 46.1 0.335 46 Yes
## 77 2 101 58 17 24.2 0.614 23 No
## 78 2 96 68 13 21.1 0.647 26 No
## 79 3 107 62 13 22.9 0.678 23 Yes
## 80 12 121 78 17 26.5 0.259 62 No
## 81 2 100 64 23 29.7 0.368 21 No
## 82 4 154 72 29 31.3 0.338 37 No
## 83 6 125 78 31 27.6 0.565 49 Yes
## 84 10 125 70 26 31.1 0.205 41 Yes
## 85 2 122 76 27 35.9 0.483 26 No
## 86 2 114 68 22 28.7 0.092 25 No
## 87 1 115 70 30 34.6 0.529 32 Yes
## 88 7 114 76 17 23.8 0.466 31 No
## 89 2 115 64 22 30.8 0.421 21 No
## 90 1 130 60 23 28.6 0.692 21 No
## 91 1 79 75 30 32.0 0.396 22 No
## 92 4 112 78 40 39.4 0.236 38 No
## 93 7 150 78 29 35.2 0.692 54 Yes
## 94 1 91 54 25 25.2 0.234 23 No
## 95 1 100 72 12 25.3 0.658 28 No
## 96 12 140 82 43 39.2 0.528 58 Yes
## 97 4 110 76 20 28.4 0.118 27 No
## 98 2 94 76 18 31.6 0.649 23 No
## 99 2 84 50 23 30.4 0.968 21 No
## 100 10 148 84 48 37.6 1.001 51 Yes
## 101 3 61 82 28 34.4 0.243 46 No
## 102 4 117 62 12 29.7 0.380 30 Yes
## 103 3 99 80 11 19.3 0.284 30 No
## 104 3 80 82 31 34.2 1.292 27 Yes
## 105 4 154 62 31 32.8 0.237 23 No
## 106 6 103 72 32 37.7 0.324 55 No
## 107 6 111 64 39 34.2 0.260 24 No
## 108 0 124 70 20 27.4 0.254 36 Yes
## 109 1 143 74 22 26.2 0.256 21 No
## 110 1 81 74 41 46.3 1.096 32 No
## 111 4 189 110 31 28.5 0.680 37 No
## 112 4 116 72 12 22.1 0.463 37 No
## 113 7 103 66 32 39.1 0.344 31 Yes
## 114 8 124 76 24 28.7 0.687 52 Yes
## 115 1 71 78 50 33.2 0.422 21 No
## 116 0 137 84 27 27.3 0.231 59 No
## 117 9 112 82 32 34.2 0.260 36 Yes
## 118 4 148 60 27 30.9 0.150 29 Yes
## 119 1 136 74 50 37.4 0.399 24 No
## 120 9 145 80 46 37.9 0.637 40 Yes
## 121 1 93 56 11 22.5 0.417 22 No
## 122 1 107 72 30 30.8 0.821 24 No
## 123 12 151 70 40 41.8 0.742 38 Yes
## 124 1 97 70 40 38.1 0.218 30 No
## 125 5 144 82 26 32.0 0.452 58 Yes
## 126 2 112 86 42 38.4 0.246 28 No
## 127 2 99 52 15 24.6 0.637 21 No
## 128 1 109 56 21 25.2 0.833 23 No
## 129 1 120 80 48 38.9 1.162 41 No
## 130 7 187 68 39 37.7 0.254 41 Yes
## 131 3 129 92 49 36.4 0.968 32 Yes
## 132 7 179 95 31 34.2 0.164 60 No
## 133 6 80 66 30 26.2 0.313 41 No
## 134 2 105 58 40 34.9 0.225 25 No
## 135 3 191 68 15 30.9 0.299 34 No
## 136 0 95 80 45 36.5 0.330 26 No
## 137 4 99 72 17 25.6 0.294 28 No
## 138 0 137 68 14 24.8 0.143 21 No
## 139 1 97 70 15 18.2 0.147 21 No
## 140 0 100 88 60 46.8 0.962 31 No
## 141 1 167 74 17 23.4 0.447 33 Yes
## 142 0 180 90 26 36.5 0.314 35 Yes
## 143 2 122 70 27 36.8 0.340 27 No
## 144 1 90 62 12 27.2 0.580 24 No
## 145 3 120 70 30 42.9 0.452 30 No
## 146 6 154 78 41 46.1 0.571 27 No
## 147 2 56 56 28 24.2 0.332 22 No
## 148 0 177 60 29 34.6 1.072 21 Yes
## 149 3 124 80 33 33.2 0.305 26 No
## 150 8 85 55 20 24.4 0.136 42 No
## 151 12 88 74 40 35.3 0.378 48 No
## 152 9 152 78 34 34.2 0.893 33 Yes
## 153 0 198 66 32 41.3 0.502 28 Yes
## 154 0 188 82 14 32.0 0.682 22 Yes
## 155 5 139 64 35 28.6 0.411 26 No
## 156 7 168 88 42 38.2 0.787 40 Yes
## 157 2 197 70 99 34.7 0.575 62 Yes
## 158 2 142 82 18 24.7 0.761 21 No
## 159 8 126 74 38 25.9 0.162 39 No
## 160 3 158 76 36 31.6 0.851 28 Yes
## 161 3 130 78 23 28.4 0.323 34 Yes
## 162 2 100 54 28 37.8 0.498 24 No
## 163 1 164 82 43 32.8 0.341 50 No
## 164 4 95 60 32 35.4 0.284 28 No
## 165 2 122 52 43 36.2 0.816 28 No
## 166 4 85 58 22 27.8 0.306 28 No
## 167 0 151 90 46 42.1 0.371 21 Yes
## 168 6 144 72 27 33.9 0.255 40 No
## 169 3 111 90 12 28.4 0.495 29 No
## 170 1 107 68 19 26.5 0.165 24 No
## 171 6 115 60 39 33.7 0.245 40 Yes
## 172 5 105 72 29 36.9 0.159 28 No
## 173 7 194 68 28 35.9 0.745 41 Yes
## 174 4 184 78 39 37.0 0.264 31 Yes
## 175 0 95 85 25 37.4 0.247 24 Yes
## 176 7 124 70 33 25.5 0.161 37 No
## 177 1 111 62 13 24.0 0.138 23 No
## 178 7 137 90 41 32.0 0.391 39 No
## 179 9 57 80 37 32.8 0.096 41 No
## 180 2 157 74 35 39.4 0.134 30 No
## 181 2 95 54 14 26.1 0.748 22 No
## 182 12 140 85 33 37.4 0.244 41 No
## 183 0 117 66 31 30.8 0.493 22 No
## 184 8 100 74 40 39.4 0.661 43 Yes
## 185 9 123 70 44 33.1 0.374 40 No
## 186 0 138 60 35 34.6 0.534 21 Yes
## 187 14 100 78 25 36.6 0.412 46 Yes
## 188 14 175 62 30 33.6 0.212 38 Yes
## 189 0 74 52 10 27.8 0.269 22 No
## 190 1 133 102 28 32.8 0.234 45 Yes
## 191 0 119 64 18 34.9 0.725 23 No
## 192 5 155 84 44 38.7 0.619 34 No
## 193 1 128 48 45 40.5 0.613 24 Yes
## 194 2 112 68 22 34.1 0.315 26 No
## 195 1 140 74 26 24.1 0.828 23 No
## 196 2 141 58 34 25.4 0.699 24 No
## 197 7 129 68 49 38.5 0.439 43 Yes
## 198 0 106 70 37 39.4 0.605 22 No
## 199 1 118 58 36 33.3 0.261 23 No
## 200 8 155 62 26 34.0 0.543 46 Yes
str(Pima.tr)## 'data.frame': 200 obs. of 8 variables:
## $ npreg: int 5 7 5 0 0 5 3 1 3 2 ...
## $ glu : int 86 195 77 165 107 97 83 193 142 128 ...
## $ bp : int 68 70 82 76 60 76 58 50 80 78 ...
## $ skin : int 28 33 41 43 25 27 31 16 15 37 ...
## $ bmi : num 30.2 25.1 35.8 47.9 26.4 35.6 34.3 25.9 32.4 43.3 ...
## $ ped : num 0.364 0.163 0.156 0.259 0.133 ...
## $ age : int 24 55 35 26 23 52 25 24 63 31 ...
## $ type : Factor w/ 2 levels "No","Yes": 1 2 1 1 1 2 1 1 1 2 ...
table(Pima.tr$type)##
## No Yes
## 132 68
Frecuencia relativa
La frecuencia relativa se refiere a la proporción de cada categoría.
table(Pima.tr$type)/sum(table(Pima.tr$type))##
## No Yes
## 0.66 0.34
Ejercicio
Solución 1
as.factor(Pima.tr$npreg) # convertir a variable categórica## [1] 5 7 5 0 0 5 3 1 3 2 0 9 1 12 1 4 1 11 1 0 2 1 4 0 1
## [26] 9 1 0 5 2 1 3 0 3 2 13 1 1 0 0 8 1 4 1 0 2 5 2 3 1
## [51] 3 2 8 1 1 4 1 1 2 8 7 1 10 6 6 5 6 3 0 0 5 3 8 2 1
## [76] 1 2 2 3 12 2 4 6 10 2 2 1 7 2 1 1 4 7 1 1 12 4 2 2 10
## [101] 3 4 3 3 4 6 6 0 1 1 4 4 7 8 1 0 9 4 1 9 1 1 12 1 5
## [126] 2 2 1 1 7 3 7 6 2 3 0 4 0 1 0 1 0 2 1 3 6 2 0 3 8
## [151] 12 9 0 0 5 7 2 2 8 3 3 2 1 4 2 4 0 6 3 1 6 5 7 4 0
## [176] 7 1 7 9 2 2 12 0 8 9 0 14 14 0 1 0 5 1 2 1 2 7 0 1 8
## Levels: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
table(Pima.tr$npreg) # imprimir tabla de frecuencias##
## 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
## 28 45 30 19 16 11 10 12 9 7 3 1 6 1 2
table(Pima.tr$npreg)/sum(table(Pima.tr$npreg)) # imprimir tabla de frec. relativa##
## 0 1 2 3 4 5 6 7 8 9 10 11 12
## 0.140 0.225 0.150 0.095 0.080 0.055 0.050 0.060 0.045 0.035 0.015 0.005 0.030
## 13 14
## 0.005 0.010
Solución 2
barplot(table(Pima.tr$npreg),
xlab="Número de embarazos", ylab="Frecuencia")barplot(table(Pima.tr$npreg)/sum(table(Pima.tr$npreg)),
xlab="Número de embarazos", ylab="Proporción")Solución 2 (ggplot2)
library(ggplot2)
library(dplyr)
tabla.frec <- table(Pima.tr$npreg) # imprimir tabla de frecuencias
tabla.rel <- table(Pima.tr$npreg)/sum(table(Pima.tr$npreg)) # imprimir tabla de frec. relativa
Pima.tr %>%
ggplot(aes(x=npreg)) +
geom_bar(fill = "gray") +
labs( title = "Embarazos en Pima, India",
x = "Número de embarazos",
y = "Frecuencia") +
theme_bw()Pima.tr %>%
ggplot(aes(x=npreg,y = ..prop..)) +
geom_bar(fill = "gray") +
labs( title = "Embarazos en Pima, India",
x = "Número de embarazos",
y = "Proporción") +
theme_bw()## Warning: The dot-dot notation (`..prop..`) was deprecated in ggplot2 3.4.0.
## ℹ Please use `after_stat(prop)` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
names(Pima.tr)## [1] "npreg" "glu" "bp" "skin" "bmi" "ped" "age" "type"
hist(Pima.tr$glu,
breaks=24,
col="red",
main="Prueba oral de resistencia a la glucosa",
xlab="Concentración de Glucosa en Plasma",
ylab="Frecuencia") Ajustar una curva de densidad
names(Pima.tr)## [1] "npreg" "glu" "bp" "skin" "bmi" "ped" "age" "type"
h<-hist(Pima.tr$glu,
breaks=12,
col="red",
main="Prueba oral de resistencia a la glucosa",
xlab="Concentración de Glucosa en Plasma",
ylab="Frecuencia")
xfit<-seq(min(Pima.tr$glu),max(Pima.tr$glu),length=500)
yfit<-dnorm(xfit,mean=mean(Pima.tr$glu),sd=sd(Pima.tr$glu))
yfit <- yfit*diff(h$mids[1:2])*length(Pima.tr$glu)
lines(xfit, yfit, col="blue", lwd=2)Vamos a crear una variable independiente y una variable independiente con dos distribuciones de la varianza diferentes
library(ggplot2)
vI=seq(from=5,to=50,length=20) #Variable independiente
vD.1=c(5,4,6,7,10,9,12,11,12,14,16,15,17,18,19,21,20,19,23,22) #Variable dependiente dist 1
mean(vD.1)## [1] 14
sd (vD.1)## [1] 5.90272
vD.2=c(4,10,4,12,7,18,8,15,16,21,9,32,10,15,35,18,28,20,30,18) #Variable dependiente dist 2
mean(vD.2)## [1] 16.5
sd (vD.2)## [1] 9.110434
tabla=data.frame(vI,vD.1,vD.2)
View(tabla)
ggplot(tabla,aes(x=vI,y =vD.1)) + #graficar vI vs vD.1
geom_point()+
geom_smooth()## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'
ggplot(tabla,aes(x=vI,y =vD.2)) + #graficar vI vs vD.2
geom_point()+
geom_smooth()## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'
ggplot() + #visualización de línea de ajuste y varianza
# plot vD.1
geom_point(data=tabla, aes(x=vI, y=vD.1)) +
geom_smooth(data=tabla, aes(x=vI, y=vD.1), fill="blue",
colour="darkblue", size=1) +
# plot vD.2
geom_point(data=tabla, aes(x=vI, y=vD.2)) +
geom_smooth(data=tabla, aes(x=vI, y=vD.2), fill="red",
colour="red", size=1)## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'
ggplot() +
# plot vD.1
geom_blank(data=tabla, aes(x=vI, y=vD.1)) +
geom_smooth(data=tabla, aes(x=vI, y=vD.1), fill="blue",
colour="darkblue", size=1) +
# plot vD.2
geom_blank(data=tabla, aes(x=vI, y=vD.2)) +
geom_smooth(data=tabla, aes(x=vI, y=vD.2), fill="red",
colour="red", size=1)## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'
Visualización de variable categórica (X) vs continua (Y)
gen=c('F','M','M','F','F','F','M','F','M')
alt=c(161,172,158,157,174,155,186,162,178)
tabla.1=data.frame(gen,alt)
View(tabla.1)
ggplot(tabla.1, aes(x="", y=alt, fill=gen)) + ## no nos sirve
geom_bar(stat="identity", width=1) +
coord_polar("y", start=0)ggplot(data=tabla.1, aes(x=gen, y=alt)) + ## no nos sirve
geom_bar(stat="identity")ggplot(tabla.1,aes(x=gen,y =alt)) + #graficar vI vs vD.2
geom_point()ggplot(tabla.1, aes(x=gen, y=alt)) +
geom_boxplot()y=c(1,1,2,3,3,4,6,5,4,6,7,6,8,9,9,8,9)
x1=c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17)
y2=c(9,8,9,9,8,7,6,4,5,6,4,3,3,2,1,1,0)
plot(y ~ x1, xlab='variable predictora', ylab='variable de respuesta')plot(y2 ~ x1, xlab='variable predictora', ylab='variable de respuesta')Crear modelos para cada set de datos
Podemos ajustar modelos lineales, siempre y cuando cumplan con los siguientes modelos:
-linealidad,
-independencia,
-homocedasticidad,
-normalidad
modelo1<- lm(y~x1) #la relación directa entre las dos variables
modelo2<- lm(y2~x1)
plot(y ~ x1, xlab='variable predictora', ylab='variable de respuesta')
abline(modelo1, col="red", lwd=2,lty=3)summary(modelo1)##
## Call:
## lm(formula = y ~ x1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.3529 -0.5490 0.1226 0.5000 1.6961
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.63235 0.40663 1.555 0.141
## x1 0.52451 0.03968 13.218 1.14e-09 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.8016 on 15 degrees of freedom
## Multiple R-squared: 0.9209, Adjusted R-squared: 0.9157
## F-statistic: 174.7 on 1 and 15 DF, p-value: 1.141e-09
Ecuación del modelo lineal es: y = 0.63235 + 0.52451*x
residuos <- resid(modelo1)
qqnorm(residuos)
qqline(residuos)summary(modelo1)##
## Call:
## lm(formula = y ~ x1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.3529 -0.5490 0.1226 0.5000 1.6961
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.63235 0.40663 1.555 0.141
## x1 0.52451 0.03968 13.218 1.14e-09 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.8016 on 15 degrees of freedom
## Multiple R-squared: 0.9209, Adjusted R-squared: 0.9157
## F-statistic: 174.7 on 1 and 15 DF, p-value: 1.141e-09
Histograma y gráfico de densidad de los residuos
plot(density(residuos))hist(residuos)Otras pruebas de supuestos
plot(modelo1)Tarea 1. Realizar el análisis de regresión para el siguiente conjunto de datos
x1=c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17)
y2=c(9,8,9,9,8,7,6,4,5,6,4,3,3,2,1,1,0)modelo2<- lm(y2~x1)
plot(y2 ~ x1, xlab='variable predictora', ylab='variable de respuesta')
abline(modelo2, col="red", lwd=2,lty=3)summary(modelo2)##
## Call:
## lm(formula = y2 ~ x1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.5833 -0.3333 0.0000 0.3333 1.5833
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 10.2500 0.3966 25.85 7.47e-14 ***
## x1 -0.5833 0.0387 -15.07 1.81e-10 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7817 on 15 degrees of freedom
## Multiple R-squared: 0.9381, Adjusted R-squared: 0.9339
## F-statistic: 227.2 on 1 and 15 DF, p-value: 1.813e-10
La ecuación del modelo2 es: y= 10.2500 - 0.5833*x
residuos2 <- resid(modelo2)
plot(density(residuos2))hist(residuos2)plot(modelo2)y3=c(-14,1,2,3,2,4,6,10,4,10,7,6,10,2,9,8,19)
x1=c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17)plot(y3~x1, xlab='var pred', ylab='var resp')
abline(lm(y3~x1), col='red', lwd=3, lty=5)summary(lm(y3~x1))##
## Call:
## lm(formula = y3 ~ x1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -11.5882 -1.9706 0.9412 2.5441 6.1176
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -3.3676 2.4091 -1.398 0.18247
## x1 0.9559 0.2351 4.066 0.00101 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 4.749 on 15 degrees of freedom
## Multiple R-squared: 0.5243, Adjusted R-squared: 0.4926
## F-statistic: 16.53 on 1 and 15 DF, p-value: 0.001014
Pregunta: ¿Es posible concluir los siguiente?
De acuerdo con el análisis de regresión, el nutriente aplicado no tiene efecto sobre la producción en kg de las uvas (r^2=0.4926, p=0.001).
Respuesta:
No, las interpretaciones son erroneas. Esto se debe a que no se cumple con los supuestos de linealidad y de normalidad. Se recomienda utilizar un modelo no lineal para el análisis de datos.
Pregunta: Suponiendo que los residuales tienen linealidad, ¿Qué podemos hacer para reanalizar los datos en vista que no tienen distribución normal?
modelo3<-lm(y3~x1)
plot(modelo3)residuos3<-resid(modelo3)
plot(density(residuos3))hist(residuos3)plot(modelo3$fitted.values, residuos3)Tarea. Hacer los plots de regresión con ggplot2.
Regresión cuadrática
y=c(1,5,8,8,6,10,9,11,18,17,18,19,17)
x1=c(1,2,3,4,5,6,7,8,9,10,11,12,13)
plot(y~x1)y=c(1,3,5,8,6,10,9,11,15,12,10,11,8,9,7,5,2)
x1=c(500,550,600,650,800,1000,1200,1400,1500,1600,1900,2000,2130,2414,
2715,2916,3017)
plot(y~x1)#ajustar la regresión cuadrática
#modelo <- lm(y ~ x + I(x^2), data = data)
# ver el resumen del modelo
#summary(modelo)El análisis esploratorio de datos es necesario para determinar a priori el tipo de modelo que vamos a ajustar a los datos.
En el siguiente ejemplo, vemos un modelo que tiene muy poco ajuste
modelo.l <- lm(y~x1)
plot(y~x1)
abline(modelo.l, col='red', lwd=3)summary(modelo.l)##
## Call:
## lm(formula = y ~ x1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -6.4264 -2.4576 0.5267 2.4173 7.2609
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 7.2699836 2.0247502 3.591 0.00268 **
## x1 0.0003127 0.0011346 0.276 0.78659
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 3.864 on 15 degrees of freedom
## Multiple R-squared: 0.005039, Adjusted R-squared: -0.06129
## F-statistic: 0.07597 on 1 and 15 DF, p-value: 0.7866
# Ajustar el modelo de regresión cuadrática
modelo.a <- lm(y ~ poly(x1, 2, raw = TRUE))
modelo.b <- lm(y~ x1 + I(x1^2))
summary(modelo.a)##
## Call:
## lm(formula = y ~ poly(x1, 2, raw = TRUE))
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.8001 -0.9263 -0.0900 0.7289 3.5979
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -5.010e+00 1.849e+00 -2.709 0.0169 *
## poly(x1, 2, raw = TRUE)1 1.932e-02 2.535e-03 7.620 2.40e-06 ***
## poly(x1, 2, raw = TRUE)2 -5.585e-06 7.295e-07 -7.656 2.27e-06 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.756 on 14 degrees of freedom
## Multiple R-squared: 0.8082, Adjusted R-squared: 0.7808
## F-statistic: 29.49 on 2 and 14 DF, p-value: 9.554e-06
# Graficar los datos y la curva de regresión cuadrática
plot(x1, y, main = "Curva de Regresión Cuadrática", xlab = "x", ylab = "y",
xlim=c(-10,4030), ylim=c(-10,20))
lines(x1, predict(modelo.b), col = "red", lwd = 2)
abline(h=0,col="blue") En este código, la función lm() ajusta un modelo de regresión lineal a los datos, utilizando la función poly() para especificar que queremos una curva de regresión cuadrática (con degree = 2). La función predict() se utiliza para generar los valores predichos de “y” a partir del modelo ajustado.
La función plot() se utiliza para graficar los datos originales, mientras que la función lines() se utiliza para agregar la curva de regresión cuadrática a la trama. El argumento col = “red” se utiliza para especificar que queremos que la curva se dibuje en rojo, y lwd = 2 especifica que queremos que la línea sea un poco más gruesa que el valor predeterminado.
Verificar las supuestos
Transformación de datos
Transformación de Box-Cox
https://www.r-bloggers.com/2022/10/box-cox-transformation-in-r/
library(MASS)
boxcox(modelo.a)xs<-sqrt(x1)
modelo.bsqrt <- lm(y~ xs + I(xs^2))
plot(modelo.bsqrt)El análisis de varianza (ANOVA) es una técnica estadística que se utiliza para determinar si hay diferencias significativas entre las medias de dos o más grupos. Algunos de los supuestos que se deben cumplir para realizar un análisis de varianza son los siguientes:
Normalidad: Las observaciones dentro de cada grupo deben seguir una distribución normal.
Homogeneidad de varianzas: Las varianzas de las observaciones dentro de cada grupo deben ser iguales.
Independencia: Las observaciones dentro de cada grupo deben ser independientes entre sí.
Muestreo aleatorio: Las muestras de cada grupo deben ser seleccionadas aleatoriamente.
Si estos supuestos no se cumplen, los resultados del análisis de varianza pueden ser sesgados o incorrectos. En algunos casos, se pueden aplicar transformaciones a los datos para cumplir con estos supuestos o utilizar técnicas estadísticas alternativas.
A <- rnorm(50,10,3)
B <- rnorm(50,12,2.5)
C <- rnorm(50,30,3.1)
D <- rnorm(50,17,3.5)
E <- rexp(50, rate = 1.5)
E## [1] 0.054169326 1.231889250 0.077410127 0.919161083 0.512244845 0.232621857
## [7] 0.240993763 0.649539600 0.468234993 0.462248832 0.760428422 0.436778759
## [13] 1.615131844 0.523973153 0.920513246 0.534413333 0.031004661 0.005037164
## [19] 0.569870619 0.176867763 0.290476464 0.039570164 0.521198822 2.240570923
## [25] 0.045862488 0.555105499 0.432032888 0.131686610 0.261293700 1.394512369
## [31] 0.577323146 0.663606795 0.583158263 0.233528499 0.369613560 0.417475070
## [37] 0.076745268 0.390563745 0.106841904 0.378643190 1.494763644 0.148106469
## [43] 0.159650339 0.224407903 0.388320196 1.002299288 0.157235450 0.423985305
## [49] 1.021648619 0.183754853
bd.arboles <- data.frame(A,B,C,D,E)
bd.arboles## A B C D E
## 1 11.157242 11.750745 27.97565 16.246641 0.054169326
## 2 8.044218 7.700244 25.16191 17.625173 1.231889250
## 3 8.988968 10.367495 27.26379 26.870284 0.077410127
## 4 9.307211 9.804896 27.99267 16.898189 0.919161083
## 5 10.905951 11.736304 27.05740 15.160980 0.512244845
## 6 10.975488 10.505298 33.49333 20.245752 0.232621857
## 7 11.587360 10.860297 35.35558 19.843211 0.240993763
## 8 9.688548 11.855884 29.07736 11.270992 0.649539600
## 9 12.934895 9.520312 29.24229 11.893940 0.468234993
## 10 6.040398 9.656978 27.36744 18.285051 0.462248832
## 11 11.575330 11.466368 30.35682 18.766671 0.760428422
## 12 9.684296 12.798921 32.19438 15.132749 0.436778759
## 13 12.566105 11.415583 27.14736 17.469662 1.615131844
## 14 12.169420 10.105450 33.51532 19.387466 0.523973153
## 15 8.423650 17.029550 30.13805 9.678654 0.920513246
## 16 9.438995 11.759539 34.57666 12.248422 0.534413333
## 17 10.192999 10.639170 35.04617 14.725889 0.031004661
## 18 8.130058 7.584007 32.42858 15.822042 0.005037164
## 19 11.203501 10.106410 29.77620 12.821733 0.569870619
## 20 10.648450 13.636566 25.87933 18.702677 0.176867763
## 21 4.689548 12.284380 33.35603 13.387654 0.290476464
## 22 5.373128 11.177386 32.27094 18.208974 0.039570164
## 23 14.771759 11.699784 29.06350 18.449269 0.521198822
## 24 17.812829 13.837760 28.78191 16.289914 2.240570923
## 25 5.668077 9.927985 21.80812 16.364863 0.045862488
## 26 6.868221 7.886620 29.30528 14.987691 0.555105499
## 27 15.131414 14.948895 36.05573 11.054291 0.432032888
## 28 15.143404 18.659257 28.19312 9.743439 0.131686610
## 29 3.655726 11.085554 33.28954 18.031170 0.261293700
## 30 9.771146 12.657146 32.35234 18.028025 1.394512369
## 31 3.787485 13.998445 31.82356 19.989401 0.577323146
## 32 11.409406 11.731795 28.65796 19.473717 0.663606795
## 33 11.121240 10.863558 29.69553 13.969577 0.583158263
## 34 11.475213 8.930444 34.29939 19.950885 0.233528499
## 35 12.119953 17.619820 25.93775 13.113263 0.369613560
## 36 8.377200 10.549065 27.89494 17.824128 0.417475070
## 37 12.601595 13.331131 33.72067 17.148576 0.076745268
## 38 11.308410 11.400760 33.09467 20.841871 0.390563745
## 39 15.428147 12.770329 28.26979 13.994737 0.106841904
## 40 2.778722 11.664570 30.59231 18.731890 0.378643190
## 41 13.280969 9.814206 27.09661 9.392990 1.494763644
## 42 10.874386 10.506032 35.32635 22.474389 0.148106469
## 43 8.868781 11.594000 32.45750 17.825642 0.159650339
## 44 5.624816 13.093326 29.44269 14.962080 0.224407903
## 45 6.371601 6.554343 26.05907 18.183621 0.388320196
## 46 8.615986 10.749252 31.12281 16.099180 1.002299288
## 47 12.417676 12.147855 37.02854 21.043610 0.157235450
## 48 16.622887 14.741158 28.24294 13.898816 0.423985305
## 49 3.760598 9.065471 33.66369 20.638204 1.021648619
## 50 10.411683 11.365356 28.63609 18.655728 0.183754853
library(tidyr)
bd.arboles.largo <- gather(bd.arboles)
bd.arboles.largo## key value
## 1 A 11.157242290
## 2 A 8.044218210
## 3 A 8.988967824
## 4 A 9.307210808
## 5 A 10.905951022
## 6 A 10.975488212
## 7 A 11.587359735
## 8 A 9.688547720
## 9 A 12.934894629
## 10 A 6.040397527
## 11 A 11.575329692
## 12 A 9.684296125
## 13 A 12.566104636
## 14 A 12.169420090
## 15 A 8.423649768
## 16 A 9.438995389
## 17 A 10.192999480
## 18 A 8.130057808
## 19 A 11.203501468
## 20 A 10.648450269
## 21 A 4.689548433
## 22 A 5.373127844
## 23 A 14.771758594
## 24 A 17.812828757
## 25 A 5.668076964
## 26 A 6.868220771
## 27 A 15.131414129
## 28 A 15.143404066
## 29 A 3.655725566
## 30 A 9.771146249
## 31 A 3.787485346
## 32 A 11.409405646
## 33 A 11.121240402
## 34 A 11.475212545
## 35 A 12.119953081
## 36 A 8.377199804
## 37 A 12.601594762
## 38 A 11.308410390
## 39 A 15.428146620
## 40 A 2.778721504
## 41 A 13.280969237
## 42 A 10.874386308
## 43 A 8.868781004
## 44 A 5.624815544
## 45 A 6.371601434
## 46 A 8.615986418
## 47 A 12.417675525
## 48 A 16.622887086
## 49 A 3.760597723
## 50 A 10.411682750
## 51 B 11.750745234
## 52 B 7.700243854
## 53 B 10.367494865
## 54 B 9.804895550
## 55 B 11.736303770
## 56 B 10.505298251
## 57 B 10.860296903
## 58 B 11.855884356
## 59 B 9.520312262
## 60 B 9.656977964
## 61 B 11.466367853
## 62 B 12.798920976
## 63 B 11.415583206
## 64 B 10.105449776
## 65 B 17.029550406
## 66 B 11.759538760
## 67 B 10.639169954
## 68 B 7.584006568
## 69 B 10.106410084
## 70 B 13.636565813
## 71 B 12.284380007
## 72 B 11.177385987
## 73 B 11.699784016
## 74 B 13.837760134
## 75 B 9.927984909
## 76 B 7.886620468
## 77 B 14.948895001
## 78 B 18.659257308
## 79 B 11.085553593
## 80 B 12.657146246
## 81 B 13.998444531
## 82 B 11.731795354
## 83 B 10.863557759
## 84 B 8.930444002
## 85 B 17.619819935
## 86 B 10.549065231
## 87 B 13.331130574
## 88 B 11.400759899
## 89 B 12.770329131
## 90 B 11.664570377
## 91 B 9.814205815
## 92 B 10.506032158
## 93 B 11.593999556
## 94 B 13.093326025
## 95 B 6.554343416
## 96 B 10.749251566
## 97 B 12.147854639
## 98 B 14.741158361
## 99 B 9.065471498
## 100 B 11.365356069
## 101 C 27.975645719
## 102 C 25.161910599
## 103 C 27.263790296
## 104 C 27.992672225
## 105 C 27.057400548
## 106 C 33.493334118
## 107 C 35.355579027
## 108 C 29.077357001
## 109 C 29.242289564
## 110 C 27.367435677
## 111 C 30.356818339
## 112 C 32.194375604
## 113 C 27.147360482
## 114 C 33.515316826
## 115 C 30.138051687
## 116 C 34.576655431
## 117 C 35.046168250
## 118 C 32.428581143
## 119 C 29.776195420
## 120 C 25.879329929
## 121 C 33.356027575
## 122 C 32.270939149
## 123 C 29.063496558
## 124 C 28.781906801
## 125 C 21.808120832
## 126 C 29.305279939
## 127 C 36.055731694
## 128 C 28.193115398
## 129 C 33.289542815
## 130 C 32.352337370
## 131 C 31.823563999
## 132 C 28.657956388
## 133 C 29.695526843
## 134 C 34.299393368
## 135 C 25.937751237
## 136 C 27.894939102
## 137 C 33.720670801
## 138 C 33.094668846
## 139 C 28.269785961
## 140 C 30.592309862
## 141 C 27.096605888
## 142 C 35.326352772
## 143 C 32.457498557
## 144 C 29.442690234
## 145 C 26.059068082
## 146 C 31.122813384
## 147 C 37.028538841
## 148 C 28.242941705
## 149 C 33.663694119
## 150 C 28.636089151
## 151 D 16.246641089
## 152 D 17.625173246
## 153 D 26.870283975
## 154 D 16.898188871
## 155 D 15.160980119
## 156 D 20.245751519
## 157 D 19.843210757
## 158 D 11.270991636
## 159 D 11.893940403
## 160 D 18.285051496
## 161 D 18.766671461
## 162 D 15.132749473
## 163 D 17.469662373
## 164 D 19.387465774
## 165 D 9.678654240
## 166 D 12.248421507
## 167 D 14.725888868
## 168 D 15.822042078
## 169 D 12.821733196
## 170 D 18.702677107
## 171 D 13.387653617
## 172 D 18.208973702
## 173 D 18.449269437
## 174 D 16.289913901
## 175 D 16.364863029
## 176 D 14.987691413
## 177 D 11.054291048
## 178 D 9.743439060
## 179 D 18.031170286
## 180 D 18.028024768
## 181 D 19.989401400
## 182 D 19.473717394
## 183 D 13.969576737
## 184 D 19.950884511
## 185 D 13.113263074
## 186 D 17.824127989
## 187 D 17.148575991
## 188 D 20.841871388
## 189 D 13.994736722
## 190 D 18.731889768
## 191 D 9.392990477
## 192 D 22.474389364
## 193 D 17.825641710
## 194 D 14.962080287
## 195 D 18.183620840
## 196 D 16.099180217
## 197 D 21.043610011
## 198 D 13.898815588
## 199 D 20.638204226
## 200 D 18.655727608
## 201 E 0.054169326
## 202 E 1.231889250
## 203 E 0.077410127
## 204 E 0.919161083
## 205 E 0.512244845
## 206 E 0.232621857
## 207 E 0.240993763
## 208 E 0.649539600
## 209 E 0.468234993
## 210 E 0.462248832
## 211 E 0.760428422
## 212 E 0.436778759
## 213 E 1.615131844
## 214 E 0.523973153
## 215 E 0.920513246
## 216 E 0.534413333
## 217 E 0.031004661
## 218 E 0.005037164
## 219 E 0.569870619
## 220 E 0.176867763
## 221 E 0.290476464
## 222 E 0.039570164
## 223 E 0.521198822
## 224 E 2.240570923
## 225 E 0.045862488
## 226 E 0.555105499
## 227 E 0.432032888
## 228 E 0.131686610
## 229 E 0.261293700
## 230 E 1.394512369
## 231 E 0.577323146
## 232 E 0.663606795
## 233 E 0.583158263
## 234 E 0.233528499
## 235 E 0.369613560
## 236 E 0.417475070
## 237 E 0.076745268
## 238 E 0.390563745
## 239 E 0.106841904
## 240 E 0.378643190
## 241 E 1.494763644
## 242 E 0.148106469
## 243 E 0.159650339
## 244 E 0.224407903
## 245 E 0.388320196
## 246 E 1.002299288
## 247 E 0.157235450
## 248 E 0.423985305
## 249 E 1.021648619
## 250 E 0.183754853
Rodal=bd.arboles.largo$key
DAP=bd.arboles.largo$value
library(ggplot2)
ggplot(bd.arboles.largo, aes(x=Rodal, y=DAP, fill=Rodal)) +
geom_boxplot() +
scale_fill_manual(
values = c("#E69F00", "#56B4E9", "#009E73", "#F0E442", "#F0E542")
)Realizar el análisis de varianza
modelo.aov <- aov(DAP ~ Rodal)
summary(modelo.aov)## Df Sum Sq Mean Sq F value Pr(>F)
## Rodal 4 23948 5987 727.5 <2e-16 ***
## Residuals 245 2016 8
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Verificar homogeneidad de varianzas
El test de Levene se utiliza para evaluar la igualdad de varianzas entre dos o más grupos. El valor de significancia (p-valor) obtenido a partir del test indica la probabilidad de obtener un resultado igual o más extremo que el observado, si las varianzas de los grupos son iguales en la población. Si el p-valor es menor que el nivel de significancia predefinido (por lo general 0.05), se rechaza la hipótesis nula de que las varianzas son iguales y se asume que al menos una de las varianzas es significativamente diferente del resto. Si el p-valor es mayor que el nivel de significancia, no se rechaza la hipótesis nula y se concluye que no hay evidencia suficiente para afirmar que hay diferencias significativas en las varianzas de los grupos.
library(car)## Loading required package: carData
##
## Attaching package: 'car'
## The following object is masked from 'package:dplyr':
##
## recode
#Hipotesis nula: las varianzas son iguales (homocesteidad)
#Hipotesis alternativa: las varianzas son diferentes (heterocesteidad)
# p< 0.05
# Test de Levene
leveneTest(DAP ~ Rodal)## Warning in leveneTest.default(y = y, group = group, ...): group coerced to
## factor.
## Levene's Test for Homogeneity of Variance (center = median)
## Df F value Pr(>F)
## group 4 17.268 1.71e-12 ***
## 245
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# Test de Bartlett
bartlett.test(DAP ~ Rodal)##
## Bartlett test of homogeneity of variances
##
## data: DAP by Rodal
## Bartlett's K-squared = 144.53, df = 4, p-value < 2.2e-16
Verificar normalidad
# Gráfico de qqplot
qqnorm(resid(modelo.aov))# Test de Shapiro-Wilk
#Hipotesis nula: la distribución de los residuales se asemeja a la normalidad
#Hipotesis alternativa: la distribución de los residuales se aleja de la normalidad
# p< 0.05
shapiro.test(resid(modelo.aov))##
## Shapiro-Wilk normality test
##
## data: resid(modelo.aov)
## W = 0.98085, p-value = 0.001883
Prueba de Kruskal-Wallis
El test de Kruskal-Wallis es un test no paramétrico utilizado para comparar las medianas de dos o más grupos independientes en una variable ordinal o continua. Los supuestos básicos del test de Kruskal-Wallis son los siguientes:
Independencia: las observaciones en cada grupo deben ser independientes entre sí.
Homogeneidad de varianzas: las varianzas de las variables deben ser iguales en todos los grupos.
Distribución continua: la variable dependiente debe ser continua o ordinal.
Es importante destacar que, al ser un test no paramétrico, el test de Kruskal-Wallis es robusto frente a las violaciones de algunos de estos supuestos, en especial en lo que se refiere a la homogeneidad de varianzas y la distribución de la variable. Por lo tanto, es una buena alternativa cuando no se cumplen los supuestos de normalidad o igualdad de varianzas de los test paramétricos.
# Generamos datos aleatorios
set.seed(123) # fijamos la semilla para poder reproducir los resultados
grupo1 <- rexp(30, rate = 1)
grupo2 <- rexp(30, rate = 1.5)
grupo3 <- rexp(30, rate = 2)
# Creamos un vector con los grupos y otro con los nombres
datos <- c(grupo1, grupo2, grupo3)
grupos <- rep(c("Grupo 1", "Grupo 2", "Grupo 3"), each = 30)
# Crear dataframe para hacer el plot
bd.grupos <- data.frame(grupo1,grupo2,grupo3)
bd.grupos## grupo1 grupo2 grupo3
## 1 0.84345726 1.44522650 0.51393481
## 2 0.57661027 0.33774382 0.14233423
## 3 1.32905487 0.17303854 0.78152594
## 4 0.03157736 1.73126141 0.02104415
## 5 0.05621098 0.81935049 0.04931544
## 6 0.31650122 0.52712117 0.04928466
## 7 0.31422729 0.41952005 0.14019258
## 8 0.14526680 0.83642734 0.14789348
## 9 2.72623646 0.39245643 0.48621482
## 10 0.02915345 0.75286002 0.46201361
## 11 1.00483006 0.28024320 0.82120226
## 12 0.48021473 4.80733838 0.80995638
## 13 0.28101363 0.56381464 1.26807277
## 14 0.37711783 0.15036134 0.76077481
## 15 0.18828404 0.73355921 0.19000710
## 16 0.84978613 1.49887046 0.11925648
## 17 1.56320354 0.90915620 0.23324371
## 18 0.47876042 0.38426111 0.02113573
## 19 0.59093484 1.81685057 0.15983845
## 20 4.04101171 0.87477536 0.32180546
## 21 0.84314973 0.06039423 0.28628155
## 22 0.96587121 0.20413590 0.10802775
## 23 1.48527579 0.71147538 2.24933670
## 24 1.34804449 0.20901084 0.92854528
## 25 1.16852898 0.64976010 0.34272932
## 26 1.60585234 1.25854888 0.71972631
## 27 1.49674287 0.37639240 0.86557699
## 28 1.57065255 1.71797422 0.62239165
## 29 0.03176774 0.69846383 0.73165028
## 30 0.59784969 0.68296089 0.76869699
library(tidyr)
bd.grupos.largo <- gather(bd.grupos)
bd.grupos.largo## key value
## 1 grupo1 0.84345726
## 2 grupo1 0.57661027
## 3 grupo1 1.32905487
## 4 grupo1 0.03157736
## 5 grupo1 0.05621098
## 6 grupo1 0.31650122
## 7 grupo1 0.31422729
## 8 grupo1 0.14526680
## 9 grupo1 2.72623646
## 10 grupo1 0.02915345
## 11 grupo1 1.00483006
## 12 grupo1 0.48021473
## 13 grupo1 0.28101363
## 14 grupo1 0.37711783
## 15 grupo1 0.18828404
## 16 grupo1 0.84978613
## 17 grupo1 1.56320354
## 18 grupo1 0.47876042
## 19 grupo1 0.59093484
## 20 grupo1 4.04101171
## 21 grupo1 0.84314973
## 22 grupo1 0.96587121
## 23 grupo1 1.48527579
## 24 grupo1 1.34804449
## 25 grupo1 1.16852898
## 26 grupo1 1.60585234
## 27 grupo1 1.49674287
## 28 grupo1 1.57065255
## 29 grupo1 0.03176774
## 30 grupo1 0.59784969
## 31 grupo2 1.44522650
## 32 grupo2 0.33774382
## 33 grupo2 0.17303854
## 34 grupo2 1.73126141
## 35 grupo2 0.81935049
## 36 grupo2 0.52712117
## 37 grupo2 0.41952005
## 38 grupo2 0.83642734
## 39 grupo2 0.39245643
## 40 grupo2 0.75286002
## 41 grupo2 0.28024320
## 42 grupo2 4.80733838
## 43 grupo2 0.56381464
## 44 grupo2 0.15036134
## 45 grupo2 0.73355921
## 46 grupo2 1.49887046
## 47 grupo2 0.90915620
## 48 grupo2 0.38426111
## 49 grupo2 1.81685057
## 50 grupo2 0.87477536
## 51 grupo2 0.06039423
## 52 grupo2 0.20413590
## 53 grupo2 0.71147538
## 54 grupo2 0.20901084
## 55 grupo2 0.64976010
## 56 grupo2 1.25854888
## 57 grupo2 0.37639240
## 58 grupo2 1.71797422
## 59 grupo2 0.69846383
## 60 grupo2 0.68296089
## 61 grupo3 0.51393481
## 62 grupo3 0.14233423
## 63 grupo3 0.78152594
## 64 grupo3 0.02104415
## 65 grupo3 0.04931544
## 66 grupo3 0.04928466
## 67 grupo3 0.14019258
## 68 grupo3 0.14789348
## 69 grupo3 0.48621482
## 70 grupo3 0.46201361
## 71 grupo3 0.82120226
## 72 grupo3 0.80995638
## 73 grupo3 1.26807277
## 74 grupo3 0.76077481
## 75 grupo3 0.19000710
## 76 grupo3 0.11925648
## 77 grupo3 0.23324371
## 78 grupo3 0.02113573
## 79 grupo3 0.15983845
## 80 grupo3 0.32180546
## 81 grupo3 0.28628155
## 82 grupo3 0.10802775
## 83 grupo3 2.24933670
## 84 grupo3 0.92854528
## 85 grupo3 0.34272932
## 86 grupo3 0.71972631
## 87 grupo3 0.86557699
## 88 grupo3 0.62239165
## 89 grupo3 0.73165028
## 90 grupo3 0.76869699
Grupo=bd.grupos.largo$key
Valor=bd.grupos.largo$value
#plot(bd.grupos.largo$value~bd.grupos.largo$key)
# Ejecutamos la prueba de Kruskal-Wallis
kruskal.test(datos ~ grupos)##
## Kruskal-Wallis rank sum test
##
## data: datos by grupos
## Kruskal-Wallis chi-squared = 5.9547, df = 2, p-value = 0.05093
Prueba de U de Mann-Whitney
La prueba U de Mann-Whitney es un test no paramétrico utilizado para comparar las medianas de dos grupos independientes en una variable ordinal o continua. También se conoce como prueba de Wilcoxon-Mann-Whitney. La prueba se utiliza para determinar si hay diferencias significativas entre las distribuciones de las dos poblaciones.
La prueba U de Mann-Whitney es útil cuando los supuestos de normalidad y homogeneidad de varianzas no se cumplen o cuando la variable de interés no se puede medir de manera continua.
Solamente se puede aplicar a dos grupos.
# Generamos datos aleatorios
set.seed(123) # fijamos la semilla para poder reproducir los resultados
grupo1 <- rt(30, df = 5)
grupo2 <- rt(30, df = 10)
# Creamos un vector con los grupos y otro con los nombres
datos <- c(grupo1, grupo2)
grupos <- rep(c("Grupo 1", "Grupo 2"), each = c(30, 31))## Warning in rep(c("Grupo 1", "Grupo 2"), each = c(30, 31)): first element used
## of 'each' argument
datos## [1] -0.68214370 -1.31340837 -0.12709595 -1.86800660 1.60397598 2.36720820
## [7] 0.42331049 1.82678491 -1.18402122 -0.38242817 -0.06928173 -0.27649268
## [13] -0.88164910 0.53233674 -0.11015196 -0.15159056 -4.96232396 -0.56387664
## [19] 0.94966601 2.23999866 0.65726109 -0.08554766 -0.03240744 0.49052352
## [25] -1.43496271 0.12865114 0.51611004 4.55040659 0.29293506 0.04468881
## [31] 2.44381975 -1.14849084 -0.58404408 -0.42143483 -1.01063411 0.44499869
## [37] -0.95022815 1.04861044 -0.27035599 0.92737412 0.29535800 1.52930378
## [43] 1.71054284 0.13641952 0.03109931 -0.75760717 -1.36334377 -0.18258009
## [49] 1.66812445 -0.27044891 1.51551277 -0.84449695 0.81921868 0.31417877
## [55] 1.72721425 -0.94591768 -1.03121809 0.89982458 0.22417809 1.81865302
grupos## [1] "Grupo 1" "Grupo 1" "Grupo 1" "Grupo 1" "Grupo 1" "Grupo 1" "Grupo 1"
## [8] "Grupo 1" "Grupo 1" "Grupo 1" "Grupo 1" "Grupo 1" "Grupo 1" "Grupo 1"
## [15] "Grupo 1" "Grupo 1" "Grupo 1" "Grupo 1" "Grupo 1" "Grupo 1" "Grupo 1"
## [22] "Grupo 1" "Grupo 1" "Grupo 1" "Grupo 1" "Grupo 1" "Grupo 1" "Grupo 1"
## [29] "Grupo 1" "Grupo 1" "Grupo 2" "Grupo 2" "Grupo 2" "Grupo 2" "Grupo 2"
## [36] "Grupo 2" "Grupo 2" "Grupo 2" "Grupo 2" "Grupo 2" "Grupo 2" "Grupo 2"
## [43] "Grupo 2" "Grupo 2" "Grupo 2" "Grupo 2" "Grupo 2" "Grupo 2" "Grupo 2"
## [50] "Grupo 2" "Grupo 2" "Grupo 2" "Grupo 2" "Grupo 2" "Grupo 2" "Grupo 2"
## [57] "Grupo 2" "Grupo 2" "Grupo 2" "Grupo 2"
# Ejecutamos la prueba de U de Mann-Whitney
wilcox.test(datos ~ grupos)##
## Wilcoxon rank sum exact test
##
## data: datos by grupos
## W = 425, p-value = 0.7191
## alternative hypothesis: true location shift is not equal to 0
La función rt() en R se utiliza para generar números aleatorios de la distribución t de Student con un número especificado de grados de libertad.
Prueba ANOVA (Análisis de varianza): La prueba ANOVA es una prueba paramétrica que se utiliza para comparar la media de tres o más grupos. Esta prueba asume que los datos siguen una distribución normal y que las varianzas son iguales entre los grupos. Si estas suposiciones no se cumplen, la prueba ANOVA no es adecuada y se puede usar la prueba no paramétrica Kruskal-Wallis.
Prueba Kruskal-Wallis: La prueba Kruskal-Wallis es una prueba no paramétrica que se utiliza para comparar la mediana de tres o más grupos. Esta prueba no asume una distribución normal de los datos y es útil cuando los datos tienen valores atípicos o una distribución sesgada. Sin embargo, la prueba Kruskal-Wallis asume que las varianzas son iguales entre los grupos.
Prueba U de Mann-Whitney: La prueba U de Mann-Whitney es una prueba no paramétrica que se utiliza para comparar dos grupos independientes. Esta prueba no asume una distribución normal de los datos y es útil cuando los datos tienen valores atípicos o una distribución sesgada. La prueba U de Mann-Whitney no asume que las varianzas son iguales entre los grupos.
Prueba Wilcoxon: La prueba Wilcoxon es una prueba no paramétrica que se utiliza para comparar dos grupos pareados. Esta prueba no asume una distribución normal de los datos y es útil cuando los datos tienen valores atípicos o una distribución sesgada.
Prueba de Friedman: La prueba de Friedman es una prueba no paramétrica que se utiliza para comparar tres o más grupos pareados. Esta prueba no asume una distribución normal de los datos y es útil cuando los datos tienen valores atípicos o una distribución sesgada.
Primer examen parcial
Ejercicio 1. Determine el efecto que tiene el tipo de riego y la aplicacion de nitrogeno sobre la produccion de fruta
1.1 Cómo afecta la cantidad de nitrógeno en el suelo a la producción de melón 1.2 Cómo afecta el reigo por goteo a la producción de melón
# Vector de producción en kg de fruta
produccion <- seq(50, 110, length.out = 100)
produccion## [1] 50.00000 50.60606 51.21212 51.81818 52.42424 53.03030 53.63636
## [8] 54.24242 54.84848 55.45455 56.06061 56.66667 57.27273 57.87879
## [15] 58.48485 59.09091 59.69697 60.30303 60.90909 61.51515 62.12121
## [22] 62.72727 63.33333 63.93939 64.54545 65.15152 65.75758 66.36364
## [29] 66.96970 67.57576 68.18182 68.78788 69.39394 70.00000 70.60606
## [36] 71.21212 71.81818 72.42424 73.03030 73.63636 74.24242 74.84848
## [43] 75.45455 76.06061 76.66667 77.27273 77.87879 78.48485 79.09091
## [50] 79.69697 80.30303 80.90909 81.51515 82.12121 82.72727 83.33333
## [57] 83.93939 84.54545 85.15152 85.75758 86.36364 86.96970 87.57576
## [64] 88.18182 88.78788 89.39394 90.00000 90.60606 91.21212 91.81818
## [71] 92.42424 93.03030 93.63636 94.24242 94.84848 95.45455 96.06061
## [78] 96.66667 97.27273 97.87879 98.48485 99.09091 99.69697 100.30303
## [85] 100.90909 101.51515 102.12121 102.72727 103.33333 103.93939 104.54545
## [92] 105.15152 105.75758 106.36364 106.96970 107.57576 108.18182 108.78788
## [99] 109.39394 110.00000
# Vector de ppm de nitrógeno
ppm_nitrogeno <- seq(50, 500, length.out = 100)
# Vector de riego por goteo (si/no)
riego_goteo <- rep(c("no", "si"), each = 50)
# Crear el data.frame
datos_frutales <- data.frame(produccion = produccion, ppm_nitrogeno = ppm_nitrogeno, riego_goteo = riego_goteo)
# Visualizar los primeros 6 registros del data.frame
head(datos_frutales)## produccion ppm_nitrogeno riego_goteo
## 1 50.00000 50.00000 no
## 2 50.60606 54.54545 no
## 3 51.21212 59.09091 no
## 4 51.81818 63.63636 no
## 5 52.42424 68.18182 no
## 6 53.03030 72.72727 no
Ejercicio 2. Crecimiento de pinos
En este ensayo hay 4 parcelas. En cada parcela se midieron, de 25 pinos, las variables altura, diámetro, produndidad de la materia orgánica y tipo de suelo.
2.1 Determinar si la altura y el diámetro cambian en una relación directa o inversa. 2.2 Que efecto tiene la profundidad del suelo y el tipo de suelo sobre la altura y el DAP de los pinos 2.3 Compara las variables anteriormente mencionadas entre cada parcela
# Crear vectores de altura, diámetro, profundidad del suelo, tipo de suelo y parcela
altura <- seq(10, 50, length.out = 100) # altura incrementa con el diámetro
diametro <- seq(1, 10, length.out = 100)
profundidad_suelo <- rep(c(20, 30, 40, 50), each = 25) # profundidad del suelo incrementa la altura
tipo_suelo <- rep(c("arenoso", "franco"), each = 50) # altura es significativamente mayor en suelos francos
parcela <- rep(1:4, each = 25)
# Calcular altura de los pinos como una función de diámetro, tipo de suelo y profundidad del suelo
altura_pinos <- altura + diametro * 0.2 + ifelse(tipo_suelo == "franco", 5, 0) + profundidad_suelo * 0.5
# Crear un marco de datos que registra las mediciones de los pinos
pino <- rep(1:25, times = 4)
datos_pinos <- data.frame(parcela, pino, altura = altura_pinos, diametro, profundidad_suelo, tipo_suelo)La regresión logística es un tipo de modelo estadístico utilizado para predecir la probabilidad de que una variable binaria tome un valor específico (por ejemplo, 0 o 1). En lugar de predecir un valor numérico como en la regresión lineal, la regresión logística utiliza una función logística para predecir la probabilidad de que la variable dependiente sea igual a 1.
No es recomendable utilizar un modelo lineal para predecir una variable binaria, ya que los modelos lineales no están diseñados para manejar valores discretos como 0 y 1. En lugar de eso, la regresión logística es el modelo estadístico más apropiado para modelar la probabilidad de una variable binaria, como explicamos en la respuesta anterior.
Un modelo lineal generalizado (GLM, por sus siglas en inglés) es un modelo estadístico que generaliza el modelo de regresión lineal para permitir una mayor flexibilidad en la distribución de la variable de respuesta. Los GLM son una extensión de la familia de modelos lineales y se pueden utilizar para modelar variables de respuesta continuas y discretas.
Un GLM consta de tres componentes principales:
Una función de enlace: esta función conecta la media de la variable de respuesta con el predictor lineal. Por ejemplo, la función logit se utiliza en la regresión logística para conectar la probabilidad de la variable binaria con los predictores.
Una función de distribución: esta función especifica la forma de la distribución de la variable de respuesta. Por ejemplo, la distribución binomial se utiliza en la regresión logística para modelar variables binarias.
Un predictor lineal: esta es la parte de la ecuación que involucra los predictores. En la regresión lineal, el predictor lineal es simplemente una suma ponderada de los predictores. En la regresión logística, el predictor lineal se utiliza para calcular la probabilidad de la variable binaria.
# Carga los datos iris
data(iris)
iris## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1 5.1 3.5 1.4 0.2 setosa
## 2 4.9 3.0 1.4 0.2 setosa
## 3 4.7 3.2 1.3 0.2 setosa
## 4 4.6 3.1 1.5 0.2 setosa
## 5 5.0 3.6 1.4 0.2 setosa
## 6 5.4 3.9 1.7 0.4 setosa
## 7 4.6 3.4 1.4 0.3 setosa
## 8 5.0 3.4 1.5 0.2 setosa
## 9 4.4 2.9 1.4 0.2 setosa
## 10 4.9 3.1 1.5 0.1 setosa
## 11 5.4 3.7 1.5 0.2 setosa
## 12 4.8 3.4 1.6 0.2 setosa
## 13 4.8 3.0 1.4 0.1 setosa
## 14 4.3 3.0 1.1 0.1 setosa
## 15 5.8 4.0 1.2 0.2 setosa
## 16 5.7 4.4 1.5 0.4 setosa
## 17 5.4 3.9 1.3 0.4 setosa
## 18 5.1 3.5 1.4 0.3 setosa
## 19 5.7 3.8 1.7 0.3 setosa
## 20 5.1 3.8 1.5 0.3 setosa
## 21 5.4 3.4 1.7 0.2 setosa
## 22 5.1 3.7 1.5 0.4 setosa
## 23 4.6 3.6 1.0 0.2 setosa
## 24 5.1 3.3 1.7 0.5 setosa
## 25 4.8 3.4 1.9 0.2 setosa
## 26 5.0 3.0 1.6 0.2 setosa
## 27 5.0 3.4 1.6 0.4 setosa
## 28 5.2 3.5 1.5 0.2 setosa
## 29 5.2 3.4 1.4 0.2 setosa
## 30 4.7 3.2 1.6 0.2 setosa
## 31 4.8 3.1 1.6 0.2 setosa
## 32 5.4 3.4 1.5 0.4 setosa
## 33 5.2 4.1 1.5 0.1 setosa
## 34 5.5 4.2 1.4 0.2 setosa
## 35 4.9 3.1 1.5 0.2 setosa
## 36 5.0 3.2 1.2 0.2 setosa
## 37 5.5 3.5 1.3 0.2 setosa
## 38 4.9 3.6 1.4 0.1 setosa
## 39 4.4 3.0 1.3 0.2 setosa
## 40 5.1 3.4 1.5 0.2 setosa
## 41 5.0 3.5 1.3 0.3 setosa
## 42 4.5 2.3 1.3 0.3 setosa
## 43 4.4 3.2 1.3 0.2 setosa
## 44 5.0 3.5 1.6 0.6 setosa
## 45 5.1 3.8 1.9 0.4 setosa
## 46 4.8 3.0 1.4 0.3 setosa
## 47 5.1 3.8 1.6 0.2 setosa
## 48 4.6 3.2 1.4 0.2 setosa
## 49 5.3 3.7 1.5 0.2 setosa
## 50 5.0 3.3 1.4 0.2 setosa
## 51 7.0 3.2 4.7 1.4 versicolor
## 52 6.4 3.2 4.5 1.5 versicolor
## 53 6.9 3.1 4.9 1.5 versicolor
## 54 5.5 2.3 4.0 1.3 versicolor
## 55 6.5 2.8 4.6 1.5 versicolor
## 56 5.7 2.8 4.5 1.3 versicolor
## 57 6.3 3.3 4.7 1.6 versicolor
## 58 4.9 2.4 3.3 1.0 versicolor
## 59 6.6 2.9 4.6 1.3 versicolor
## 60 5.2 2.7 3.9 1.4 versicolor
## 61 5.0 2.0 3.5 1.0 versicolor
## 62 5.9 3.0 4.2 1.5 versicolor
## 63 6.0 2.2 4.0 1.0 versicolor
## 64 6.1 2.9 4.7 1.4 versicolor
## 65 5.6 2.9 3.6 1.3 versicolor
## 66 6.7 3.1 4.4 1.4 versicolor
## 67 5.6 3.0 4.5 1.5 versicolor
## 68 5.8 2.7 4.1 1.0 versicolor
## 69 6.2 2.2 4.5 1.5 versicolor
## 70 5.6 2.5 3.9 1.1 versicolor
## 71 5.9 3.2 4.8 1.8 versicolor
## 72 6.1 2.8 4.0 1.3 versicolor
## 73 6.3 2.5 4.9 1.5 versicolor
## 74 6.1 2.8 4.7 1.2 versicolor
## 75 6.4 2.9 4.3 1.3 versicolor
## 76 6.6 3.0 4.4 1.4 versicolor
## 77 6.8 2.8 4.8 1.4 versicolor
## 78 6.7 3.0 5.0 1.7 versicolor
## 79 6.0 2.9 4.5 1.5 versicolor
## 80 5.7 2.6 3.5 1.0 versicolor
## 81 5.5 2.4 3.8 1.1 versicolor
## 82 5.5 2.4 3.7 1.0 versicolor
## 83 5.8 2.7 3.9 1.2 versicolor
## 84 6.0 2.7 5.1 1.6 versicolor
## 85 5.4 3.0 4.5 1.5 versicolor
## 86 6.0 3.4 4.5 1.6 versicolor
## 87 6.7 3.1 4.7 1.5 versicolor
## 88 6.3 2.3 4.4 1.3 versicolor
## 89 5.6 3.0 4.1 1.3 versicolor
## 90 5.5 2.5 4.0 1.3 versicolor
## 91 5.5 2.6 4.4 1.2 versicolor
## 92 6.1 3.0 4.6 1.4 versicolor
## 93 5.8 2.6 4.0 1.2 versicolor
## 94 5.0 2.3 3.3 1.0 versicolor
## 95 5.6 2.7 4.2 1.3 versicolor
## 96 5.7 3.0 4.2 1.2 versicolor
## 97 5.7 2.9 4.2 1.3 versicolor
## 98 6.2 2.9 4.3 1.3 versicolor
## 99 5.1 2.5 3.0 1.1 versicolor
## 100 5.7 2.8 4.1 1.3 versicolor
## 101 6.3 3.3 6.0 2.5 virginica
## 102 5.8 2.7 5.1 1.9 virginica
## 103 7.1 3.0 5.9 2.1 virginica
## 104 6.3 2.9 5.6 1.8 virginica
## 105 6.5 3.0 5.8 2.2 virginica
## 106 7.6 3.0 6.6 2.1 virginica
## 107 4.9 2.5 4.5 1.7 virginica
## 108 7.3 2.9 6.3 1.8 virginica
## 109 6.7 2.5 5.8 1.8 virginica
## 110 7.2 3.6 6.1 2.5 virginica
## 111 6.5 3.2 5.1 2.0 virginica
## 112 6.4 2.7 5.3 1.9 virginica
## 113 6.8 3.0 5.5 2.1 virginica
## 114 5.7 2.5 5.0 2.0 virginica
## 115 5.8 2.8 5.1 2.4 virginica
## 116 6.4 3.2 5.3 2.3 virginica
## 117 6.5 3.0 5.5 1.8 virginica
## 118 7.7 3.8 6.7 2.2 virginica
## 119 7.7 2.6 6.9 2.3 virginica
## 120 6.0 2.2 5.0 1.5 virginica
## 121 6.9 3.2 5.7 2.3 virginica
## 122 5.6 2.8 4.9 2.0 virginica
## 123 7.7 2.8 6.7 2.0 virginica
## 124 6.3 2.7 4.9 1.8 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
## 128 6.1 3.0 4.9 1.8 virginica
## 129 6.4 2.8 5.6 2.1 virginica
## 130 7.2 3.0 5.8 1.6 virginica
## 131 7.4 2.8 6.1 1.9 virginica
## 132 7.9 3.8 6.4 2.0 virginica
## 133 6.4 2.8 5.6 2.2 virginica
## 134 6.3 2.8 5.1 1.5 virginica
## 135 6.1 2.6 5.6 1.4 virginica
## 136 7.7 3.0 6.1 2.3 virginica
## 137 6.3 3.4 5.6 2.4 virginica
## 138 6.4 3.1 5.5 1.8 virginica
## 139 6.0 3.0 4.8 1.8 virginica
## 140 6.9 3.1 5.4 2.1 virginica
## 141 6.7 3.1 5.6 2.4 virginica
## 142 6.9 3.1 5.1 2.3 virginica
## 143 5.8 2.7 5.1 1.9 virginica
## 144 6.8 3.2 5.9 2.3 virginica
## 145 6.7 3.3 5.7 2.5 virginica
## 146 6.7 3.0 5.2 2.3 virginica
## 147 6.3 2.5 5.0 1.9 virginica
## 148 6.5 3.0 5.2 2.0 virginica
## 149 6.2 3.4 5.4 2.3 virginica
## 150 5.9 3.0 5.1 1.8 virginica
iris$binary_species## NULL
# Convierte la variable de especies a una variable binaria 0/1
iris$binary_species <- ifelse(iris$Species == "versicolor", 1, 0)
# Ajusta un modelo de regresión logística
model <- glm(binary_species ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width, data = iris, family = "binomial")
model1 <- glm(binary_species ~ Sepal.Length, data = iris, family = "binomial")
model2 <- glm(binary_species ~ Sepal.Length + Sepal.Width, data = iris, family = "binomial")
model3 <- glm(binary_species ~ Sepal.Length + Sepal.Width + Petal.Length, data = iris, family = "binomial")
model4 <- glm(binary_species ~ Sepal.Length + Petal.Length + Petal.Width, data = iris, family = "binomial")
model5 <- glm(binary_species ~ Sepal.Length + Petal.Length , data = iris, family = "binomial")
model6 <- glm(binary_species ~ Sepal.Width, data = iris, family = "binomial")
# Resumen del modelo
summary(model)##
## Call:
## glm(formula = binary_species ~ Sepal.Length + Sepal.Width + Petal.Length +
## Petal.Width, family = "binomial", data = iris)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 7.3785 2.4993 2.952 0.003155 **
## Sepal.Length -0.2454 0.6496 -0.378 0.705634
## Sepal.Width -2.7966 0.7835 -3.569 0.000358 ***
## Petal.Length 1.3136 0.6838 1.921 0.054713 .
## Petal.Width -2.7783 1.1731 -2.368 0.017868 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 190.95 on 149 degrees of freedom
## Residual deviance: 145.07 on 145 degrees of freedom
## AIC: 155.07
##
## Number of Fisher Scoring iterations: 5
summary(model1)##
## Call:
## glm(formula = binary_species ~ Sepal.Length, family = "binomial",
## data = iris)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -1.8864 1.2473 -1.512 0.130
## Sepal.Length 0.2034 0.2098 0.970 0.332
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 190.95 on 149 degrees of freedom
## Residual deviance: 190.01 on 148 degrees of freedom
## AIC: 194.01
##
## Number of Fisher Scoring iterations: 4
summary(model2)##
## Call:
## glm(formula = binary_species ~ Sepal.Length + Sepal.Width, family = "binomial",
## data = iris)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 8.0928 2.3893 3.387 0.000707 ***
## Sepal.Length 0.1294 0.2470 0.524 0.600247
## Sepal.Width -3.2128 0.6385 -5.032 4.85e-07 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 190.95 on 149 degrees of freedom
## Residual deviance: 151.65 on 147 degrees of freedom
## AIC: 157.65
##
## Number of Fisher Scoring iterations: 5
summary(model3)##
## Call:
## glm(formula = binary_species ~ Sepal.Length + Sepal.Width + Petal.Length,
## family = "binomial", data = iris)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 7.8238 2.4807 3.154 0.00161 **
## Sepal.Length 0.3475 0.5820 0.597 0.55042
## Sepal.Width -3.3792 0.7624 -4.432 9.33e-06 ***
## Petal.Length -0.1302 0.3150 -0.413 0.67925
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 190.95 on 149 degrees of freedom
## Residual deviance: 151.48 on 146 degrees of freedom
## AIC: 159.48
##
## Number of Fisher Scoring iterations: 5
summary(model4)##
## Call:
## glm(formula = binary_species ~ Sepal.Length + Petal.Length +
## Petal.Width, family = "binomial", data = iris)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 3.8343 2.0938 1.831 0.067057 .
## Sepal.Length -1.6949 0.5231 -3.240 0.001196 **
## Petal.Length 2.6965 0.5914 4.559 5.13e-06 ***
## Petal.Width -4.1130 1.1053 -3.721 0.000198 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 190.95 on 149 degrees of freedom
## Residual deviance: 160.77 on 146 degrees of freedom
## AIC: 168.77
##
## Number of Fisher Scoring iterations: 4
summary(model5)##
## Call:
## glm(formula = binary_species ~ Sepal.Length + Petal.Length, family = "binomial",
## data = iris)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 3.0440 1.9752 1.541 0.12328
## Sepal.Length -1.1262 0.4611 -2.443 0.01459 *
## Petal.Length 0.7369 0.2282 3.229 0.00124 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 190.95 on 149 degrees of freedom
## Residual deviance: 178.32 on 147 degrees of freedom
## AIC: 184.32
##
## Number of Fisher Scoring iterations: 4
summary(model6)##
## Call:
## glm(formula = binary_species ~ Sepal.Width, family = "binomial",
## data = iris)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 8.8908 1.8719 4.750 2.04e-06 ***
## Sepal.Width -3.2223 0.6372 -5.057 4.25e-07 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 190.95 on 149 degrees of freedom
## Residual deviance: 151.93 on 148 degrees of freedom
## AIC: 155.93
##
## Number of Fisher Scoring iterations: 5
names(iris)## [1] "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width"
## [5] "Species" "binary_species"
# Explorar la distribución de los datos de versicolor vs las otras especies
plot(iris$binary_species~iris$Sepal.Length)plot(iris$binary_species~iris$Sepal.Width)plot(iris$binary_species~iris$Petal.Length)plot(iris$binary_species~iris$Petal.Width)# Comparar los modelos - Navaja de Ockham
anova(model, model1, test="Chisq")## Analysis of Deviance Table
##
## Model 1: binary_species ~ Sepal.Length + Sepal.Width + Petal.Length +
## Petal.Width
## Model 2: binary_species ~ Sepal.Length
## Resid. Df Resid. Dev Df Deviance Pr(>Chi)
## 1 145 145.07
## 2 148 190.01 -3 -44.942 9.519e-10 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
anova(model, model6, test="Chisq")## Analysis of Deviance Table
##
## Model 1: binary_species ~ Sepal.Length + Sepal.Width + Petal.Length +
## Petal.Width
## Model 2: binary_species ~ Sepal.Width
## Resid. Df Resid. Dev Df Deviance Pr(>Chi)
## 1 145 145.07
## 2 148 151.93 -3 -6.8562 0.07662 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
El criterio de información de Akaike (AIC, por sus siglas en inglés) es una medida de la calidad de un modelo en términos de ajuste y complejidad. El AIC se calcula a partir de la función de verosimilitud del modelo y el número de parámetros estimados en el modelo. El AIC penaliza la complejidad del modelo al agregar un término que es proporcional al número de parámetros estimados en el modelo. El mejor modelo es aquel que tiene el valor más bajo de AIC, lo que significa que tiene un buen ajuste y es menos complejo.
Por otro lado, el criterio de información bayesiano (BIC, por sus siglas en inglés) es similar al AIC, pero tiene una penalización más fuerte por la complejidad del modelo. A diferencia del AIC, el BIC agrega un término que es proporcional al logaritmo del número de observaciones en los datos. Por lo tanto, el BIC penaliza más la complejidad del modelo en comparación con el AIC, especialmente para muestras pequeñas. El mejor modelo es aquel que tiene el valor más bajo de BIC.
Ambos criterios son útiles para seleccionar el mejor modelo, pero el BIC es más conservador y puede ser más adecuado para seleccionar modelos con menor complejidad en muestras pequeñas, mientras que el AIC puede ser más adecuado para muestras grandes o modelos más complejos. En cualquier caso, se recomienda utilizar ambos criterios para seleccionar el mejor modelo y garantizar una selección confiable.
# Carga la base de datos iris
data(iris)
X <- iris[,1:4]
y <- iris$Species
# Realiza el análisis de componentes principales (PCA)
pca <- prcomp(X, center = TRUE, scale. = TRUE)
# Crea un data.frame para los resultados del PCA
df <- data.frame(PC1 = pca$x[,1], PC2 = pca$x[,2], target = y)
# Grafica los resultados del PCA
library(ggplot2)
ggplot(df, aes(x = PC1, y = PC2, color = target)) +
geom_point(size = 3) +
ggtitle("Iris dataset - PCA") +
xlab(paste("PC1: ", round(pca$sdev[1]/sum(pca$sdev)*100, 2), "% variance")) +
ylab(paste("PC2: ", round(pca$sdev[2]/sum(pca$sdev)*100, 2), "% variance")) +
theme(plot.title = element_text(hjust = 0.5))# Obtiene los valores de los componentes principales
PC_values <- as.data.frame(pca$x)
# Imprime los valores de los componentes principales
print(PC_values)## PC1 PC2 PC3 PC4
## 1 -2.25714118 -0.478423832 0.127279624 0.024087508
## 2 -2.07401302 0.671882687 0.233825517 0.102662845
## 3 -2.35633511 0.340766425 -0.044053900 0.028282305
## 4 -2.29170679 0.595399863 -0.090985297 -0.065735340
## 5 -2.38186270 -0.644675659 -0.015685647 -0.035802870
## 6 -2.06870061 -1.484205297 -0.026878250 0.006586116
## 7 -2.43586845 -0.047485118 -0.334350297 -0.036652767
## 8 -2.22539189 -0.222403002 0.088399352 -0.024529919
## 9 -2.32684533 1.111603700 -0.144592465 -0.026769540
## 10 -2.17703491 0.467447569 0.252918268 -0.039766068
## 11 -2.15907699 -1.040205867 0.267784001 0.016675503
## 12 -2.31836413 -0.132633999 -0.093446191 -0.133037725
## 13 -2.21104370 0.726243183 0.230140246 0.002416941
## 14 -2.62430902 0.958296347 -0.180192423 -0.019151375
## 15 -2.19139921 -1.853846555 0.471322025 0.194081578
## 16 -2.25466121 -2.677315230 -0.030424684 0.050365010
## 17 -2.20021676 -1.478655729 0.005326251 0.188186988
## 18 -2.18303613 -0.487206131 0.044067686 0.092779618
## 19 -1.89223284 -1.400327567 0.373093377 0.060891973
## 20 -2.33554476 -1.124083597 -0.132187626 -0.037630354
## 21 -1.90793125 -0.407490576 0.419885937 0.010884821
## 22 -2.19964383 -0.921035871 -0.159331502 0.059398340
## 23 -2.76508142 -0.456813301 -0.331069982 0.019582826
## 24 -1.81259716 -0.085272854 -0.034373442 0.150636353
## 25 -2.21972701 -0.136796175 -0.117599566 -0.269238379
## 26 -1.94532930 0.623529705 0.304620475 0.043416203
## 27 -2.04430277 -0.241354991 -0.086075649 0.067454082
## 28 -2.16133650 -0.525389422 0.206125707 0.010241084
## 29 -2.13241965 -0.312172005 0.270244895 0.083977887
## 30 -2.25769799 0.336604248 -0.068207276 -0.107918349
## 31 -2.13297647 0.502856075 0.074757996 -0.048027970
## 32 -1.82547925 -0.422280389 0.269564311 0.239069476
## 33 -2.60621687 -1.787587272 -0.047070727 -0.228470534
## 34 -2.43800983 -2.143546796 0.082392024 -0.048053409
## 35 -2.10292986 0.458665270 0.169706329 0.028926042
## 36 -2.20043723 0.205419224 0.224688852 0.168343905
## 37 -2.03831765 -0.659349230 0.482919584 0.195702902
## 38 -2.51889339 -0.590315163 -0.019370918 -0.136048774
## 39 -2.42152026 0.901161067 -0.192609402 -0.009705907
## 40 -2.16246625 -0.267981199 0.175296561 0.007023875
## 41 -2.27884081 -0.440240541 -0.034778398 0.106626042
## 42 -1.85191836 2.329610745 0.203552303 0.288896090
## 43 -2.54511203 0.477501017 -0.304745527 -0.066379077
## 44 -1.95788857 -0.470749613 -0.308567588 0.176501717
## 45 -2.12992356 -1.138415464 -0.247604064 -0.150539117
## 46 -2.06283361 0.708678586 0.063716370 0.139801160
## 47 -2.37677076 -1.116688691 -0.057026813 -0.151722682
## 48 -2.38638171 0.384957230 -0.139002234 -0.048671707
## 49 -2.22200263 -0.994627669 0.180886792 -0.014878291
## 50 -2.19647504 -0.009185585 0.152518539 0.049206884
## 51 1.09810244 -0.860091033 0.682300393 0.034717469
## 52 0.72889556 -0.592629362 0.093807452 0.004887251
## 53 1.23683580 -0.614239894 0.552157058 0.009391933
## 54 0.40612251 1.748546197 0.023024633 0.065549239
## 55 1.07188379 0.207725147 0.396925784 0.104387166
## 56 0.38738955 0.591302717 -0.123776885 -0.240027187
## 57 0.74403715 -0.770438272 -0.148472007 -0.077111455
## 58 -0.48569562 1.846243998 -0.248432992 -0.040384912
## 59 0.92480346 -0.032118478 0.594178807 -0.029779844
## 60 0.01138804 1.030565784 -0.537100055 -0.028366154
## 61 -0.10982834 2.645211115 0.046634215 0.013714785
## 62 0.43922201 0.063083852 -0.204389093 0.039992104
## 63 0.56023148 1.758832129 0.763214554 0.045578465
## 64 0.71715934 0.185602819 0.068429700 -0.164256922
## 65 -0.03324333 0.437537419 -0.194282030 0.108684396
## 66 0.87248429 -0.507364239 0.501830204 0.104593326
## 67 0.34908221 0.195656268 -0.489234095 -0.190869932
## 68 0.15827980 0.789451008 0.301028700 -0.204612265
## 69 1.22100316 1.616827281 0.480693656 0.225145511
## 70 0.16436725 1.298259939 0.172260719 -0.051554138
## 71 0.73521959 -0.395247446 -0.614467782 -0.083006045
## 72 0.47469691 0.415926887 0.264067576 0.113189079
## 73 1.23005729 0.930209441 0.367182178 -0.009911322
## 74 0.63074514 0.414997441 0.290921638 -0.273304557
## 75 0.70031506 0.063200094 0.444537765 0.043313222
## 76 0.87135454 -0.249956017 0.471001057 0.101376117
## 77 1.25231375 0.076998069 0.724727099 0.039556002
## 78 1.35386953 -0.330205463 0.259955701 0.066604931
## 79 0.66258066 0.225173502 -0.085577197 -0.036318171
## 80 -0.04012419 1.055183583 0.318506304 0.064571834
## 81 0.13035846 1.557055553 0.149482697 -0.009371129
## 82 0.02337438 1.567225244 0.240745761 -0.032663020
## 83 0.24073180 0.774661195 0.150707074 0.023572390
## 84 1.05755171 0.631726901 -0.104959762 -0.183354200
## 85 0.22323093 0.286812663 -0.663028512 -0.253977520
## 86 0.42770626 -0.842758920 -0.449129446 -0.109308985
## 87 1.04522645 -0.520308714 0.394464890 0.037084781
## 88 1.04104379 1.378371048 0.685997804 0.136378719
## 89 0.06935597 0.218770433 -0.290605718 -0.146653279
## 90 0.28253073 1.324886147 -0.089111491 0.008876070
## 91 0.27814596 1.116288852 -0.094172116 -0.269753497
## 92 0.62248441 -0.024839814 0.020412763 -0.147193289
## 93 0.33540673 0.985103828 0.198724011 0.006508757
## 94 -0.36097409 2.012495825 -0.105467721 0.019505467
## 95 0.28762268 0.852873116 -0.130452657 -0.107043742
## 96 0.09105561 0.180587142 -0.128547696 -0.229191812
## 97 0.22695654 0.383634868 -0.155691572 -0.132163118
## 98 0.57446378 0.154356489 0.270743347 -0.019794366
## 99 -0.44617230 1.538637456 -0.189765199 0.199278855
## 100 0.25587339 0.596852285 -0.091572385 -0.058426315
## 101 1.83841002 -0.867515056 -1.002044077 -0.049085303
## 102 1.15401555 0.696536401 -0.528389994 -0.040385459
## 103 2.19790361 -0.560133976 0.202236658 0.058986583
## 104 1.43534213 0.046830701 -0.163083761 -0.234982858
## 105 1.86157577 -0.294059697 -0.394307408 -0.016243853
## 106 2.74268509 -0.797736709 0.580364827 -0.101045973
## 107 0.36579225 1.556289178 -0.983598122 -0.132679346
## 108 2.29475181 -0.418663020 0.649530452 -0.237246445
## 109 1.99998633 0.709063226 0.392675073 -0.086221779
## 110 2.25223216 -1.914596301 -0.396224508 0.104488870
## 111 1.35962064 -0.690443405 -0.283661780 0.107500284
## 112 1.59732747 0.420292431 -0.023108991 0.058136869
## 113 1.87761053 -0.417849815 -0.026250468 0.145926073
## 114 1.25590769 1.158379741 -0.578311891 0.098826244
## 115 1.46274487 0.440794883 -1.000517746 0.274738504
## 116 1.58476820 -0.673986887 -0.636297054 0.191222383
## 117 1.46651849 -0.254768327 -0.037306280 -0.154811637
## 118 2.41822770 -2.548124795 0.127454475 -0.272892966
## 119 3.29964148 -0.017721580 0.700957033 0.045037725
## 120 1.25954707 1.701046715 0.266643612 -0.064963167
## 121 2.03091256 -0.907427443 -0.234015510 0.167390481
## 122 0.97471535 0.569855257 -0.825362161 0.027662914
## 123 2.88797650 -0.412259950 0.854558973 -0.126911337
## 124 1.32878064 0.480202496 0.005410239 0.139491837
## 125 1.69505530 -1.010536476 -0.297454114 -0.061437911
## 126 1.94780139 -1.004412720 0.418582432 -0.217609339
## 127 1.17118007 0.315338060 -0.129503907 0.125001677
## 128 1.01754169 -0.064131184 -0.336588365 -0.008625505
## 129 1.78237879 0.186735633 -0.269754304 0.030983849
## 130 1.85742501 -0.560413289 0.713244682 -0.207519953
## 131 2.42782030 -0.258418706 0.725386035 -0.017863520
## 132 2.29723178 -2.617554417 0.491826144 -0.210968943
## 133 1.85648383 0.177953334 -0.352966242 0.099675959
## 134 1.11042770 0.291944582 0.182875741 -0.185721512
## 135 1.19845835 0.808606364 0.164173760 -0.487849130
## 136 2.78942561 -0.853942542 0.541093785 0.294893130
## 137 1.57099294 -1.065013214 -0.942695700 0.035486875
## 138 1.34179696 -0.421020154 -0.180271551 -0.214702016
## 139 0.92173701 -0.017165594 -0.415434449 0.005220919
## 140 1.84586124 -0.673870645 0.012629804 0.194543500
## 141 2.00808316 -0.611835930 -0.426902678 0.246711805
## 142 1.89543421 -0.687273065 -0.129640697 0.468128374
## 143 1.15401555 0.696536401 -0.528389994 -0.040385459
## 144 2.03374499 -0.864624030 -0.337014969 0.045036251
## 145 1.99147547 -1.045665670 -0.630301866 0.213330527
## 146 1.86425786 -0.385674038 -0.255418178 0.387957152
## 147 1.55935649 0.893692855 0.026283300 0.219456899
## 148 1.51609145 -0.268170747 -0.179576781 0.118773236
## 149 1.36820418 -1.007877934 -0.930278721 0.026041407
## 150 0.95744849 0.024250427 -0.526485033 -0.162533529
# Muestra la varianza explicada por cada componente principal
print(summary(pca)$importance)## PC1 PC2 PC3 PC4
## Standard deviation 1.708361 0.9560494 0.3830886 0.1439265
## Proportion of Variance 0.729620 0.2285100 0.0366900 0.0051800
## Cumulative Proportion 0.729620 0.9581300 0.9948200 1.0000000
# Muestra la carga de cada variable en cada componente principal
print(summary(pca)$rotation)## PC1 PC2 PC3 PC4
## Sepal.Length 0.5210659 -0.37741762 0.7195664 0.2612863
## Sepal.Width -0.2693474 -0.92329566 -0.2443818 -0.1235096
## Petal.Length 0.5804131 -0.02449161 -0.1421264 -0.8014492
## Petal.Width 0.5648565 -0.06694199 -0.6342727 0.5235971
Las tablas de contingencia son una herramienta útil para resumir y analizar la relación entre dos o más variables categóricas. Estas tablas muestran la frecuencia de cada combinación de categorías en las variables, lo que permite identificar patrones y relaciones entre ellas.
La prueba de chi-cuadrado es una técnica estadística utilizada para determinar si hay una asociación significativa entre dos o más variables categóricas. La prueba compara las frecuencias observadas en una tabla de contingencia con las frecuencias que se esperarían si no hubiera asociación entre las variables. La hipótesis nula de la prueba es que no hay asociación entre las variables, y la hipótesis alternativa es que hay una asociación significativa.
El resultado de la prueba de chi-cuadrado es un valor estadístico denominado chi-cuadrado, que mide la diferencia entre las frecuencias observadas y las esperadas en la tabla de contingencia. Si el valor de chi-cuadrado es lo suficientemente grande, se rechaza la hipótesis nula y se concluye que hay una asociación significativa entre las variables.
# Crear el dataframe con los valores de la tabla de contingencia
df_contingencia <- data.frame(
especie1 = c(10, 20, 11, 17, 14, 21),
especie2 = c(7, 17, 20, 13, 7, 13),
especie3 = c(20, 14, 6, 9, 14, 18),
especie4 = c(3, 13, 10, 11, 12, 20),
especie5 = c(16, 20, 10, 12, 15, 15),
especie6 = c(13, 10, 16, 3, 9, 10),
row.names = c("sprayA", "sprayB", "sprayC", "sprayD", "sprayE", "sprayF")
)
# Mostrar el dataframe
print(df_contingencia)## especie1 especie2 especie3 especie4 especie5 especie6
## sprayA 10 7 20 3 16 13
## sprayB 20 17 14 13 20 10
## sprayC 11 20 6 10 10 16
## sprayD 17 13 9 11 12 3
## sprayE 14 7 14 12 15 9
## sprayF 21 13 18 20 15 10
# Cargar la librería para la prueba de chi-cuadrado
install.packages('stats')## Installing package into '/home/manuel/R/x86_64-pc-linux-gnu-library/4.3'
## (as 'lib' is unspecified)
## Warning: package 'stats' is a base package, and should not be updated
library(stats)
# Realizar la prueba de chi-cuadrado
resultados_chi <- chisq.test(df_contingencia)
# Mostrar los resultados
print(resultados_chi)##
## Pearson's Chi-squared test
##
## data: df_contingencia
## X-squared = 44.944, df = 25, p-value = 0.008486
# Calcular los residuos estandarizados
residuos_est <- resid(resultados_chi, type = "pearson")
# Ver los residuos estandarizados
print(residuos_est)## especie1 especie2 especie3 especie4 especie5 especie6
## sprayA -0.99549686 -1.2859963 2.3415331 -2.2445410 0.84857594 1.34377360
## sprayB 0.31508582 0.3989253 -0.5545854 -0.2230359 0.56253309 -0.63662726
## sprayC -0.91347839 2.3151499 -1.8609350 -0.2257652 -0.99898716 2.11120030
## sprayD 1.14504474 0.7127450 -0.6643775 0.4647210 -0.05616987 -1.87582588
## sprayE -0.02102542 -1.3639287 0.4962488 0.4809361 0.45974583 -0.07718131
## sprayF 0.40254698 -0.7330548 0.3047481 1.5165992 -0.75018274 -0.73655869
# Crear un gráfico de cuantiles normales
qqnorm(residuos_est)Tarea. Investigar, realizar y correr los códigos para las pruebas post hoc para ANDEVA, KRUSKAL WALLIS Y U de Mann-Whitney.
Tarea. Realizar el analisis de las siguientes tablas de contingencia
| Pinus_oocarpa | Pinus_caribae | Pinus_maximinoi | |
|---|---|---|---|
| Ocotepeque | 154 | 98 | 15 |
| Fco. Morazán | 25 | 75 | 35 |
| Comayagua | 45 | 5 | 65 |
| Si | No | |
|---|---|---|
| Ocotepeque | 25 | 45 |
| Fco. Morazán | 2 | 75 |
| Comayagua | 14 | 35 |
** Prueba de G y Gh **
La prueba de G es una prueba estadística no paramétrica utilizada para comparar dos muestras independientes y verificar si se extraen de la misma población. Esta prueba se basa en la clasificación de los datos en una sola lista ordenada y la comparación de las posiciones relativas de las observaciones de cada grupo en esta lista. Si no hay diferencias significativas entre las posiciones de las observaciones de cada grupo en la lista, se acepta la hipótesis nula de que ambas muestras provienen de la misma población.
La prueba de Gh es una extensión de la prueba de G que se utiliza para comparar más de dos muestras independientes. La prueba de Gh también se basa en la clasificación de los datos en una sola lista ordenada y la comparación de las posiciones relativas de las observaciones de cada grupo en esta lista. Si no hay diferencias significativas entre las posiciones de las observaciones de cada grupo en la lista, se acepta la hipótesis nula de que todas las muestras provienen de la misma población.
# Crear el dataframe con los valores de la tabla de contingencia
df_contingencia <- data.frame(
especie1 = c(10, 20, 11, 77, 14, 51),
especie2 = c(7, 17, 20, 13, 7, 13),
especie3 = c(20, 14, 6, 9, 14, 18),
especie4 = c(3, 13, 10, 71, 12, 60),
especie5 = c(16, 20, 10, 12, 15, 15),
especie6 = c(103, 10, 16, 3, 9, 10),
row.names = c("sprayA", "sprayB", "sprayC", "sprayD", "sprayE", "sprayF")
)
# Cargar la librería para la prueba no paramétrica de G
# Realizar la prueba no paramétrica de G
#resultados_g <- association(df_contingencia, type = "g")
# Mostrar los resultados de la prueba no paramétrica de G
#print(resultados_g)Prueba de G
# Crear la tabla de contingencia con los datos
datos <- matrix(c(10, 5, 6, 9), nrow = 2, byrow = TRUE)
colnames(datos) <- c("Positivos", "Negativos")
rownames(datos) <- c("Hombres", "Mujeres")
print(datos)## Positivos Negativos
## Hombres 10 5
## Mujeres 6 9
# Realizar una prueba de bondad de ajuste utilizando la distribución chi-cuadrado
frec_esp <- c(sum(datos[1,]), sum(datos[2,])) * c(sum(datos[,1]), sum(datos[,2])) / sum(datos)
resultado <- stats::chisq.test(datos, p = frec_esp)
print(resultado)##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: datos
## X-squared = 1.2054, df = 1, p-value = 0.2723
library(AMR)
# Realizar la prueba de G
resultado <- g.test(datos)## Warning in g.test(datos): `fisher.test()` is always more reliable for 2x2
## tables and although much slower, often only takes seconds.
print(resultado)##
## G-test of independence
##
## data: datos
## X-squared = 2.1696, p-value = 0.1408