#EJERCICIO 1
# Cargar el dataset
data("CO2")

# Calculp
iqr_ppm <- IQR(CO2$conc)

# Conversión
iqr_mL_L <- iqr_ppm * 0.001

# Resuktado
iqr_mL_L
## [1] 0.5
#EJERCICIO 2
# Marcas de clase
marcas <- c(0.321, 0.324, 0.327, 0.330, 0.333, 0.336)

# Amplitud de clase
amplitud <- diff(marcas[1:2])
amplitud
## [1] 0.003
# Intervalos
lim_inf <- marcas - amplitud/2
lim_sup <- marcas + amplitud/2
intervalos <- data.frame(Limite_Inferior = lim_inf,
                         Limite_Superior = lim_sup,
                         Marca = marcas)

# Calculo Q1 y Q3
Q1 <- quantile(marcas, 0.25)
Q3 <- quantile(marcas, 0.75)

# Rango intercuartil
IQR_val <- Q3 - Q1

# Mostrar resultados
intervalos
##   Limite_Inferior Limite_Superior Marca
## 1          0.3195          0.3225 0.321
## 2          0.3225          0.3255 0.324
## 3          0.3255          0.3285 0.327
## 4          0.3285          0.3315 0.330
## 5          0.3315          0.3345 0.333
## 6          0.3345          0.3375 0.336
IQR_val
##    75% 
## 0.0075
#EJERCICIO 3
# Carga de datos
data("iris")

n <- length(iris$Petal.Width)

# Regla de Sturges
k <- 1 + log2(n)

# Redondear al entero más cercano
round(k)
## [1] 8
#EJERCICIO 4
# Carga del dataset
data("CO2")

range(CO2$conc)
## [1]   95 1000
# Rango total
diff(range(CO2$conc))
## [1] 905
# Medidas de dispersión
summary(CO2$conc)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##      95     175     350     435     675    1000
IQR(CO2$conc)
## [1] 500
sd(CO2$conc)
## [1] 295.9241
#EJERCICIO 5
# Cargar dataset
data("airquality")

# Contar frecuencia de cada día
table(airquality$Day)
## 
##  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 
##  5  5  5  5  5  5  5  5  5  5  5  5  5  5  5  5  5  5  5  5  5  5  5  5  5  5 
## 27 28 29 30 31 
##  5  5  5  5  3
# Identificar el día con menor número de mediciones
which.min(table(airquality$Day))
## 31 
## 31
#EJERCICIO 6
# Cargar dataset
data("ChickWeight")

# Extraer la variable de peso
x <- ChickWeight$weight

# Ajustar parámetros de la distribución lognormal
fit_meanlog <- mean(log(x))
fit_sdlog   <- sd(log(x))

# Probabilidad de estar entre 50 y 100 gramos
p <- plnorm(100, meanlog = fit_meanlog, sdlog = fit_sdlog) -
  plnorm(50, meanlog = fit_meanlog, sdlog = fit_sdlog)

# Frecuencia esperada absoluta
freq_esperada <- p * length(x)

freq_esperada
## [1] 214.7679
#EJERCICIO 7
# Cargar dataset chickwts
data("chickwts")

# Frecuencia en la muestra por tipo de alimento
tabla_muestra <- table(chickwts$feed)

# Tamaño de la muestra
n_muestra <- length(chickwts$feed)

# Tamaño de la población total
N_poblacion <- 1420

# Calcular frecuencias esperadas en la población
frecuencias_poblacion <- round((tabla_muestra / n_muestra) * N_poblacion)

# Mostrar resultados
tabla_muestra
## 
##    casein horsebean   linseed  meatmeal   soybean sunflower 
##        12        10        12        11        14        12
frecuencias_poblacion
## 
##    casein horsebean   linseed  meatmeal   soybean sunflower 
##       240       200       240       220       280       240
#EJERCICIO 8
# Cargar dataset rivers
data("rivers")

# Calcular la media
media <- mean(rivers)

# Estimar parámetro 
lambda <- 1 / media

# Mostrar resultado con 5 decimales
round(lambda, 5)
## [1] 0.00169
#EJERCICIO 9
# Cargar dataset
data("airquality")

# Contar valores nulos
sum(is.na(airquality$Ozone))
## [1] 37
#EJERCICIO 10 
# Datos de la muestra
n <- 26              
media <- 22          
s <- 10              

#EJERCICIO 12
# Carga de dataset
data("ChickWeight")

# Calculo Fo
frec_observada <- sum(ChickWeight$weight >= 50 & ChickWeight$weight <= 100)

frec_observada
## [1] 199
#EJERCICIO 13
# Cargar dataset iris
data("iris")

# Frecuencia absoluta por especie
table(iris$Species)
## 
##     setosa versicolor  virginica 
##         50         50         50
# Extraccion 
table(iris$Species)["setosa"]
## setosa 
##     50
#EJERCICIO 14
# Nivel de significancia
alpha <- 0.05

# Grados de libertad
df <- (4 - 1) * (2 - 1)

# Umbral crítico
umbral_critico <- qchisq(1 - alpha, df = df)

# Mostrar resultado con 5 decimales
round(umbral_critico, 5)
## [1] 7.81473
#EJERCICIO 15
# Cargar dataset
data("rivers")

# Calcular cuántos ríos están entre 400 y 500 millas
freq_observada <- sum(rivers >= 400 & rivers <= 500)

# Total de ríos en el dataset
n_total <- length(rivers)

# Probabilidad de que un río esté en ese rango
p <- freq_observada / n_total

# Frecuencia esperada en una muestra de 100 ríos
freq_esperada <- round(p * 100)

# Mostrar resultados
freq_observada
## [1] 20
n_total
## [1] 141
p
## [1] 0.141844
freq_esperada
## [1] 14