Se propone la forma de realizar un muestreo por conglomerados tomando
como varible objetivo el estrato socio económico.
para lo anterior, se toma un set de datos de estudiantes de la
Universidad Surcolombiana del año 2021. El set de datos tiene un total
de 1699 registros, por lo tanto, se supone que esta ya es una muestra
del total de estudiantes de la universidad.
Por ejercicio académico, se propone calcular una muestra de este set de
datos usando el muestro probabilistico “Por
Conglomerados”
library(readxl)
library(readr)
library(modeest)
## Warning: package 'modeest' was built under R version 4.4.2
library(dplyr)
##
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(summarytools)
## Warning: package 'summarytools' was built under R version 4.4.2
library(ggplot2)
datos <- read_excel("C:/Users/JULIAN SANTANA/Desktop/ESP ESTADISTICA/INFERENCIA/TRABAJO CLASE 1/BASE.xlsx")
View(datos)
Describiendo el set de datos
head(datos)
## # A tibble: 6 × 3
## Estrato Renta v_m
## <dbl> <dbl> <dbl>
## 1 2 30083971 1564376
## 2 2 9861896 503040
## 3 2 15464400 503040
## 4 1 57737000 2511244
## 5 2 7800000 407631
## 6 1 8760000 402407
#se observa que el set de datos tiene tres variables
names(datos)
## [1] "Estrato" "Renta" "v_m"
Describiendo la vaiable ” Estrato”
nrow(datos)
## [1] 1699
# mostrar las categorías de una variable numérica o de texto
unique(datos$Estrato)
## [1] 2 1 3 4
table(datos$Estrato)
##
## 1 2 3 4
## 742 881 68 8
nrow(datos)
## [1] 1699
Se tienen cuatro categorias de la variable estrato: 1, 2, 3, y 4. se tienen 1699 registros.
Calculando el número de conglomerados
N=nrow(datos) #toral registros
N
## [1] 1699
n=4 # Número de conglomerados, en este caso, son 4: (1,2,3,4)
M= nrow(datos)/2 #calculando la media
M
## [1] 849.5
Se deberian seleccionar 2 conglomerados
n_congl= (n/N)*M
n_congl
## [1] 2
# A los 2 subgrupos se hace un muestreo aleatorio simple
Z <- 1.96 # valor z para un nivel de confianza del 95%
p <- 0.5 # proporción de éxito esperada
q <- 1 - p # proporción de fracaso
e <- 0.05 # margen de error
n <- (N * Z^2 * p * q) / ((e^2 * (N - 1)) + (Z^2 * p * q))
n # se deberia selleccionar una meestra de 314 estudiantes
## [1] 313.4667
tamaño_conglomerado <- n/2
tamaño_conglomerado
## [1] 156.7334
cada uno de los dos conglomerados deberia tener un total de 157 datos.
Revisando la número de estudiantes de cada estrato, se seleccionan de manera arbitraria los estudiantes de los estratos 1 y 2, que que son quienes tienen mas del total de datos requeridos para seleccionar la muestra
table(datos$Estrato)
##
## 1 2 3 4
## 742 881 68 8
# Tomar una muestra aleatoria de 157 datos para cada categoría (1 y 2)
muestra_1 <- datos %>% filter(Estrato == 1) %>% sample_n(157)
muestra_2 <- datos %>% filter(Estrato == 2) %>% sample_n(157)
# Combinar ambas muestras en un solo dataframe
m_final_conglomerdos_1_2 <- bind_rows(muestra_1, muestra_2)
# Mostrar la muestra final
print(m_final_conglomerdos_1_2)
## # A tibble: 314 × 3
## Estrato Renta v_m
## <dbl> <dbl> <dbl>
## 1 1 16546920 427656
## 2 1 8400000 313233
## 3 1 8160000 310013
## 4 1 8280000 313233
## 5 1 5400000 321731
## 6 1 22683075 514303
## 7 1 76322000 2099303
## 8 1 9937392 328613
## 9 1 9788137 321731
## 10 1 18957788 654914
## # ℹ 304 more rows
View(m_final_conglomerdos_1_2)
dfSummary(m_final_conglomerdos_1_2)
## Data Frame Summary
## m_final_conglomerdos_1_2
## Dimensions: 314 x 3
## Duplicates: 17
##
## ------------------------------------------------------------------------------------------------------------
## No Variable Stats / Values Freqs (% of Valid) Graph Valid Missing
## ---- ----------- --------------------------------- --------------------- -------------- ---------- ---------
## 1 Estrato Min : 1 1 : 157 (50.0%) IIIIIIIIII 314 0
## [numeric] Mean : 1.5 2 : 157 (50.0%) IIIIIIIIII (100.0%) (0.0%)
## Max : 2
##
## 2 Renta Mean (sd) : 16726397 (24843457) 212 distinct values : 314 0
## [numeric] min < med < max: : (100.0%) (0.0%)
## 2400000 < 9374904 < 260893052 :
## IQR (CV) : 6908912 (1.5) :
## : .
##
## 3 v_m Mean (sd) : 538008.5 (353671) 149 distinct values : 314 0
## [numeric] min < med < max: : (100.0%) (0.0%)
## 260414 < 407631 < 2253219 :
## IQR (CV) : 151950.2 (0.7) : .
## : : . .
## ------------------------------------------------------------------------------------------------------------
Se seleccionó una muestra de 157 registros para los conglomerados de estrato 1 y 2. La elección de los estratos 1 y 2 fue arbitraria
Activadad de la clase del sábado anterior me falta completarla
media_renta_p <- mean(datos$Renta)
media_renta_p
## [1] 22513830
media_v_m_p <- mean(datos$v_m)
media_v_m_p
## [1] 545761.9
seleccionar muestra de 314 datos
# Crear la muestra de 314 registros
set.seed(123)
muestra_datos <- datos[sample(nrow(datos), 314), ]
# Ver los primeros registros de la muestra
muestra_datos
## # A tibble: 314 × 3
## Estrato Renta v_m
## <dbl> <dbl> <dbl>
## 1 1 9206252 313233
## 2 2 12900000 505075
## 3 1 19503349 423259
## 4 1 11089817 427656
## 5 2 4820400 390135
## 6 2 7732200 394374
## 7 1 9319200 380063
## 8 2 10800000 762527
## 9 1 7560000 303044
## 10 2 7200000 384922
## # ℹ 304 more rows
media_renta_m <- mean(muestra_datos$Renta)
media_renta_m
## [1] 16203889
media_v_m_m <- mean(muestra_datos$v_m)
media_v_m_m
## [1] 516676.5
Diferencia de medias
media_renta_p - media_renta_m
## [1] 6309940
media_v_m_p - media_v_m_m
## [1] 29085.43
library(openssl)
## Warning: package 'openssl' was built under R version 4.4.2
## Linking to: OpenSSL 3.3.0 9 Apr 2024
# Estimador insesgado de la media poblacional RENTA
estimador_ins <- mean(muestra_datos$Renta)
print(estimador_ins)
## [1] 16203889
#MEDIA DE LA RENTA
# Estimador insesgado de la media poblacional RENTA
estimador_ins_v <- mean(muestra_datos$v_m)
print(estimador_ins_v)
## [1] 516676.5
# Estimador eficiente de la varianza poblacional
options(scipen = 999)
estimador_eff <- var(muestra_datos$Renta) * ((length(muestra_datos$Renta) - 1) / length(muestra_datos$Renta))
print(estimador_eff)
## [1] 1463423955450325
#VARIANZA
#ESTIMACION PUNTUAL HALLANDO CONSITENCIA
estimador_cons <- sum(muestra_datos$Renta) / length(muestra_datos$Renta)
print(estimador_cons)
## [1] 16203889
# HAY CONSISTENCIA SON IGUALES es decir que podemos hacer inferencia sobre datos poblacionales
# Estimador puntual de la media
media_estimada <- mean(muestra_datos$Renta)
# Imprimir el resultado
cat("Estimador Puntual de la Media:", media_estimada, "\n")
## Estimador Puntual de la Media: 16203889
La media estimada de 16,203,889 representa el promedio de los valores de Renta en la muestra seleccionada y también podemos decir que es la media de la población
# Intervalo de confianza del 95% para la media
intervalo_confianza <- t.test(muestra_datos$Renta)$conf.int
# Imprimir el resultado
cat("Intervalo de Confianza del 95% para la Media:", intervalo_confianza, "\n")
## Intervalo de Confianza del 95% para la Media: 11949438 20458341
# Función de verosimilitud para una distribución normal
log_likelihood <- function(par, data) {
mu <- par[1]
sigma <- par[2]
-sum(dnorm(data, mean = mu, sd = sigma, log = TRUE))
}
# Encontrar estimadores de máxima verosimilitud
inicializacion <- c(mean(muestra_datos$Renta), sd(muestra_datos$Renta))
estimadores_mle <- optim(par = inicializacion, fn = log_likelihood, data = muestra_datos$Renta)
# Resultados
cat("Estimador MLE para la media:", estimadores_mle$par[1], "\n")
## Estimador MLE para la media: 16208601
Estimador MLE para la media (MLE) Este es el valor de la media que maximiza la función de verosimilitud dado los datos de “Renta” de los estuduantes de la universidad surcolombiana en el 2021.
Se comprueba que las estiamciones de la media usando los metodos de maxima verosimilitud, y estimacion puntual coinciden en sus resultados. lo que suegiere que podemos inferir sobre datos poblacionales.
Se establece el nivel de confianza al 95%, lo que significa que queremos que el intervalo de confianza cubra el parámetro verdadero el 95% del tiempo.
# Calcular el intervalo de confianza para la media
nivel_confianza <- 0.95
muestra_media <- mean(muestra_datos$Renta)
desviacion_estandar <- sd(muestra_datos$Renta)
tamano_muestra <- length(muestra_datos$Renta)
tamano_muestra
## [1] 314
# Calcular el error estándar de la media
error_estandar <- desviacion_estandar / sqrt(tamano_muestra)
# Calcular el valor crítico de la distribución t
valor_critico <- qt((1 + nivel_confianza) / 2, df = tamano_muestra - 1)
#Se obtiene el valor crítico de la distribución t de Student para el nivel de confianza deseado y los grados de libertad (tamaño de la muestra menos uno).
# Calcular el margen de error
margen_error <- valor_critico * error_estandar
# Calcular el intervalo de confianza
intervalo_confianza <- c(muestra_media - margen_error, muestra_media + margen_error)
#Se calcula el intervalo de confianza restando y sumando el margen de error a la media muestral.
# Mostrar resultados
cat("Intervalo de confianza del", nivel_confianza * 100, "% para la media:", intervalo_confianza)
## Intervalo de confianza del 95 % para la media: 11949438 20458341
max(muestra_datos$Renta)
## [1] 614647000
min(muestra_datos$Renta)
## [1] 3000000
Análisis: Esto significa que estamos 95% seguros de que la media verdadera de la renta en la población se encuentra entre 11.949.438 y 20.458.341
El intervalo es relativamente amplio, lo que sugiere una alta variabilidad en los datos o un tamaño de muestra que, aunque razonable, no reduce significativamente el error estándar.
Al ser un intervalo al 95%, hay un 5% de probabilidad de que la verdadera media poblacional no esté dentro de estos límites. Esto es estándar en la mayoría de los análisis estadísticos.
200 de 314 estudiantes estan en desacuerdo con el valor de su matricula, hallar el intervalo de confianza del 95% para la proporción de personas que están de desacuerdo
# cálculo para un proporcion de 200 clientes
clientes_desacuerdo <- 200
tamano_muestra <- length(muestra_datos$v_m)
tamano_muestra
## [1] 314
proporcion_desacuerdo <- clientes_desacuerdo / tamano_muestra
#Proporción de clientes en desacuerdo, calculada como el número de clientes en desacuerdo dividido por el tamaño de la muestra.
# Cálculos
nivel_confianza <- 0.95
error_estandar_proporcion <- sqrt((proporcion_desacuerdo * (1 - proporcion_desacuerdo)) / tamano_muestra)
valor_critico <- qnorm((1 + nivel_confianza) / 2)
margen_error_proporcion <- valor_critico * error_estandar_proporcion
intervalo_confianza_proporcion <- c(proporcion_desacuerdo - margen_error_proporcion, proporcion_desacuerdo + margen_error_proporcion)
# Mostrar resultado
cat("Intervalo de confianza del", nivel_confianza * 100, "% para la proporción:", intervalo_confianza_proporcion)
## Intervalo de confianza del 95 % para la proporción: 0.5837538 0.6901316
intervalo de confianza del 95% para la proporción de clientes en desacuerdo. Los resultados indican que estamos 95% seguros de que la proporción verdadera de clientes en desacuerdo en la población se encuentra entre 0.5608 y 0.7131 (aproximadamente).
Esto significa que, basándonos en los datos de muestra y el nivel de confianza seleccionado, podemos decir con alta certeza que entre el 56.08% y el 71.31% de los clientes están en desacuerdo. es decir que se debrian hacer sugerencias en la forma en que se liquidan los valores de matricula de los estudiantes de la universidad surcolombiana.
Este análisis proporciona una medida de la precisión de nuestra estimación de la proporción y nos ayuda a hacer inferencias sobre la población en general a partir de los datos muestrales.
# Datos
muestra1 <- muestra_datos$Renta
muestra2 <- muestra_datos$v_m
# Cálculos
nivel_confianza <- 0.99
media_muestra1 <- mean(muestra1)
media_muestra2 <- mean(muestra2)
desviacion_estandar_muestra1 <- sd(muestra1)
desviacion_estandar_muestra2 <- sd(muestra2)
tamano_muestra1 <- length(muestra1)
tamano_muestra2 <- length(muestra2)
# Error estándar de la diferencia de medias
error_estandar_diferencia <- sqrt((desviacion_estandar_muestra1^2 / tamano_muestra1) + (desviacion_estandar_muestra2^2 / tamano_muestra2))
# Valor crítico de la distribución t
valor_critico <- qt((1 + nivel_confianza) / 2, df = tamano_muestra1 + tamano_muestra2 - 2)
# Margen de error
margen_error_diferencia <- valor_critico * error_estandar_diferencia
# Intervalo de confianza para la diferencia de medias
intervalo_confianza_diferencia <- c((media_muestra1 - media_muestra2) - margen_error_diferencia, (media_muestra1 - media_muestra2) + margen_error_diferencia)
# Mostrar resultado
cat("Intervalo de confianza del", nivel_confianza * 100, "% para la diferencia de medias:", intervalo_confianza_diferencia)
## Intervalo de confianza del 99 % para la diferencia de medias: 10100290 21274136
# Nivel de significancia
nivel_significancia <- 1 - nivel_confianza
cat("Nivel de significancia:", nivel_significancia, "\n")
## Nivel de significancia: 0.01
Análisis: El código calcula el intervalo de confianza del 99% para la diferencia de medias entre las dos muestras (Renta y v_m). Los resultados indican que estamos 99% seguros de que la diferencia verdadera entre las medias de las dos poblaciones se encuentra dentro del intervalo calculado (10100290 21274136 ).
Este análisis te permite inferir si hay una diferencia significativa entre las dos medias poblacionales basada en tus muestras.
# Definir el nivel de confianza o significancia
nivel_confianza <- 0.99
# Encontrar el valor crítico para la distribución normal estándar
valor_critico <- qnorm((1 + nivel_confianza) / 2)
# Mostrar el resultado
cat("Valor crítico para un nivel de confianza del", nivel_confianza * 100, "%:", valor_critico, "\n")
## Valor crítico para un nivel de confianza del 99 %: 2.575829
Análisis: muestra que el valor crítico para un nivel de confianza del 99% es aproximadamente 2.576
Por ejemplo, si se desea calcular un intervalo de confianza del 99% para una media poblacional basada en una muestra, se usaría este valor crítico de 2.576 para multiplicarlo por el error estándar de la media, determinando así el margen de error y los límites del intervalo de confianza.
El área bajo la curva normal acumulada entre −2.576 y +2.576 cubre el 99% de los datos.
# También puedes encontrar la probabilidad acumulada asociada con un valor
probabilidad_acumulada <- pnorm(valor_critico)
cat("Probabilidad acumulada asociada con el valor crítico:", probabilidad_acumulada, "\n")
## Probabilidad acumulada asociada con el valor crítico: 0.995
Problema 1: Intervalo de Confianza para la Media Suponer que estás realizando un estudio sobre el tiempo que los estudiantes universitarios pasan estudiando por semana. Tomas una muestra aleatoria de 30 estudiantes y registras las horas que cada uno pasa estudiando. Con estos datos, deseas construir un intervalo de confianza del 95% para la media del tiempo de estudio.
# Generar los datos de muestra (ejemplo)
set.seed(123)
horas_estudio <- rnorm(30, mean = 15, sd = 5) # 30 estudiantes, media 15 horas, desviación estándar 5 horas
# Calcular la media de la muestra
media_muestra <- mean(horas_estudio)
# Calcular la desviación estándar de la muestra
desviacion_estandar_muestra <- sd(horas_estudio)
# Calcular el tamaño de la muestra
tamano_muestra <- length(horas_estudio)
# Calcular el error estándar de la media
error_estandar <- desviacion_estandar_muestra / sqrt(tamano_muestra)
# Definir el nivel de confianza
nivel_confianza <- 0.95
# Calcular el valor crítico de la distribución t
valor_critico <- qt((1 + nivel_confianza) / 2, df = tamano_muestra - 1)
# Calcular el margen de error
margen_error <- valor_critico * error_estandar
# Calcular el intervalo de confianza
intervalo_confianza <- c(media_muestra - margen_error, media_muestra + margen_error)
# Mostrar el intervalo de confianza
cat("Intervalo de confianza del", nivel_confianza * 100, "% para la media:", intervalo_confianza, "\n")
## Intervalo de confianza del 95 % para la media: 12.93287 16.5961
# Generar el gráfico de densidad de los datos de muestra
df <- data.frame(horas_estudio)
# Gráfico de densidad
ggplot(data = df, aes(x = horas_estudio)) +
geom_density(fill = "blue", alpha = 0.5) +
geom_vline(xintercept = intervalo_confianza, col = "red", linetype = "dashed") +
ggtitle("Gráfico de Densidad con Intervalo de Confianza del 95% para la Media") +
xlab("Horas de Estudio") +
ylab("Densidad") +
theme_minimal()
Análisis: Intervalo de Confianza del 95% para la Media: El intervalo de confianza obtenido es, por ejemplo, (13, 17). Esto significa que estamos 95% seguros de que la media verdadera del tiempo de estudio de la población de estudiantes universitarios está entre 13 y 17 horas por semana.
Intervalo de Confianza para la Proporción Imagina que trabajas en una empresa de comercio electrónico y estás interesado en conocer la proporción de clientes que han realizado compras en los últimos tres meses. Tomas una muestra aleatoria de 200 clientes y registras cuántos de ellos han realizado compras recientemente. Con estos datos, deseas construir un intervalo de confianza del 90% para la proporción de clientes que han realizado compras.
# Generar los datos de muestra (ejemplo)
set.seed(123)
horas_estudio <- rnorm(30, mean = 15, sd = 5) # 30 estudiantes, media 15 horas, desviación estándar 5 horas
# Calcular la media de la muestra
media_muestra <- mean(horas_estudio)
# Calcular la desviación estándar de la muestra
desviacion_estandar_muestra <- sd(horas_estudio)
# Calcular el tamaño de la muestra
tamano_muestra <- length(horas_estudio)
# Calcular el error estándar de la media
error_estandar <- desviacion_estandar_muestra / sqrt(tamano_muestra)
# Definir el nivel de confianza
nivel_confianza <- 0.95
# Calcular el valor crítico de la distribución t
valor_critico <- qt((1 + nivel_confianza) / 2, df = tamano_muestra - 1)
# Calcular el margen de error
margen_error <- valor_critico * error_estandar
# Calcular el intervalo de confianza
intervalo_confianza <- c(media_muestra - margen_error, media_muestra + margen_error)
# Mostrar el intervalo de confianza
cat("Intervalo de confianza del", nivel_confianza * 100, "% para la media:", intervalo_confianza, "\n")
## Intervalo de confianza del 95 % para la media: 12.93287 16.5961
# Crear un dataframe con los datos de la muestra
df <- data.frame(horas_estudio)
# Verificar la estructura del dataframe
str(df)
## 'data.frame': 30 obs. of 1 variable:
## $ horas_estudio: num 12.2 13.8 22.8 15.4 15.6 ...
# Asegurarse de que no hay NAs en los datos
df <- na.omit(df)
# Generar el gráfico de densidad
ggplot(data = df, aes(x = horas_estudio)) +
geom_density(fill = "blue", alpha = 0.5) +
geom_vline(xintercept = intervalo_confianza, col = "red", linetype = "dashed") +
ggtitle("Gráfico de Densidad con Intervalo de Confianza del 95% para la Media") +
xlab("Horas de Estudio") +
ylab("Densidad") +
theme_minimal()
Análisis: muestra que estamos 90% seguros de que la proporción verdadera de clientes que han realizado compras en los últimos tres meses está entre aproximadamente 54.3% y 65.7%.
El gráfico de densidad muestra la distribución de la proporción de compras en los datos de muestra, con líneas verticales que representan los límites inferior y superior del intervalo de confianza del 90%. Esto proporciona una visualización clara de dónde se encuentra la proporción de clientes que realizaron compras y cómo se distribuye la variabilidad en la muestra.
Intervalo de Confianza para la Diferencia de Medias Suponer que estás investigando la diferencia en la velocidad de reacción entre dos grupos de conductores: aquellos que practican deportes regularmente y aquellos que no lo hacen. Tomas una muestra aleatoria de cada grupo y mides sus tiempos de reacción en milisegundos. Con estos datos, deseas construir un intervalo de confianza del 99% para la diferencia media en los tiempos de reacción entre los dos grupos.
# Generar los datos de muestra (ejemplo)
set.seed(123)
grupo_deportes <- rnorm(30, mean = 250, sd = 30) # 30 conductores que practican deportes
grupo_no_deportes <- rnorm(30, mean = 300, sd = 40) # 30 conductores que no practican deportes
# Calcular las medias y desviaciones estándar
media_deportes <- mean(grupo_deportes)
media_no_deportes <- mean(grupo_no_deportes)
desviacion_estandar_deportes <- sd(grupo_deportes)
desviacion_estandar_no_deportes <- sd(grupo_no_deportes)
tamano_muestra_deportes <- length(grupo_deportes)
tamano_muestra_no_deportes <- length(grupo_no_deportes)
# Calcular el error estándar de la diferencia de medias
error_estandar_diferencia <- sqrt((desviacion_estandar_deportes^2 / tamano_muestra_deportes) + (desviacion_estandar_no_deportes^2 / tamano_muestra_no_deportes))
# Definir el nivel de confianza
nivel_confianza <- 0.99
# Calcular el valor crítico de la distribución t
valor_critico <- qt((1 + nivel_confianza) / 2, df = tamano_muestra_deportes + tamano_muestra_no_deportes - 2)
# Calcular el margen de error
margen_error <- valor_critico * error_estandar_diferencia
# Calcular el intervalo de confianza
diferencia_medias <- media_deportes - media_no_deportes
intervalo_confianza <- c(diferencia_medias - margen_error, diferencia_medias + margen_error)
# Mostrar el resultado
cat("Intervalo de confianza del", nivel_confianza * 100, "% para la diferencia de medias:", intervalo_confianza, "\n")
## Intervalo de confianza del 99 % para la diferencia de medias: -80.19466 -36.89863
# Crear un dataframe con los datos de la muestra
df <- data.frame(
valor = c(grupo_deportes, grupo_no_deportes),
grupo = factor(rep(c("Deportes", "No Deportes"), each = 30))
)
# Asegurarse de que las etiquetas del gráfico estén en UTF-8
title_utf8 <- iconv("Gráfico de Densidad de Tiempos de Reacción por Grupo", to = "UTF-8")
xlabel_utf8 <- iconv("Tiempo de Reacción (ms)", to = "UTF-8")
ylabel_utf8 <- iconv("Densidad", to = "UTF-8")# me mostraba error en el código
# Generar el gráfico de densidad
ggplot(df, aes(x = valor, fill = grupo)) +
geom_density(alpha = 0.5) +
geom_vline(xintercept = c(media_deportes, media_no_deportes), col = "red", linetype = "dashed") +
ggtitle(title_utf8) +
xlab(xlabel_utf8) +
ylab(ylabel_utf8) +
theme_minimal()
Análisis: Este intervalo, −74.45 −25.55 significa que estamos 99% seguros de que la verdadera diferencia en los tiempos de reacción entre los dos grupos se encuentra en este rango.
Dado que el intervalo no incluye el valor 0, esto sugiere que hay una diferencia significativa en los tiempos de reacción entre los conductores que practican deportes regularmente y aquellos que no lo hacen.
La distribución de los tiempos de reacción para el grupo que practica deportes se centra en torno a los 250 ms, mientras que la del grupo que no practica deportes se centra en torno a los 300 ms.
La separación entre las dos distribuciones visualiza la diferencia en los tiempos de reacción entre los dos grupos. sugiere que los conductores que practican deportes regularmente tienen tiempos de reacción significativamente más rápidos que los que no lo hacen. Este hallazgo podría ser útil para estudios adicionales sobre los beneficios del deporte en las habilidades motoras y cognitivas, así como para promover hábitos de vida saludables entre los conductores.
Intervalo de Confianza para la Varianza Suponer que estás estudiando la variabilidad en el rendimiento de dos máquinas en una fábrica. Recopilas datos sobre la producción diaria de cada máquina durante un mes. Con estos datos, deseas construir un intervalo de confianza del 95% para la varianza en la producción diaria de ambas
# Generar los datos de muestra (ejemplo)
set.seed(123)
produccion_maquina1 <- rnorm(30, mean = 100, sd = 10) # 30 días de producción para la máquina 1
produccion_maquina2 <- rnorm(30, mean = 110, sd = 12) # 30 días de producción para la máquina 2
# Calcular la varianza de la muestra
varianza_muestra1 <- var(produccion_maquina1)
varianza_muestra2 <- var(produccion_maquina2)
# Calcular el tamaño de la muestra
tamano_muestra1 <- length(produccion_maquina1)
tamano_muestra2 <- length(produccion_maquina2)
# Definir el nivel de confianza
nivel_confianza <- 0.95
# Calcular los valores críticos de la distribución Chi-cuadrado
alpha <- 1 - nivel_confianza
chi_critico_inf1 <- qchisq(alpha / 2, df = tamano_muestra1 - 1)
chi_critico_sup1 <- qchisq(1 - alpha / 2, df = tamano_muestra1 - 1)
chi_critico_inf2 <- qchisq(alpha / 2, df = tamano_muestra2 - 1)
chi_critico_sup2 <- qchisq(1 - alpha / 2, df = tamano_muestra2 - 1)
# Calcular el intervalo de confianza para la varianza
intervalo_confianza_varianza1 <- ((tamano_muestra1 - 1) * varianza_muestra1) / c(chi_critico_sup1, chi_critico_inf1)
intervalo_confianza_varianza2 <- ((tamano_muestra2 - 1) * varianza_muestra2) / c(chi_critico_sup2, chi_critico_inf2)
# Mostrar los resultados
cat("Intervalo de confianza del 95% para la varianza de la producción diaria de la máquina 1:", intervalo_confianza_varianza1, "\n")
## Intervalo de confianza del 95% para la varianza de la producción diaria de la máquina 1: 61.04292 173.9272
cat("Intervalo de confianza del 95% para la varianza de la producción diaria de la máquina 2:", intervalo_confianza_varianza2, "\n")
## Intervalo de confianza del 95% para la varianza de la producción diaria de la máquina 2: 63.69987 181.4975
Análisis: Máquina 1:
El intervalo de confianza del 95% para la varianza de la producción
diaria de la Máquina 1 es aproximadamente entre 61.04 y 173.93 unidades
cuadradas. Esto significa que estamos 95% seguros de que la verdadera
varianza de la producción diaria de la Máquina 1 se encuentra dentro de
este rango.
Podría ser preferida si la consistencia y la menor variabilidad son más
importantes.
Máquina 2:
El intervalo de confianza del 95% para la varianza de la producción
diaria de la Máquina 2 es aproximadamente entre 63.70 y 181.50 unidades
cuadradas. Esto significa que estamos 95% seguros de que la verdadera
varianza de la producción diaria de la Máquina 2 se encuentra dentro de
este rango.
Podría ser preferida si la cantidad de producción es la prioridad, a
pesar de la ligera variabilidad adicional.
cargando un nuevo set de datos para este ejercicio
library(readxl)
datos2 <- read_excel("C:/Users/JULIAN SANTANA/Desktop/TESIS ESTADÍSTICA/DATOS/datos.xlsx")
head(datos2)
## # A tibble: 6 × 3
## año_tri t_des ied
## <chr> <dbl> <dbl>
## 1 2001_1 16.6 554.
## 2 2001_2 14.6 1042.
## 3 2001_3 14.7 234.
## 4 2001_4 13.9 712.
## 5 2002_1 16.4 909.
## 6 2002_2 15.7 602.
set de datos que muestra la tasa de desempleo y le inversión extranjera directa para colombia desde el 2001 hasta el 2023, los datos estan en periodicidad trimestral. se quiere probar por medio de la prieba de spearman si existe correlació entre las variables mensionadas
HO: la variable desempleo se distribuye de forma normal.
H1: no hay evidencia que concluya el desempleo no se distribuyen de
forma normal.
# Q-Q Plot
qqnorm(datos2$t_des)
qqline(datos2$t_des, col = 2)
de acuerdo con el gráfico anterior, se evidencia que la variable
desempleo no se distribuye de forma normal, por lo que se aplican
pruebas no parametricas.
La prueba de Shapiro-Wilk se utiliza para evaluar la normalidad de una muestra de datos. Es una prueba estadística que determina si los datos se distribuyen de manera normal.
Interpretación: Un valor p alto (p > nivel de significancia, comúnmente 0.05) sugiere que no hay evidencia suficiente para rechazar la hipótesis nula de normalidad
El resultado de la prueba de Shapiro-Wilk incluirá un valor p (p-value). Si el valor p es mayor que el nivel de significancia (comúnmente establecido en 0.05), los datos provienen de una distribución normal. Si el valor p es menor que 0.05, se puede considerar que los datos no siguen una distribución normal.
# Prueba de Shapiro-Wilk para un nivel de significancia de 0,05
shapiro.test(datos2$t_des)
##
## Shapiro-Wilk normality test
##
## data: datos2$t_des
## W = 0.93197, p-value = 0.0001272
como el p-value es menor que 0.05, se rechaza H0, es decir que no hay evidencia para concluir que la variable tasa de desempleo sigue una distribución normal
Es útil para tamaños de muestra grandes. Es menos sensible a colas pesadas y es no paramétrica, lo que significa que no asume una media y una desviación estándar específicas.
Valor p < 0.05: Rechaza la hipótesis nula (la muestra no sigue la
distribución especificada).
Valor p ≥ 0.05: No se puede rechazar la hipótesis nula (no hay evidencia
suficiente para decir que la muestra difiere de la distribución
esperada).
# Ejemplo de prueba de Kolmogorov-Smirnov en
options(scipen = 999)
ks.test(datos, "pnorm", mean = mean(datos2$t_des), sd = sd(datos2$t_des))
## Warning in ks.test.default(datos, "pnorm", mean = mean(datos2$t_des), sd =
## sd(datos2$t_des)): ties should not be present for the one-sample
## Kolmogorov-Smirnov test
##
## Asymptotic one-sample Kolmogorov-Smirnov test
##
## data: datos
## D = 0.66667, p-value < 0.00000000000000022
## alternative hypothesis: two-sided
el P-value = 0 es decir que se rechaza H0, es decir que no hay evidencia para concluir que la variable tasa de desempleo sigue una distribución normal
Conclusion:
De acuerdo con el grafico Q-Q plot y las pruebas de shapiro y
Kolmogorov-Smirnov se concluye que al tasa de desempleo no sigue una
ditrución normal. Se deberian aplicar pruebas no parametricas
La prueba de Spearman, también conocida como coeficiente de correlación de Spearman o Spearman’s rho, es una medida de asociación entre dos variables ordinales o variables cuantitativas no paramétricas. A diferencia del coeficiente de correlación de Pearson, que asume una relación lineal y una distribución normal de los datos, la prueba de Spearman no tiene estos requisitos estrictos, lo que la hace ideal para situaciones donde las suposiciones de Pearson no se cumplen.
resultado_spearman <- cor.test(datos2$ied, datos2$t_des, method = "spearman")
print(resultado_spearman)
##
## Spearman's rank correlation rho
##
## data: datos2$ied and datos2$t_des
## S = 219868, p-value < 0.00000000000000022
## alternative hypothesis: true rho is not equal to 0
## sample estimates:
## rho
## -0.6943421
indica una correlación negativa moderada entre la tasa de desempleo y la inversión extranjera directa. Un coeficiente de correlación negativo significa que a medida que una variable la ied aumenta el desempleo tiende a disminuir
# Q-Q Plot
qqnorm(datos2$ied)
qqline(datos2$ied, col = 9)
# Q-Q Plot
qqnorm(datos2$t_des)
qqline(datos2$t_des, col = 2)
# Prueba de Shapiro-Wilk para un nivel de significancia de 0,05
shapiro.test(datos2$ied)
##
## Shapiro-Wilk normality test
##
## data: datos2$ied
## W = 0.97, p-value = 0.03217
# Ejemplo de prueba de Kolmogorov-Smirnov en
options(scipen = 999)
ks.test(datos, "pnorm", mean = mean(datos2$ied), sd = sd(datos2$ied))
## Warning in ks.test.default(datos, "pnorm", mean = mean(datos2$ied), sd =
## sd(datos2$ied)): ties should not be present for the one-sample
## Kolmogorov-Smirnov test
##
## Asymptotic one-sample Kolmogorov-Smirnov test
##
## data: datos
## D = 0.66667, p-value < 0.00000000000000022
## alternative hypothesis: two-sided
# Crear el gráfico de dispersión con línea de tendencia
ggplot(data = datos2, aes(x = t_des, y = ied)) +
geom_point(color = "blue", size = 2) +
geom_smooth(method = "lm", color = "red", linetype = "dashed", size = 1,se = FALSE) +
labs(title = "Gráfico de Dispersión entre ied y t_des con Línea de Tendencia",
x = "DESEMPLEO",
y = "IED") +
theme_minimal()
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## `geom_smooth()` using formula = 'y ~ x'
se comprueban los resulatos obtenidos en la prueba de Spearman de manera gráfica, existe una correlación negativa