Curso de Biometría 1

Manuel Alejandro Barrios Izás

2023-04-18

1. Generar datos aleatorios con distribución normal

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

2. Parámetros de la población y de la muestra

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

3. Muestreo Aleatorio, Sistemático, Estratificado y Conglomerado

3.1 Muestreo aleatorio simple

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"

3.2 Muesteo Sistemático

# 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

3.3 Muestreo Estratificado

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

3.4 Muestreo conglomerado

#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

3.5 Muestreo aleatorio en espacio geográfico

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)

4. Visualización de datos - Variables categóricas

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

  1. Realizar el mismo ejercicio con el número de embarazos (npreg)
  2. Elaborar un gráfico de barras

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()

  1. Visualización de datos - Variables contínuas
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)

4. Visualización de 2 variables continuas

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)
## `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()

5. Regresión Linear

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)

Análisis de varianza

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.

Comparación entre las pruebas

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)

Regresión logística

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)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -2.1280  -0.7668  -0.3818   0.7866   2.1202  
## 
## 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)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -1.0613  -0.9259  -0.8368   1.4426   1.5709  
## 
## 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)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -1.9769  -0.8176  -0.4298   0.8855   2.0855  
## 
## 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)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -1.9866  -0.8367  -0.4466   0.8761   2.1330  
## 
## 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)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -2.4060  -0.8127  -0.5008   1.0430   1.8070  
## 
## 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)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -1.5493  -0.9437  -0.6451   1.2645   1.7894  
## 
## 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)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -1.9771  -0.8701  -0.4539   0.8490   2.0902  
## 
## 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

Análisis de tablas de contingencia

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.2'
## (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)