#Trabajo Practico N 2 Modulo 5.
#Estadistica Parametrica y No parametrica
##Cultivo de Citricos
#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)
citricos <- read_excel("citricos.xlsx")
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>
num_columnas <- ncol(citricos)
print(paste("El número de columnas es:", num_columnas))
## [1] "El número de columnas es: 17"
num_filas <- nrow(citricos)
print(paste("El número de filas es:", num_filas))
## [1] "El número de filas es: 750"
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
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
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")
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")
media_brix <- mean(citricos$contenido_brix)
media_brix
## [1] 10.60652
qqnorm(citricos$contenido_brix, pch = 5)
qqline(citricos$contenido_brix, col = "yellow")
shapiro.test(citricos$contenido_brix)
##
## Shapiro-Wilk normality test
##
## data: citricos$contenido_brix
## W = 0.98193, p-value = 5.368e-08
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
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
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
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
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
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
shapiro.test(resid(modelo_anova))
##
## Shapiro-Wilk normality test
##
## data: resid(modelo_anova)
## W = 0.9843, p-value = 3.346e-07
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
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
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
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
# 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
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
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
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
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
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
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
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