#Trabajo Practico N 2 Modulo 5.

#Estadistica Parametrica y No parametrica

##Cultivo de Citricos

Instalar y cargar los paquetes necesarios

#install.packages("readxl")
#install.packages("tidyverse")
#install.packages("summarytools")
#install.packages("dplyr") # si instalas tidyversse ya no necesitas instalar dplyr ya que esta incluido en ese paquete
#install.packages("car")
#install.packages("nortest")

library(nortest)
library(car)
## Loading required package: carData
library(readxl)
library(tidyverse)   
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.5
## ✔ forcats   1.0.0     ✔ stringr   1.5.1
## ✔ ggplot2   3.5.2     ✔ tibble    3.3.0
## ✔ lubridate 1.9.4     ✔ tidyr     1.3.1
## ✔ purrr     1.1.0
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ✖ dplyr::recode() masks car::recode()
## ✖ purrr::some()   masks car::some()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(summarytools) 
## Warning in fun(libname, pkgname): couldn't connect to display ":0"
## 
## Attaching package: 'summarytools'
## 
## The following object is masked from 'package:tibble':
## 
##     view
library(dplyr)

Carga de las bases de datos

citricos <- read_excel("citricos.xlsx")

Ver las primeras filas

head(citricos)
## # A tibble: 6 × 17
##      id variedad   peso_antes diametro_antes peso_despues diametro_despues
##   <dbl> <chr>           <dbl>          <dbl>        <dbl>            <dbl>
## 1     1 Clemenules       145.           57.4         139.             67.6
## 2     2 Clemenules       149.           56.1         152              68.5
## 3     3 Clemenules       120.           52.1         153.             69.1
## 4     4 Clemenules       150.           54.8         140.             58.4
## 5     5 Clemenules       136.           54.3         130.             69.7
## 6     6 Clemenules       136.           56.8         168.             64.9
## # ℹ 11 more variables: color_nivel <dbl>, color_desc <chr>, madurez <chr>,
## #   danio_nivel <dbl>, danio_desc <chr>, fertilizante <chr>,
## #   humedad_suelo <dbl>, insecticida <chr>, plaga <chr>, acidez <dbl>,
## #   contenido_brix <dbl>

Analisis inicial

Respuesta a

Cantidad de variables = 17

num_columnas <- ncol(citricos)
print(paste("El número de columnas es:", num_columnas))
## [1] "El número de columnas es: 17"

Cantidad de observaciones = 750

num_filas <- nrow(citricos)
print(paste("El número de filas es:", num_filas))
## [1] "El número de filas es: 750"

Respuesta b

Tipos de Variables

Variedad = Vble categorica

Peso Antes = Vble Numerica

Diametro Antes = Vble Numerica

Peso Despues = Vble Numerica

Diametro Despues = Vble Numerica

Color Nivel = Vble categorica

Color Desc = Vble categorica

Madurez = Vble categorica

Daño Nivel = Vble categorica

Daño Desc = Vble categorica

Fertilizante = Vble categorica

Humedad Suelo = Vble Numerica

Insecticida = Vble categorica

Plaga = Vble categorica

Acidez = Vble Numerica

Contenido Brix = Vble Numerica

Respuesta c

peso_antes <-citricos$peso_antes
peso_despues <- citricos$peso_despues
diametro_antes <- citricos$diametro_antes
diametro_despues <- citricos$diametro_despues
acidez <- citricos$acidez
contenido_brix <- citricos$contenido_brix

Medidas descriptivas de cada variable

descr(peso_antes)
## Descriptive Statistics  
## peso_antes  
## N: 750  
## 
##                     peso_antes
## ----------------- ------------
##              Mean       156.56
##           Std.Dev        19.14
##               Min       105.00
##                Q1       140.70
##            Median       158.90
##                Q3       172.00
##               Max       201.40
##               MAD        22.76
##               IQR        31.28
##                CV         0.12
##          Skewness        -0.12
##       SE.Skewness         0.09
##          Kurtosis        -0.88
##           N.Valid       750.00
##                 N       750.00
##         Pct.Valid       100.00
descr(peso_despues)
## Descriptive Statistics  
## peso_despues  
## N: 750  
## 
##                     peso_despues
## ----------------- --------------
##              Mean         157.15
##           Std.Dev          17.99
##               Min         113.20
##                Q1         143.30
##            Median         156.05
##                Q3         171.60
##               Max         210.30
##               MAD          21.35
##               IQR          28.27
##                CV           0.11
##          Skewness           0.09
##       SE.Skewness           0.09
##          Kurtosis          -0.81
##           N.Valid         750.00
##                 N         750.00
##         Pct.Valid         100.00
descr(diametro_antes)
## Descriptive Statistics  
## diametro_antes  
## N: 750  
## 
##                     diametro_antes
## ----------------- ----------------
##              Mean            57.50
##           Std.Dev             4.99
##               Min            46.10
##                Q1            54.00
##            Median            56.30
##                Q3            59.90
##               Max            73.50
##               MAD             4.00
##               IQR             5.88
##                CV             0.09
##          Skewness             0.86
##       SE.Skewness             0.09
##          Kurtosis             0.19
##           N.Valid           750.00
##                 N           750.00
##         Pct.Valid           100.00
descr(diametro_despues)
## Descriptive Statistics  
## diametro_despues  
## N: 750  
## 
##                     diametro_despues
## ----------------- ------------------
##              Mean              64.46
##           Std.Dev               5.22
##               Min              51.20
##                Q1              60.60
##            Median              63.80
##                Q3              68.10
##               Max              77.90
##               MAD               5.34
##               IQR               7.47
##                CV               0.08
##          Skewness               0.30
##       SE.Skewness               0.09
##          Kurtosis              -0.52
##           N.Valid             750.00
##                 N             750.00
##         Pct.Valid             100.00
descr(acidez)
## Descriptive Statistics  
## acidez  
## N: 750  
## 
##                     acidez
## ----------------- --------
##              Mean     1.04
##           Std.Dev     0.18
##               Min     0.60
##                Q1     0.90
##            Median     1.05
##                Q3     1.17
##               Max     1.40
##               MAD     0.19
##               IQR     0.27
##                CV     0.18
##          Skewness    -0.25
##       SE.Skewness     0.09
##          Kurtosis    -0.56
##           N.Valid   750.00
##                 N   750.00
##         Pct.Valid   100.00
descr(contenido_brix)
## Descriptive Statistics  
## contenido_brix  
## N: 750  
## 
##                     contenido_brix
## ----------------- ----------------
##              Mean            10.61
##           Std.Dev             1.18
##               Min             8.02
##                Q1             9.82
##            Median            10.69
##                Q3            11.53
##               Max            13.00
##               MAD             1.26
##               IQR             1.71
##                CV             0.11
##          Skewness            -0.21
##       SE.Skewness             0.09
##          Kurtosis            -0.67
##           N.Valid           750.00
##                 N           750.00
##         Pct.Valid           100.00

Respuesta d

Histgramas

hist(citricos$peso_antes, main="Peso antes del tratamiento", xlab= "gramos", col="red", border="black")

hist(citricos$peso_despues, main="Peso despues del tratamiento", xlab= "gramos", col="orange", border="black")

hist(citricos$diametro_antes, main="Diametro antes", xlab= "centimetros", col="blue", border="black")

hist(citricos$diametro_despues, main="Diametro despues", xlab= "centimetros", col="lightblue", border="black")

hist(citricos$acidez, main="Acidez de la fruta", xlab= "Acidez", col="green", border="black")

hist(citricos$contenido_brix, main="Contenido de grados brix", xlab= "grados brix", col="yellow", border="black")

Graficos de caja

boxplot(citricos$peso_antes, main = "Graficos de caja", ylab = "Peso antes", col = "red")

boxplot(citricos$peso_despues, main = "Graficos de caja", ylab = "Peso despues", col = "orange")

boxplot(citricos$diametro_antes, main = "Graficos de caja", ylab = "Diametro antes", col = "blue")

boxplot(citricos$diametro_despues, main = "Graficos de caja", ylab = "Diametro despues", col = "lightblue")

boxplot(citricos$acidez, main = "Graficos de caja", ylab = "Acidez", col = "green")

boxplot(citricos$contenido_brix, main = "Graficos de caja", ylab = "Contenido de grados brix", col = "yellow")

2 Pueba de hipotesis para una media.

Respuesta a

Ho: grados brix menor o igual 10

H1: grados brix mayor 10

Respuesta b

media_brix <- mean(citricos$contenido_brix)
media_brix
## [1] 10.60652

Si la media observada del contenido de grados Brix (10.61) es mayor que 10

Respuesta c

Evaluacion grafica de la normalidad

qqnorm(citricos$contenido_brix, pch = 5)  
qqline(citricos$contenido_brix, col = "yellow")  

Evaluacion analitica de la normalidad

Prueba de Shapiro Wilks

H0: SI se cumple el supuesto de Normalidad.

H1: NO se cumple el supuesto de Normalidad.

shapiro.test(citricos$contenido_brix)
## 
##  Shapiro-Wilk normality test
## 
## data:  citricos$contenido_brix
## W = 0.98193, p-value = 5.368e-08

Como el p-valor (5.368e-08) es menor que 0,05, se rechaza la hipotesis nula, por lo tanto No se cumple el supuesto de normalidad.

Respuesta d. Prueba de Wilcoxon unilateral derecha (es una prueba no parametrica que se realiza porque no se cumple el supuesto de normalidad).

wilcox.test(citricos$contenido_brix, mu = 10, alternative = "greater")
## 
##  Wilcoxon signed rank test with continuity correction
## 
## data:  citricos$contenido_brix
## V = 210672, p-value < 2.2e-16
## alternative hypothesis: true location is greater than 10

Respuesta e. Como el p-valor (2.2e-16) es menor que 0,05, se rechaza la hipotesis nula (grados brix menor o igual 10), por lo tanto como los grados brix son mayores de 10, la empresa puede garantizar un sabor dulce.

3. Comparación de medias entre dos grupos

Respuesta a. Hipótesis correspondientes.

H0: No hay diferencia en el nivel medio de acidez de los frutos que recibieron insecticida y los que no.

H1: Existe una diferencia en el nivel medio de acidez.

Respuesta b. Compare el nivel medio de acidez entre los frutos que recibieron insecticida y los que no.

medias_acidez <- citricos %>%
  group_by(insecticida) %>%
  summarise(media_acidez = mean(acidez, na.rm = TRUE),
            desviacion_estandar = sd(acidez, na.rm = TRUE))
print(medias_acidez)
## # A tibble: 2 × 3
##   insecticida media_acidez desviacion_estandar
##   <chr>              <dbl>               <dbl>
## 1 No                  1.03               0.185
## 2 Si                  1.04               0.182

Respuesta c. 

Comprobacion de los supuestos:

Normalidad. Prueba de Shapiro Wilk prar cada grupo

shapiro.test(citricos$acidez[citricos$insecticida == "Si"])
## 
##  Shapiro-Wilk normality test
## 
## data:  citricos$acidez[citricos$insecticida == "Si"]
## W = 0.98055, p-value = 6.096e-06
shapiro.test(citricos$acidez[citricos$insecticida == "No"])
## 
##  Shapiro-Wilk normality test
## 
## data:  citricos$acidez[citricos$insecticida == "No"]
## W = 0.98627, p-value = 0.009107

H0: SI se cumple el supuesto de Normalidad.

H1: NO se cumple el supuesto de Normalidad.

Como los dos p-valor (6.096e-06 y 0.009107) son menor que 0,05, se rechaza la hipotesis nula, por lo tanto No se cumple el supuesto de normalidad.

Homocedasticidad. Prueba de Levene

leveneTest(acidez ~ insecticida, data = citricos)
## 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   1  0.3367 0.5619
##       748

H0: SI cumple el supuesto de Homocedasticidad.

H1: NO se cumple el supuesto de Homocedasticidad

Como el p-valor (0.5619) es mayor que 0,05, no se rechaza la hipotesis nula, por lo tanto se cumple el supuesto de homocedasticidad.

Prueba de Wilcoxon ( ya que se realiza porque no se cumple el supuesto de normalidad).

wilcox.test(acidez ~ insecticida, data = citricos)
## 
##  Wilcoxon rank sum test with continuity correction
## 
## data:  acidez by insecticida
## W = 62670, p-value = 0.2901
## alternative hypothesis: true location shift is not equal to 0

Respuesta d. Como el p-valor (0.2901) es mayor que 0,05, No se rechaza la hipotesis nula por lo tanto No hay diferencia en el nivel medio de acidez de los frutos que recibieron insecticida y los que no. El uso de insecticidas no afecta el nivel de acidez del fruto.

4. Comparación de medias entre más de dos grupos (ANOVA)

Respuesta a. Hipótesis.

H0: El peso medio final del fruto es el mismo para todos los tipos de fertilizante.

H1: Al menos uno de los tipos de fertilizante produce un peso medio final diferente.

Respuesta b.

Comprobacion de los supuestos:

Prueba de Shapiro Wilks

H0: SI se cumple el supuesto de Normalidad.

H1: NO se cumple el supuesto de Normalidad.

Primero realizo el ANOVA para obtener los residuos de las variables

modelo_anova <- aov(peso_despues ~ fertilizante , data = citricos)
summary(modelo_anova)
##               Df Sum Sq Mean Sq F value Pr(>F)
## fertilizante   2    134    66.9   0.206  0.814
## Residuals    747 242255   324.3

Con los valores de los residuos puedo correr el Test de Shapiro

shapiro.test(resid(modelo_anova))
## 
##  Shapiro-Wilk normality test
## 
## data:  resid(modelo_anova)
## W = 0.9843, p-value = 3.346e-07

Como los dos p-valor (3.426e-07) es menor que 0,05, se rechaza la hipotesis nula, por lo tanto No se cumple el supuesto de normalidad.

Homocedasticidad. Prueba de Levene

Considero para esta prueba los valores absolutos de los residuos

prueba_levene <- leveneTest(modelo_anova)
## Warning in leveneTest.default(y = y, group = group, ...): group coerced to
## factor.
print(prueba_levene)
## Levene's Test for Homogeneity of Variance (center = median)
##        Df F value Pr(>F)
## group   2  0.8213 0.4402
##       747

Como el p-valor (0.4402) es mayor que 0,05, no se rechaza la hipotesis nula, por lo tanto se cumple el supuesto de homocedasticidad.

Como no se cumple el supuesto de normalidad se debe usar Kruskal-Wallis.

res.kruskal <- citricos %>% kruskal.test(peso_despues ~ fertilizante)
## Warning in kruskal.test.default(., peso_despues ~ fertilizante): 'x' is a list,
## so ignoring argument 'g'
## Warning in kruskal.test.default(., peso_despues ~ fertilizante): some elements
## of 'x' are not numeric and will be coerced to numeric
res.kruskal
## 
##  Kruskal-Wallis rank sum test
## 
## data:  .
## Kruskal-Wallis chi-squared = 11288, df = 16, p-value < 2.2e-16

Como el pvalor(2.2e-16) es menor que 0,05. Se recalaza la hipotesis nula, por lo tanto, al menos uno de los tipos de fertilizante produce un peso medio final diferente.

Como no se cumple el supuesto de normalidad no se podria realizar el Test de Tuker, pero se lo corrio igulamnete, para responder a la pregunta.

Respuesta c. Test de Tukey.

tukey_resultado <- TukeyHSD(modelo_anova)
print(tukey_resultado)
##   Tukey multiple comparisons of means
##     95% family-wise confidence level
## 
## Fit: aov(formula = peso_despues ~ fertilizante, data = citricos)
## 
## $fertilizante
##                          diff       lwr      upr     p adj
## Organico-Mixto   -0.005039614 -3.765622 3.755542 0.9999945
## Quimico-Mixto    -0.903905787 -4.713467 2.905655 0.8427992
## Quimico-Organico -0.898866173 -4.678967 2.881235 0.8421724

Intervalo de confianza (lwr upr) Si este intervalo no incluye el 0, la diferencia es significativa.

Valor p ajustado para la comparación. Si es menor que el nivel de significancia, 0.05, la diferencia es significativa.

Respuesta d. 

Como el intervalo de confianza del 95%, incluye el valor cero, NO hay diferencias significativas entre los fertilizantes.

Como los valores de p ajustado (p adj) son mayores que 0,05 no hay diferencias significativas entre los fertilizantes.

Por lo tanto se podria recomendar que se use el fertilizante de mejor precio, ya que no hay diferencias entre los mismos.

5. Prueba para proporciones

Respuesta a. Estimacion de la proporción observada de frutos con plaga.

plagas_si <- citricos %>% filter(plaga == "Si") %>%  nrow()
plagas_si
## [1] 343
n_total <- nrow(citricos)
n_total
## [1] 750
prop.test(x = 343, n = 750, conf.level = 0.95)
## 
##  1-sample proportions test with continuity correction
## 
## data:  343 out of 750, null probability 0.5
## X-squared = 5.292, df = 1, p-value = 0.02142
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
##  0.4213285 0.4937811
## sample estimates:
##         p 
## 0.4573333

La proporcion observada de frutos con plaga es 46%

Respesta b. Hipótesis

H0: La proporción de frutos con plaga es igual o mayor al 30%.

H1: La proporción de frutos con plaga es menor al 30%. (Esta es la afirmación de la empresa que se busca respaldar)

y realice una prueba de proporciones para contrastar si la proporción observada es menor al 30%.

# X = número de éxitos (frutos con plaga)
X <- plagas_si 
# n = número total de observaciones
N <- n_total
# p = proporción a contrastar (30% o 0.30)
P0 <- 0.30

res_prop <- prop.test(x = X, n = N, p = P0, 
                      alternative = "less", # Prueba de una cola (menor que)
                      correct = TRUE) # Con corrección de continuidad (por defecto)
res_prop
## 
##  1-sample proportions test with continuity correction
## 
## data:  X out of N, null probability P0
## X-squared = 87.659, df = 1, p-value = 1
## alternative hypothesis: true p is less than 0.3
## 95 percent confidence interval:
##  0.0000000 0.4880222
## sample estimates:
##         p 
## 0.4573333

Como el p-valor (1) es mayor que 0,05, No hay evidencia suficiente para concluir que la proporción es menor al 30%.

Respuesta c. No hay evidencia para respaldar la afirmación de que menos del 30% de los frutos deberían tener plagas, esto le perimitiria a la empresa afirmar que no mantiene los estándares de calidad.

6. Efecto del tratamiento en el fruto (antes vs después)

Respuesta a. Realice una prueba t para muestras relacionadas diametro_antes y diametro_despues (o su equivalente no paramétrico si no se cumplen supuestos).

Comprobacion de los supuestos:

Calcular la diferencia

citricos <- citricos %>% 
  mutate(diferencia_diametro = diametro_despues - diametro_antes)
# Separo en un objeto la variable recien creada llamada "diferencia_diametro"
diferencia_diametro <- citricos$diferencia_diametro

Primero realizo el ANOVA para obtener los residuos de las variables

modelo_anova <- aov(diferencia_diametro ~ fertilizante * insecticida,
                    data = citricos)

summary(modelo_anova)
##                           Df Sum Sq Mean Sq F value Pr(>F)
## fertilizante               2     18    9.11   0.144  0.866
## insecticida                1    110  109.83   1.733  0.188
## fertilizante:insecticida   2     74   37.08   0.585  0.557
## Residuals                744  47160   63.39

Normalidad. Como la muestra es muy grande uso para la determinacion la Prueva de Kolmogorov-Smirnov sobre los residuos

prueba_KS_Lillie <- lillie.test(resid(modelo_anova))
print(prueba_KS_Lillie)
## 
##  Lilliefors (Kolmogorov-Smirnov) normality test
## 
## data:  resid(modelo_anova)
## D = 0.033057, p-value = 0.05045

H0: SI se cumple el supuesto de Normalidad.

H1: NO se cumple el supuesto de Normalidad.

Como el p valor (0,05045) es mayor que 0,05 no se rechaza la hipotesis nula, por lo tanto hay normalidad.

Homocedasticidad. Prueba de Levene

Considero para esta prueba los valores absolutos de los residuos

prueba_levene <- leveneTest(modelo_anova)
print(prueba_levene)
## Levene's Test for Homogeneity of Variance (center = median)
##        Df F value Pr(>F)
## group   5  0.7071 0.6182
##       744

Como el p-valor (0.6182) es mayor que 0,05, no se rechaza la hipotesis nula, por lo tanto se cumple el supuesto de homocedasticidad.

Prueba t para insecticida ya que esta presenta dos niveles.

prueba_t_insecticida <- t.test(diferencia_diametro ~ insecticida, data = citricos)
print(prueba_t_insecticida)
## 
##  Welch Two Sample t-test
## 
## data:  diferencia_diametro by insecticida
## t = 1.32, df = 595.09, p-value = 0.1873
## alternative hypothesis: true difference in means between group No and group Si is not equal to 0
## 95 percent confidence interval:
##  -0.3842748  1.9596920
## sample estimates:
## mean in group No mean in group Si 
##         7.457348         6.669639

Para fertilizantes que presenta tres niveles no puedo se puede realizar una Prueba t.

Respuesta b.

H0: el tratamiento con insecticida fue efectivo

H1: el tratamiento con insecticida no fue efectivo

Como el valor de p (0,1873)es mayor que 0,05 no rechazo la hipotesis nula, por lo tanto el tratamiento fue efectivo.

7. Asociación entre variables categóricas (chi-cuadrado)

Respuesta a. Tabla de contingencia

tabla_contingencia <- table(citricos$variedad, citricos$color_desc)
tabla_contingencia
##             
##              Amarillo pálido Naranja claro Naranja intenso Verde amarillento
##   Clemenules              47            40              20                32
##   Criolla                 45            37              29                22
##   Marisol                 44            35              22                34
##   Nova                    43            38              17                37
##   Okitsu                  46            42              24                25
##             
##              Verde completo
##   Clemenules             11
##   Criolla                17
##   Marisol                15
##   Nova                   15
##   Okitsu                 13

Prueba de chi-cuadrado.

H0: La variedad de la mandarina y el color de la fruta son independientes (no hay asociación).

H1: La variedad de la mandarina y el color de la fruta son dependientes (existe asociación).

res_chi <- chisq.test(tabla_contingencia)
res_chi
## 
##  Pearson's Chi-squared test
## 
## data:  tabla_contingencia
## X-squared = 11.339, df = 16, p-value = 0.7881

Respuesta b.

Como el pvalor (0,7881) es mayor que 0,05, no se rechaza H0, por lo tanto, No hay evidencia suficiente para concluir que existe una asociación. El color y la variedad son independientes.

El color final del fruto no está determinado por la variedad. La finca debería buscar factores ambientales o de manejo (como el tiempo de cosecha, la luz solar o el clima) como posibles causas de la variación