# Establecer directorio de trabajo
setwd("C:/OSCAR/RESPALDO CESAR/OSCAR/CURSOS/R DGTIC OCT 2025/a4")
getwd()
## [1] "C:/OSCAR/RESPALDO CESAR/OSCAR/CURSOS/R DGTIC OCT 2025/a4"
# Paquetes a utilizar
library("tidyverse")
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.5
## ✔ forcats 1.0.1 ✔ stringr 1.5.2
## ✔ ggplot2 4.0.0 ✔ 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()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library("stringr")
library("dplyr")
library("forcats")
library("janitor")
##
## Adjuntando el paquete: 'janitor'
##
## The following objects are masked from 'package:stats':
##
## chisq.test, fisher.test
library("lubridate")
library("graphics")
library("ggplot2")
# Se utilizará el archivo a4_iris.csv para el análisis
# Para leer archivos externos, importacion de datos. Se usa clean_names para cambiar el punto por guión bajo en los nombres de las variables
data_iris <- read.csv("C:/OSCAR/RESPALDO CESAR/OSCAR/CURSOS/R DGTIC OCT 2025/a4/a4_iris.csv", header=TRUE, sep=",")
data_iris <- clean_names(data_iris)
Se hizo previamente el análisis EDA del archivo Iris y encontramos los siguientes resultados:
# Se hacen agrupaciones por especie (variety) para calcular los promedios
data_iris %>%
group_by(variety) %>%
summarise(
sep_len_media = mean(sepal_length),
sep_wid_media = mean(sepal_width),
pet_len_media = mean(petal_length),
pet_wid_media = mean(petal_width)
) %>%
arrange(variety)
## # A tibble: 3 × 5
## variety sep_len_media sep_wid_media pet_len_media pet_wid_media
## <chr> <dbl> <dbl> <dbl> <dbl>
## 1 Setosa 5.01 3.43 1.46 0.246
## 2 Versicolor 5.94 2.77 4.26 1.33
## 3 Virginica 6.59 2.97 5.55 2.03
data_iris %>%
group_by(variety) %>%
summarise(
sep_len_var = var(sepal_length),
sep_wid_var = var(sepal_width),
pet_len_var = var(petal_length),
pet_wid_var = var(petal_width)
) %>%
arrange(variety)
## # A tibble: 3 × 5
## variety sep_len_var sep_wid_var pet_len_var pet_wid_var
## <chr> <dbl> <dbl> <dbl> <dbl>
## 1 Setosa 0.124 0.144 0.0302 0.0111
## 2 Versicolor 0.266 0.0985 0.221 0.0391
## 3 Virginica 0.404 0.104 0.305 0.0754
# Grafica de dispersion del sepalo
ggplot(data_iris, aes(x = sepal_length, y = sepal_width, color = variety)) +
geom_point(alpha = 0.6, size = 3) +
scale_color_manual(
values=c("red","green","blue"))+
labs(title = "Longitud vs Ancho",
subtitle = "Sépalo",
x = "Longitud",
y = "Ancho",
color = "Variedad") +
theme_classic()
La variedad setosa está claramente identificada, pero versicolor y virginica no muestran una diversificación entre sus elementos. Procedemos a hacer una prueba de hipótesis sobre las medias del ancho del sepalo en estas dos variedades.
H0: Media Versicolor = Media Virginica
Ha: Media Versicolor <> Media Virginica (Prueba bilateral)
Significancia: alfa = 0.05
Estadístico de Prueba
Valores criticos para la región y regla de rechazo
# Prueba de hipotesis para la media de dos grupos independientes
# Promedios y varianzas de la variedad versicolor -> 1 y virginica -> 2
media_1 <- 2.77
media_1
## [1] 2.77
media_2 <- 2.974
media_2
## [1] 2.974
scuad_1 <- 0.0985
scuad_1
## [1] 0.0985
scuad_2 <- 0.104
scuad_2
## [1] 0.104
# Tamanio de las muestras
n1 <- 50
n2 <- 50
# Desviacion estándar ponderada
sp <- sqrt(((n1-1)*scuad_1 + (n2-1)*scuad_2)/(n1 + n2 - 2))
# Estadistico de prueba T
T <- (media_1 - media_2)/(sp*sqrt(1/n1 + 1/n2))
T
## [1] -3.205551
# Valor crítico de t bilateral
t_crit <- qt(0.975, df = 98)
t_crit
## [1] 1.984467
# P value bilateral
pvalor <- 2*pt(T,98)
pvalor
## [1] 0.001820301
## Decisión
if (T < -t_crit) {
decision <- "Rechazamos H0"
} else {
decision <- "No rechazamos H0"
}
decision
## [1] "Rechazamos H0"
Conclusión: Rechazamos la hipótesis nula H0 con una significancia del 0.05, podemos decir que existe evidencia estadística suficiente para decir que las medias del ancho del sepalo (sepal_width) son diferentes.