<!DOCTYPE html>
install.packages("readxl")
## Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.4'
## (as 'lib' is unspecified)
install.packages("summarytools")
## Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.4'
## (as 'lib' is unspecified)
install.packages("BSDA")
## Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.4'
## (as 'lib' is unspecified)
install.packages("EnvStats")
## Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.4'
## (as 'lib' is unspecified)
install.packages("tidyverse")
## Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.4'
## (as 'lib' is unspecified)
library(readxl)
library(summarytools)
## Warning in fun(libname, pkgname): couldn't connect to display ":0"
## system might not have X11 capabilities; in case of errors when using dfSummary(), set st_options(use.x11 = FALSE)
library(BSDA)
## Loading required package: lattice
##
## Attaching package: 'BSDA'
## The following object is masked from 'package:datasets':
##
## Orange
library(EnvStats)
##
## Attaching package: 'EnvStats'
## The following objects are masked from 'package:stats':
##
## predict, predict.lm
## The following object is masked from 'package:base':
##
## print.default
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.2.1
## ✔ lubridate 1.9.4 ✔ tidyr 1.3.1
## ✔ purrr 1.0.4
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ✖ tibble::view() masks summarytools::view()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
st_options(lang = "es")
datos <- read_excel("PLANILLA.xlsx")
datos2 <- read_excel("planilla hoja 2.xlsx")
proyecto <- datos %>%
rename(VARIEDAD = "Variedad",
NUMERO = "Nª de Frutos",
PESO = "Peso (gr.)",
DIAMETRO = "Diametro Ec.",
ESTADO = "Estado S.",
COLOR = "Color"
)
PESO
data(proyecto)
## Warning in data(proyecto): data set 'proyecto' not found
proyecto
with(proyecto, stby(PESO, VARIEDAD, descr, stats= "common"))
## Estadísticas descriptivas
## PESO por VARIEDAD
## Data frame: proyecto
## N: 60
##
## Clementina Criolla
## ---------------- ------------ ---------
## Media 165.73 99.87
## Dev.std. 33.86 17.25
## Min 107.00 67.00
## Mediana 164.00 96.50
## Max 231.00 140.00
## Num.Válido 30.00 30.00
## N 30.00 30.00
## Pct.Válido 100.00 100.00
ggplot(proyecto, aes(x = VARIEDAD, y = PESO, fill = VARIEDAD)) +
geom_boxplot() +
stat_summary(fun = mean, geom = "point", shape = 20, size = 1, color = "black") + # Agrega punto de la media
labs(
title = "Comparación de peso entre variedades de mandarinas",
x = "Variedades",
y = "Peso (gr.)"
) +
theme_minimal() +
scale_fill_manual(values = c("red", "orange")) +
theme(legend.position = "none")
#FILTRAR CADA GRUPO
peso_clementina <- proyecto$PESO[proyecto$VARIEDAD == "Clementina"]
peso_criolla <- proyecto$PESO[proyecto$VARIEDAD == "Criolla"]
length(peso_clementina)
## [1] 30
length(peso_criolla)
## [1] 30
prueba F HO: P. CLEMENTINA = P. CRIOLLA HI: P. CLEMENTINA =/ P. CRIOLLA
var.test(peso_clementina, peso_criolla, alternative = "two.sided", conf.level = 0.95)
##
## F test to compare two variances
##
## data: peso_clementina and peso_criolla
## F = 3.8533, num df = 29, denom df = 29, p-value = 0.0005054
## alternative hypothesis: true ratio of variances is not equal to 1
## 95 percent confidence interval:
## 1.834016 8.095682
## sample estimates:
## ratio of variances
## 3.853259
H0:μClementina ≤ μCriolla. H1:μClementina > μCriolla
t.test(peso_clementina, peso_criolla,
alternative = "greater",
var.equal = FALSE,
conf.level = 0.95)
##
## Welch Two Sample t-test
##
## data: peso_clementina and peso_criolla
## t = 9.4944, df = 43.102, p-value = 1.987e-12
## alternative hypothesis: true difference in means is greater than 0
## 95 percent confidence interval:
## 54.20496 Inf
## sample estimates:
## mean of x mean of y
## 165.73333 99.86667
DIAMETRO
diametros <- proyecto %>%
group_by(VARIEDAD) %>%
summarise(Media = mean(DIAMETRO, na.rm = TRUE),
SD = sd(DIAMETRO, na.rm = TRUE))
ggplot(diametros, aes(x = VARIEDAD, y = Media)) +
geom_bar(stat = "identity", fill = "steelblue") +
labs(title = "Diámetro medio por variedad",
y = "Diámetro (mm)", x = "Variedades") +
theme_minimal() +
scale_y_continuous(breaks = seq(0, max(diametros$Media) + 10, by = 5))
diametro_clementina <- proyecto$DIAMETRO[proyecto$VARIEDAD == "Clementina"]
diametro_criolla <- proyecto$DIAMETRO[proyecto$VARIEDAD == "Criolla"]
var.test(diametro_clementina, diametro_criolla,
alternative = "two.sided",
conf.level = 0.95)
##
## F test to compare two variances
##
## data: diametro_clementina and diametro_criolla
## F = 1.5966, num df = 29, denom df = 29, p-value = 0.2137
## alternative hypothesis: true ratio of variances is not equal to 1
## 95 percent confidence interval:
## 0.7599064 3.3543662
## sample estimates:
## ratio of variances
## 1.59656
H₀: diámetro Clementina ≤ diámetro Criolla H₁: diámetro Clementina > diámetro Criolla
t.test(diametro_clementina, diametro_criolla,
alternative = "greater",
var.equal = TRUE,
conf.level = 0.95)
##
## Two Sample t-test
##
## data: diametro_clementina and diametro_criolla
## t = 8.3418, df = 58, p-value = 8.21e-12
## alternative hypothesis: true difference in means is greater than 0
## 95 percent confidence interval:
## 8.289359 Inf
## sample estimates:
## mean of x mean of y
## 38.83333 28.46667
tabla_estado <- table(proyecto$VARIEDAD, proyecto$ESTADO)
tabla_estado
##
## 1 2 3
## Clementina 28 2 0
## Criolla 19 8 3
#Esta prueba contrasta:
H₀ (nula): No hay relación entre la variedad y el estado sanitario (son independientes).
H₁ (alternativa): Hay relación entre la variedad y el estado sanitario (no son independientes).
chisq.test(tabla_estado)
## Warning in chisq.test(tabla_estado): Chi-squared approximation may be incorrect
##
## Pearson's Chi-squared test
##
## data: tabla_estado
## X-squared = 8.3234, df = 2, p-value = 0.01558
#DEBIDO A QUE LOS VALORES SON MENORES A 5
fisher.test(tabla_estado)
##
## Fisher's Exact Test for Count Data
##
## data: tabla_estado
## p-value = 0.01749
## alternative hypothesis: two.sided
ESTADO SANITARIO 1)
# Asegurarse de que la categoría "3" con variedad "Criolla" exista (aunque sin conteo)
proyecto <- proyecto %>%
add_row(ESTADO = 3, VARIEDAD = "Criolla")
# Crear un data frame con todas las combinaciones posibles
variedades <- c("Clementina", "Criolla")
estados <- c(0, 1, 2, 3)
combinaciones <- expand.grid(ESTADO = estados, VARIEDAD = variedades)
# Contar las combinaciones reales en el dataset original
conteos <- proyecto %>%
count(ESTADO, VARIEDAD)
# Unir con las combinaciones para forzar que existan todas
datos_completos <- combinaciones %>%
left_join(conteos, by = c("ESTADO", "VARIEDAD")) %>%
mutate(n = ifelse(is.na(n), 0, n)) # Rellenar con 0 donde no hay datos
# Graficar
ggplot(datos_completos, aes(x = factor(ESTADO), y = n, fill = VARIEDAD)) +
geom_bar(stat = "identity", position = position_dodge(preserve = "single")) +
theme_minimal() +
labs(
title = "Distribución del estado sanitario por variedad",
y = "Cantidad de mandarinas",
x = "ESTADO"
) +
scale_x_discrete(limits = c("0", "1", "2", "3")) +
scale_y_continuous(
breaks = seq(0, 30, by = 2),
limits = c(0, 30)
)
datos_filtrados <- subset(proyecto, VARIEDAD %in% c("Clementina", "Criolla"))
tabla_frecuencia <- table(Variedades = datos_filtrados$VARIEDAD, Estado_Sanitario = datos_filtrados$ESTADO)
# Mostrar la tabla de frecuencias
print("Tabla de frecuencia absoluta:")
## [1] "Tabla de frecuencia absoluta:"
print(tabla_frecuencia)
## Estado_Sanitario
## Variedades 1 2 3
## Clementina 28 2 0
## Criolla 19 8 4
# Mostrar la tabla de porcentajes por variedad
print("Tabla de frecuencia relativa (%):")
## [1] "Tabla de frecuencia relativa (%):"
tabla_estado <- table(proyecto$VARIEDAD, proyecto$ESTADO)
tabla_estado
##
## 1 2 3
## Clementina 28 2 0
## Criolla 19 8 4
#Esta prueba contrasta:
H₀ (nula): No hay relación entre la variedad y el estado sanitario (son independientes).
H₁ (alternativa): Hay relación entre la variedad y el estado sanitario (no son independientes).
chisq.test(tabla_estado)
## Warning in chisq.test(tabla_estado): Chi-squared approximation may be incorrect
##
## Pearson's Chi-squared test
##
## data: tabla_estado
## X-squared = 9.3095, df = 2, p-value = 0.009516
#DEBIDO A QUE LOS VALORES SON MENORES A 5
fisher.test(tabla_estado)
##
## Fisher's Exact Test for Count Data
##
## data: tabla_estado
## p-value = 0.006532
## alternative hypothesis: two.sided
COLOR
tabla <- table(proyecto$VARIEDAD, proyecto$COLOR)
# Convertir a data frame
colores <- as.data.frame.matrix(tabla)
# Renombrar las filas
rownames(colores) <- c("Criolla", "Clementina")
# Agregar columna de totales por fila
colores$Total <- rowSums(colores)
# Agregar fila de totales por columna
totales <- colSums(colores)
colores <- rbind(colores, Total = totales)
# Ver tabla final
print(colores)
## 1 2 3 4 Total
## Criolla 8 9 7 6 30
## Clementina 10 8 11 1 30
## Total 18 17 18 7 60
PARA TRABAJAR CON ANALISIS
# Paso 1: Crear tabla de contingencia
tabla <- table(proyecto$VARIEDAD, proyecto$COLOR)
print(tabla)
##
## 1 2 3 4
## Clementina 8 9 7 6
## Criolla 10 8 11 1
# Paso 2: Aplicar prueba chi-cuadrado
resultado <- chisq.test(tabla)
## Warning in chisq.test(tabla): Chi-squared approximation may be incorrect
# Ver resultados principales
print(resultado)
##
## Results of Hypothesis Test
## --------------------------
##
## Alternative Hypothesis:
##
## Test Name: Pearson's Chi-squared test
##
## Data: tabla
##
## Test Statistic: X-squared = 4.741363
##
## Test Statistic Parameter: df = 3
##
## P-value: 0.1917454
# Ver residuos esperados y estandarizados
print("Valores esperados:")
## [1] "Valores esperados:"
print(resultado$expected)
##
## 1 2 3 4
## Clementina 9 8.5 9 3.5
## Criolla 9 8.5 9 3.5
print("Residuos estandarizados:")
## [1] "Residuos estandarizados:"
print(resultado$stdres)
##
## 1 2 3 4
## Clementina -0.5634362 0.2864949 -1.1268723 2.0107528
## Criolla 0.5634362 -0.2864949 1.1268723 -2.0107528
HOJA 2
% DE JUGO
# Reemplaza 'Variedad' y '%Jugo' por los nombres reales de las columnas si son diferentes
porcentajejugo<- datos2 %>%
filter(VARIEDAD %in% c("Criolla", "Clementina")) %>%
group_by(VARIEDAD) %>%
summarise(Promedio_Jugo = mean(`%JUGO`, na.rm = TRUE))
# Calcular porcentaje y posición de etiquetas
porcentajejugo <- porcentajejugo %>%
mutate(porcentaje = Promedio_Jugo / sum(Promedio_Jugo) * 100,
etiqueta = paste0(round(porcentaje, 1), "%"))
# Gráfico con etiquetas
ggplot(porcentajejugo, aes(x = "", y = Promedio_Jugo, fill = VARIEDAD)) +
geom_bar(stat = "identity", width = 1) +
coord_polar("y") +
geom_text(aes(label = etiqueta),
position = position_stack(vjust = 0.5)) +
labs(title = "Comparación promedia del % de jugo: Criolla vs Clementina",
fill = "Variedad") +
theme_void()