PARCIAL – R
R es un lenguaje de programación y un entorno de software libre y de código abierto para el análisis estadístico y la visualización de datos. Fue desarrollado en la década de 1990 por Ross Ihaka y Robert Gentleman en la Universidad de Auckland, Nueva Zelanda.
Cuándo Implementar R:
- Análisis Estadístico Avanzado: Ideal para situaciones en las que el análisis de datos requiere técnicas estadísticas complejas y personalizadas.
- Visualización de Datos: Perfecto para crear gráficos detallados y personalizables que faciliten la interpretación y presentación clara de los datos.
- Manejo de Grandes Conjuntos de Datos: Excelente para trabajar con grandes volúmenes de datos que necesitan ser manipulados y analizados de manera eficiente.
- Reproducibilidad y Transparencia: Fundamental en proyectos donde es crucial que los análisis sean reproducibles y transparentes, como en investigaciones académicas.
- Extensibilidad: Ofrece un entorno flexible que permite integrar nuevas herramientas y metodologías mediante la incorporación de paquetes adicionales.
Abrir R Studio:Inicia R Studio en tu computadora.
Abrir el script: Abre el archivo de script que deseas ejecutar.
Haz clic en "Archivo" en la barra de menú de R Studio, selecciona "Abrir archivo" y elige el archivo de script.
Ejecutar el script:
Haz clic en el botón "Ejecutar" (con forma de flecha verde) que se encuentra junto a la línea de código que deseas ejecutar.
Selecciona el código que deseas ejecutar y presiona Ctrl + Enter (Cmd + Enter en Mac) para ejecutar la selección.
Para ejecutar todo el script, puedes hacer clic en "Editar" en la barra de menú y luego seleccionar "Ejecutar todo" o utilizar el atajo de teclado Ctrl + Shift + Enter (Cmd + Shift + Enter en Mac).
En R, un objeto es una entidad que almacena datos y puede ser manipulado a través de funciones. Los objetos son fundamentales en R, ya que prácticamente todo en R es un objeto, incluyendo variables, vectores, matrices, listas, data frames, funciones, e.t.c.
variable_1 <- c("a","b")
variable_1
## [1] "a" "b"
A <- matrix(c(56,45,
25,33),
nrow = 2,
ncol = 2)
matrix(A)
## [,1]
## [1,] 56
## [2,] 45
## [3,] 25
## [4,] 33
name1=c("Samara", "Soley", "Juan", "Javier", "Santiago")
name1
## [1] "Samara" "Soley" "Juan" "Javier" "Santiago"
data=data.frame(name1)
data
## name1
## 1 Samara
## 2 Soley
## 3 Juan
## 4 Javier
## 5 Santiago
mi_lista <- list(nombre = "Juan", edad = 30, casado = TRUE)
mi_lista
## $nombre
## [1] "Juan"
##
## $edad
## [1] 30
##
## $casado
## [1] TRUE
factores <- factor(c("bajo", "medio", "alto", "medio"))
factores
## [1] bajo medio alto medio
## Levels: alto bajo medio
Una función en R es un bloque de código diseñado para realizar una tarea específica.
- **Lectura de Datos:**
read. csv(): Lee archivos CSV.
read. table(): Leer archivos de texto.
readRDS(): Lee archivos RDS.
read_excel(): Es necesario tener el paquete readxl para leer archivos de Excel.
write.csv(): Guardar información en un archivo CSV.
write.table(): Registra información en un archivo de texto.
saveRDS(): Almacena un objeto en un archivo RDS.
write_excel(): Utiliza el paquete writexl para guardar datos en un archivo de Excel.
notas <- c(4.0, 5.0, 4.8, 3.0) # Notas de un estudiante
mean(notas)
## [1] 4.2
5+27
## [1] 32
5-27
## [1] -22
a <- c(1, 6, 9)
b <- c(2, 8, 12)
a*b
## [1] 2 48 108
a/b
## [1] 0.50 0.75 0.75
# min:
myvec <- c(6, 8, 4, 2, 4, 0, NA, 6, 14, 8)
myvec
## [1] 6 8 4 2 4 0 NA 6 14 8
min(myvec)
## [1] NA
# max:
max(myvec, na.rm=T)
## [1] 14
angulos <- c(0, pi/8, pi)
sin(angulos)
## [1] 0.000000e+00 3.826834e-01 1.224606e-16
tan(angulos)
## [1] 0.000000e+00 4.142136e-01 -1.224647e-16
log(100)
## [1] 4.60517
logb(125, base=4)
## [1] 3.482892
# max:
max(myvec, na.rm=T)
## [1] 14
verdadero <- TRUE
falso <- FALSE
negacion <- !verdadero
and_logico <- verdadero & falso
or_logico <- verdadero | falso
xor_logico <- xor(verdadero, falso)
print(negacion) # Resultado: FALSE
## [1] FALSE
print(and_logico) # Resultado: FALSE
## [1] FALSE
print(or_logico) # Resultado: TRUE
## [1] TRUE
print(xor_logico) # Resultado: TRUE
## [1] TRUE
En R, los gráficos básicos se refieren a los tipos de gráficos más comunes que puedes crear para visualizar tus datos. Algunos de los gráficos básicos en R incluyen:
set.seed(12)
n <- 100
x <- runif(n)
eps <- rnorm(n, 0, 0.25)
y <- 2 + 3 * x^2 + eps
plot(x, y, pch = 19, col = "red")
x <- c(1, 2, 3, 4, 5)
y <- c(200, 300, 600, 700, 500)
plot(x, y, type = "l")
distancia <- c(241.1, 284.4, 220.2, 272.4, 271.1, 268.3,
291.6, 241.6, 286.1, 285.9, 259.6, 299.6,
253.1, 239.6, 277.8, 263.8, 267.2, 272.6,
283.4, 234.5, 260.4, 264.2, 295.1, 276.4,
263.1, 251.4, 264.0, 269.2, 281.0, 283.2)
hist(distancia,
main = "Histograma de frecuencias", ylab = "Frecuencia")
data(mtcars)
attach(mtcars)
mi_tabla <- table(cyl)
mi_tabla
## cyl
## 4 6 8
## 11 7 14
par(mfrow = c(1, 2))
barplot(mi_tabla, main = "Frequencia absoluta",
col = rainbow(3))
barplot(prop.table(mi_tabla) * 100, main = "Frequencia relativa (%)",
col = rainbow(3))
Abrir RStudio: Inicia RStudio en tu computadora.
Crear un nuevo script: Ve al menú "File" y selecciona "New Script" para abrir un nuevo script en blanco.
Importar el archivo CSV: Puedes usar la función read.csv() para importar un archivo CSV. Por ejemplo, si tu archivo se llama "datos.csv" y está en la misma carpeta que tu script de RStudio.
Verificar la importación: Puedes verificar que los datos se hayan importado correctamente mostrando una vista previa de los primeros registros.
Al ejecutar estas líneas de código en RStudio, deberías ver una
vista previa de los primeros registros de tu archivo CSV en la consola de RStudio.
library(readr)
## Warning: package 'readr' was built under R version 4.3.3
file.choose()
## [1] "C:\\Users\\franc\\Downloads\\casos_csv.zip"
ruta_csv <- "C:\\Users\\franc\\Downloads\\casos_csv.zip"
gapminder <- read_csv(ruta_csv)
## Multiple files in zip: reading 'gapminder.csv'
## Rows: 10 Columns: 4
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (1): pais
## dbl (3): anio, esperanza_de_vida, poblacion
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
head(gapminder)
## # A tibble: 6 × 4
## pais anio esperanza_de_vida poblacion
## <chr> <dbl> <dbl> <dbl>
## 1 Argentina 2007 75.3 40301927
## 2 Brasil 2007 72.4 190010647
## 3 Chile 2007 78.6 16284741
## 4 Colombia 2007 72.9 44227550
## 5 Ecuador 2007 75.0 13755680
## 6 Mexico 2007 76.2 108700891
Abrir RStudio: Inicia RStudio en tu computadora.
Instalar el paquete readxl (si no está instalado): Si aún no has instalado el paquete readxl.
Cargar el paquete readxl: Una vez instalado, carga el paquete readxl en tu sesión de RStudio
Importar el archivo .xls: Utiliza la función read_excel() para importar el archivo .xls. Por ejemplo, si tu archivo se llama "datos.xls" y está en la misma carpeta que tu script de RStudio
Verificar la importación:Puedes verificar que los datos se hayan importado correctamente mostrando una vista previa de los primeros registros.
Al ejecutar estas líneas de código en RStudio, deberías ver una vista previa de los primeros registros de tu archivo .xls en la consola de RStudio.
library(readxl)
Libro19 <- read_excel("Libro19.xlsx")
View(Libro19)
Libro19
## # A tibble: 21 × 10
## AÑO CÓDIGO_MUNICIPIO MUNICIPIO CÓDIGO_DEPARTAMENTO DEPARTAMENTO CÓDIGO_ETC
## <dbl> <dbl> <chr> <dbl> <chr> <dbl>
## 1 2011 5001 Medellín 5 Antioquia 3759
## 2 2011 5002 Abejorral 5 Antioquia 3758
## 3 2011 5004 Abriaquí 5 Antioquia 3758
## 4 2011 5021 Alejandría 5 Antioquia 3758
## 5 2011 5030 Amagá 5 Antioquia 3758
## 6 2011 5031 Amalfi 5 Antioquia 3758
## 7 2011 5034 Andes 5 Antioquia 3758
## 8 2011 5036 Angelópol… 5 Antioquia 3758
## 9 2011 5038 Angostura 5 Antioquia 3758
## 10 2011 5040 Anorí 5 Antioquia 3758
## # ℹ 11 more rows
## # ℹ 4 more variables: ETC <chr>, POBLACIÓN_5_16 <dbl>,
## # TASA_MATRICULACIÓN_5_16 <dbl>, COBERTURA_NETA <dbl>
Apellido<-c("Garcia","Veloza","Fraile","Rodriguez","Luna")
print(Apellido)
## [1] "Garcia" "Veloza" "Fraile" "Rodriguez" "Luna"
Temp<-c(20.48,18.56,21.56,29.90,45.56,24.56)
print(Temp)
## [1] 20.48 18.56 21.56 29.90 45.56 24.56
Statura<-c("alto","mediano","bajo","alto","mediano","alto")
print(Statura)
## [1] "alto" "mediano" "bajo" "alto" "mediano" "alto"
edad<-c(18,29,20,22,19,25)
print(edad)
## [1] 18 29 20 22 19 25
#df<-data.frame("Apellido,temp,Statura,edad:")
#print("Data Frame creado:")
df<-data.frame(Temp,edad,Statura,edad)
print(df)
## Temp edad Statura edad.1
## 1 20.48 18 alto 18
## 2 18.56 29 mediano 29
## 3 21.56 20 bajo 20
## 4 29.90 22 alto 22
## 5 45.56 19 mediano 19
## 6 24.56 25 alto 25
Descargar datos desde una página web:
Usa funciones como download.file() o paquetes como httr o rvest. Con el paquete httr, usa GET() para obtener datos y luego léelos con read.csv() o read.table().
Bases de datos integradas en R:
El paquete datasets incluye conjuntos de datos como iris y mtcars.
Carga estos datos con la función data().
Paquetes específicos:
Muchos paquetes de R incluyen conjuntos de datos propios.Por ejemplo, el paquete ggplot2 incluye el conjunto de datos diamonds, que puedes cargar con data(diamonds).
Conexión a bases de datos externas:
Conéctate a bases de datos como MySQL, PostgreSQL, o SQLite usando paquetes como RMySQL, RPostgreSQL, RSQLite.
Ejecuta consultas SQL y carga los resultados en RStudio.
# summary() comando para calcular media,moda y mediana de una tabla datos o vectores.
summary(df)
## Temp edad Statura edad.1
## Min. :18.56 Min. :18.00 Length:6 Min. :18.00
## 1st Qu.:20.75 1st Qu.:19.25 Class :character 1st Qu.:19.25
## Median :23.06 Median :21.00 Mode :character Median :21.00
## Mean :26.77 Mean :22.17 Mean :22.17
## 3rd Qu.:28.57 3rd Qu.:24.25 3rd Qu.:24.25
## Max. :45.56 Max. :29.00 Max. :29.00
#media
median(Temp)
## [1] 23.06
median(edad)
## [1] 21
#desviacion_estandar
desviacion <- sd(edad)
print(desviacion)
## [1] 4.167333
#calcular_moda
mode(Apellido)
## [1] "character"
mode(Statura)
## [1] "character"
Para calcular un resumen de las medidas de tendencia central (como la media, mediana y moda) para un data frame en R, puedes utilizar la funcion como `summary() que proporciona un resumen estadístico básico.
- Utilizando la Función summary()
summary #comando para calcular media,moda y mediana de una tabla datos o vectores.
## function (object, ...)
## UseMethod("summary")
## <bytecode: 0x000001b84276d898>
## <environment: namespace:base>
summary(df)
## Temp edad Statura edad.1
## Min. :18.56 Min. :18.00 Length:6 Min. :18.00
## 1st Qu.:20.75 1st Qu.:19.25 Class :character 1st Qu.:19.25
## Median :23.06 Median :21.00 Mode :character Median :21.00
## Mean :26.77 Mean :22.17 Mean :22.17
## 3rd Qu.:28.57 3rd Qu.:24.25 3rd Qu.:24.25
## Max. :45.56 Max. :29.00 Max. :29.00
rango_edad <- max(df$edad) - min(df$edad)
rango_Temp <- max(df$Temp) - min(df$Temp)
print(paste("Rango de edad:", rango_edad))
## [1] "Rango de edad: 11"
print(paste("Rango de Temp:", rango_Temp))
## [1] "Rango de Temp: 27"
varianza_edad <- var(df$edad)
varianza_Temp <- var(df$Temp)
desviacion_edad <- sd(df$edad)
desviacion_Temp <- sd(df$Temp)
print(paste("Varianza de edad:", varianza_edad))
## [1] "Varianza de edad: 17.3666666666667"
print(paste("Desviación estándar de edad:", desviacion_edad))
## [1] "Desviación estándar de edad: 4.16733328000853"
print(paste("Varianza de Temp:", varianza_Temp))
## [1] "Varianza de Temp: 100.37148"
print(paste("Desviación estándar de Temp:", desviacion_Temp))
## [1] "Desviación estándar de Temp: 10.0185567822916"
tabla_frecuencia <- table(edad)
print(tabla_frecuencia)
## edad
## 18 19 20 22 25 29
## 1 1 1 1 1 1
Un histograma, un diagrama de barras, un Scatter plots, grafico de bigotes, Line plots, grafico de densidad, pastel (pie charts), correlación lineal.
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.3.3
##
## Attaching package: 'ggplot2'
## The following object is masked from 'mtcars':
##
## mpg
ggplot(df, aes(x = Temp)) +
geom_histogram(fill = "skyblue", color = "black", bins = 20) +
labs(title = "Histograma", x = "Variable", y = "Frecuencia")
#Cargar la base de datos: https://raw.githubusercontent.com/fhernanb/datos/master/babies.txt y realizar un análisis descriptivo.
url <- 'https://raw.githubusercontent.com/fhernanb/datos/master/babies.txt'
dt <- read.table (url,header=TRUE, sep='\t')
View(dt)
varianza <- var(dt$age)
print(varianza)
## [1] NA
desviacion <- sd(dt$height)
print(desviacion)
## [1] NA
desviacionage <- sd(dt$age)
print(desviacionage)
## [1] NA
summary(dt)
## bwt gestation parity age
## Min. : 55.0 Min. :148.0 Length:1236 Min. :15.00
## 1st Qu.:108.8 1st Qu.:272.0 Class :character 1st Qu.:23.00
## Median :120.0 Median :280.0 Mode :character Median :26.00
## Mean :119.6 Mean :279.3 Mean :27.26
## 3rd Qu.:131.0 3rd Qu.:288.0 3rd Qu.:31.00
## Max. :176.0 Max. :353.0 Max. :45.00
## NA's :13 NA's :2
## height weight smoke
## Min. :53.00 Min. : 87.0 Length:1236
## 1st Qu.:62.00 1st Qu.:114.8 Class :character
## Median :64.00 Median :125.0 Mode :character
## Mean :64.05 Mean :128.6
## 3rd Qu.:66.00 3rd Qu.:139.0
## Max. :72.00 Max. :250.0
## NA's :22 NA's :36
median(dt$bwt)
## [1] 120
mean(dt$weight)
## [1] NA
- Hipótesis nula (H₀): La mayoría de las madres gestantes en la población estudiada tienen 18 años o menos. Esto implica que no existe una diferencia significativa en la proporción de madres gestantes menores de 18 años comparada con aquellas mayores de 18 años.
- Hipótesis alterna (H₁): La mayoría de las madres gestantes en la población estudiada tienen más de 18 años. Esto sugiere que existe una diferencia significativa en la proporción de madres gestantes mayores de 18 años comparada con aquellas menores o iguales a 18 años.
t.test(dt$age, mu = 18)
##
## One Sample t-test
##
## data: dt$age
## t = 56.236, df = 1233, p-value < 2.2e-16
## alternative hypothesis: true mean is not equal to 18
## 95 percent confidence interval:
## 26.93238 27.57815
## sample estimates:
## mean of x
## 27.25527
# Dado que el valor p es menor que el nivel de significancia de 0.05, rechazamos la hipótesis nula y aceptamos la hipótesis alterna. Por lo tanto, se concluye que la mayoría de las madres gestantes en la población estudiada son mayores de 18 años.
library(ggplot2)
variable1 <- dt$bwt
variable2 <- dt$height
hist(variable1, main = "Histograma de Vabl 1 mtcars", xlab = "Vabl 1mtcars")
hist(variable2, main = "Histograma de Vabl 2 mtcars", xlab = "Vabl 2 mtcars")
ggplot(data = dt, aes(x = variable1)) +
geom_density(fill = "pink", alpha = 0.5) +
labs(title = "Grf de la Densidad de Vabl 1", x = "Vabl 1")
# Según el resultado anterior contrastar la hipótesis dependiendo de los resultados aplicar una prueba paramétrica o una prueba no paramétrica.
ggplot(data = dt, aes(x = variable2)) +
geom_density(fill = "purple", alpha = 0.5) +
labs(title = "Grf de Densidad de Vabl 2", x = "Vabl 2")
## Warning: Removed 22 rows containing non-finite outside the scale range
## (`stat_density()`).
shapiro.test(variable1)
##
## Shapiro-Wilk normality test
##
## data: variable1
## W = 0.99559, p-value = 0.001192
shapiro.test(variable2)
##
## Shapiro-Wilk normality test
##
## data: variable2
## W = 0.98461, p-value = 4.894e-10
resultado_prueba <- t.test(variable1, variable2)
print(resultado_prueba)
##
## Welch Two Sample t-test
##
## data: variable1 and variable2
## t = 106.01, df = 1283.5, p-value < 2.2e-16
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## 54.50151 56.55666
## sample estimates:
## mean of x mean of y
## 119.57686 64.04778
data("mtcars")
head(mtcars)
## mpg cyl disp hp drat wt qsec vs am gear carb
## Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
## Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
## Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
## Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
## Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
## Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
#Realizar un análisis descriptivo:
mean(mtcars$drat)
## [1] 3.596563
summary(mtcars)
## mpg cyl disp hp
## Min. :10.40 Min. :4.000 Min. : 71.1 Min. : 52.0
## 1st Qu.:15.43 1st Qu.:4.000 1st Qu.:120.8 1st Qu.: 96.5
## Median :19.20 Median :6.000 Median :196.3 Median :123.0
## Mean :20.09 Mean :6.188 Mean :230.7 Mean :146.7
## 3rd Qu.:22.80 3rd Qu.:8.000 3rd Qu.:326.0 3rd Qu.:180.0
## Max. :33.90 Max. :8.000 Max. :472.0 Max. :335.0
## drat wt qsec vs
## Min. :2.760 Min. :1.513 Min. :14.50 Min. :0.0000
## 1st Qu.:3.080 1st Qu.:2.581 1st Qu.:16.89 1st Qu.:0.0000
## Median :3.695 Median :3.325 Median :17.71 Median :0.0000
## Mean :3.597 Mean :3.217 Mean :17.85 Mean :0.4375
## 3rd Qu.:3.920 3rd Qu.:3.610 3rd Qu.:18.90 3rd Qu.:1.0000
## Max. :4.930 Max. :5.424 Max. :22.90 Max. :1.0000
## am gear carb
## Min. :0.0000 Min. :3.000 Min. :1.000
## 1st Qu.:0.0000 1st Qu.:3.000 1st Qu.:2.000
## Median :0.0000 Median :4.000 Median :2.000
## Mean :0.4062 Mean :3.688 Mean :2.812
## 3rd Qu.:1.0000 3rd Qu.:4.000 3rd Qu.:4.000
## Max. :1.0000 Max. :5.000 Max. :8.000
median(mtcars$vs)
## [1] 0
varianza <- var(mtcars$disp)
print(varianza)
## [1] 15360.8
desviacion <- sd(mtcars$qsec)
print(desviacion)
## [1] 1.786943
cuartiles <- quantile(mtcars$cyl, probs = c(0.25, 0.5, 0.75))
cat("Primer cuartil (Q1):", cuartiles[1], "\n")
## Primer cuartil (Q1): 4
cat("Segundo cuartil (Q2, mediana):", cuartiles[2], "\n")
## Segundo cuartil (Q2, mediana): 6
cat("Tercer cuartil (Q3):", cuartiles[3], "\n")
## Tercer cuartil (Q3): 8
#Realizar un análisis inferencial:
shapiro_test <- shapiro.test(mtcars$hp)
print(shapiro_test)
##
## Shapiro-Wilk normality test
##
## data: mtcars$hp
## W = 0.93342, p-value = 0.04881
resultado_prueba <- t.test(mtcars$am, mtcars$gear)
print(resultado_prueba)
##
## Welch Two Sample t-test
##
## data: mtcars$am and mtcars$gear
## t = -20.839, df = 54.452, p-value < 2.2e-16
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -3.596868 -2.965632
## sample estimates:
## mean of x mean of y
## 0.40625 3.68750
#Definir la hipótesis nula y la hipótesis alterna o Contrastes de hipótesis: verificar dos variables considerando su comportamiento dentro de una distribución normal y, a partir de ello, aplicar pruebas paramétricas.
- Hipótesis Nula (H₀): Los automóviles, en promedio, están equipados con más de 8 carburadores. Esto implica que la cantidad de carburadores en los automóviles excede el valor de 8 cuando se considera un promedio general de la población de vehículos.
- Hipótesis Alterna (H₁): Los automóviles, en promedio, están equipados con menos de 8 carburadores. Esto sugiere que la cantidad de carburadores en los automóviles es inferior a 8 cuando se evalúa un promedio general de la población de vehículos.
t.test(mtcars$carb, mu =8)
##
## One Sample t-test
##
## data: mtcars$carb
## t = -18.168, df = 31, p-value < 2.2e-16
## alternative hypothesis: true mean is not equal to 8
## 95 percent confidence interval:
## 2.230158 3.394842
## sample estimates:
## mean of x
## 2.8125
#Verificar dos variables cuyo comportamiento no se ajuste a una distribución normal y, a partir de ello, aplicar pruebas no paramétricas.
t.test(mtcars$carb, mu =8)
##
## One Sample t-test
##
## data: mtcars$carb
## t = -18.168, df = 31, p-value < 2.2e-16
## alternative hypothesis: true mean is not equal to 8
## 95 percent confidence interval:
## 2.230158 3.394842
## sample estimates:
## mean of x
## 2.8125
#De acuerdo con los resultados obtenidos, al observar que el valor de p es menor que el nivel de significancia establecido de 0.05, se rechaza la hipótesis nula (H₀). Esto indica que hay evidencia estadística suficiente para concluir que los automóviles, en promedio, están equipados con menos de 8 carburadores. Por lo tanto, se acepta la hipótesis alterna (H₁), respaldando la idea de que la cantidad de carburadores en los automóviles es inferior a 8 cuando se considera el promedio general de la población de vehículos.
shapiro_test <- shapiro.test(mtcars$drat)
print(shapiro_test)
##
## Shapiro-Wilk normality test
##
## data: mtcars$drat
## W = 0.94588, p-value = 0.1101
shapiro_test <- shapiro.test(mtcars$mpg)
print(shapiro_test)
##
## Shapiro-Wilk normality test
##
## data: mtcars$mpg
## W = 0.94756, p-value = 0.1229
resultado_prueba <- t.test(mtcars$mpg, mtcars$drat)
print(resultado_prueba)
##
## Welch Two Sample t-test
##
## data: mtcars$mpg and mtcars$drat
## t = 15.421, df = 31.488, p-value = 3.164e-16
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## 14.31395 18.67417
## sample estimates:
## mean of x mean of y
## 20.090625 3.596563
#Verificar dos variables cuyo comportamiento no se ajuste a una distribución normal y, a partir de ello, aplicar pruebas no paramétricas.
shapiro_test <- shapiro.test(mtcars$disp)
print(shapiro_test)
##
## Shapiro-Wilk normality test
##
## data: mtcars$disp
## W = 0.92001, p-value = 0.02081
shapiro_test <- shapiro.test(mtcars$carb)
print(shapiro_test)
##
## Shapiro-Wilk normality test
##
## data: mtcars$carb
## W = 0.8511, p-value = 0.0004382
wilcox.test(mtcars$disp, mtcars$carb)
## Warning in wilcox.test.default(mtcars$disp, mtcars$carb): cannot compute exact
## p-value with ties
##
## Wilcoxon rank sum test with continuity correction
##
## data: mtcars$disp and mtcars$carb
## W = 1024, p-value = 5.222e-12
## alternative hypothesis: true location shift is not equal to 0
modelo <- lm(mtcars$cyl ~ mtcars$qsec, data = mtcars)
modelo
##
## Call:
## lm(formula = mtcars$cyl ~ mtcars$qsec, data = mtcars)
##
## Coefficients:
## (Intercept) mtcars$qsec
## 16.7344 -0.5909
modelo_anova <- aov(mtcars$vs ~ mtcars$hp, data = mtcars)
modelo_anova
## Call:
## aov(formula = mtcars$vs ~ mtcars$hp, data = mtcars)
##
## Terms:
## mtcars$hp Residuals
## Sum of Squares 4.117593 3.757407
## Deg. of Freedom 1 30
##
## Residual standard error: 0.3539024
## Estimated effects may be unbalanced
#Explicar la definición y dar un ejemplo de cada una de las pruebas paramétricas
- Prueba t de Student: Se emplea para contrastar las medias de dos conjuntos de datos independientes y evaluar si existe una disparidad significativa entre ellas.
data("Orange")
shapiro_test <- shapiro.test(Orange$age)
print(shapiro_test)
##
## Shapiro-Wilk normality test
##
## data: Orange$age
## W = 0.90934, p-value = 0.007118
shapiro_test <- shapiro.test(Orange$circumference)
print(shapiro_test)
##
## Shapiro-Wilk normality test
##
## data: Orange$circumference
## W = 0.94591, p-value = 0.08483
- El ANOVA (Análisis de Varianza):
Se emplea para contrastar las medias de tres o más conjuntos de datos independientes y evaluar si al menos uno de estos conjuntos muestra una diferencia significativa respecto a los demás.
data("Orange")
shapiro_test <- shapiro.test(Orange$age)
print(shapiro_test)
##
## Shapiro-Wilk normality test
##
## data: Orange$age
## W = 0.90934, p-value = 0.007118
shapiro_test <- shapiro.test(Orange$circumference)
print(shapiro_test)
##
## Shapiro-Wilk normality test
##
## data: Orange$circumference
## W = 0.94591, p-value = 0.08483
anova_result <- aov(Orange$circumference~ Orange$age, data=Orange)
anova_result
## Call:
## aov(formula = Orange$circumference ~ Orange$age, data = Orange)
##
## Terms:
## Orange$age Residuals
## Sum of Squares 93771.54 18594.74
## Deg. of Freedom 1 33
##
## Residual standard error: 23.73767
## Estimated effects may be unbalanced
- La prueba de correlación de Pearson
se aplica para analizar la asociación lineal entre dos variables continuas.
cor.test(Orange$age, Orange$circumference, method = "pearson")
##
## Pearson's product-moment correlation
##
## data: Orange$age and Orange$circumference
## t = 12.9, df = 33, p-value = 1.931e-14
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.8342364 0.9557955
## sample estimates:
## cor
## 0.9135189
- La regresión lineal
se emplea para establecer un modelo que describe la relación entre una variable dependiente continua y una o más variables independientes, partiendo de la suposición de una relación lineal entre ellas.
reg1 <- lm(Orange$age ~ Orange$circumference, data = Orange)
summary(reg1)
##
## Call:
## lm(formula = Orange$age ~ Orange$circumference, data = Orange)
##
## Residuals:
## Min 1Q Median 3Q Max
## -317.88 -140.90 -17.20 96.54 471.16
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 16.6036 78.1406 0.212 0.833
## Orange$circumference 7.8160 0.6059 12.900 1.93e-14 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 203.1 on 33 degrees of freedom
## Multiple R-squared: 0.8345, Adjusted R-squared: 0.8295
## F-statistic: 166.4 on 1 and 33 DF, p-value: 1.931e-14
Las pruebas estadísticas que no hacen suposiciones sobre la distribución de los datos subyacentes en la población son útiles en situaciones donde los datos no siguen una distribución normal o cuando la escala de medición es ordinal en lugar de intervalo o de razón. Estas pruebas son especialmente adecuadas cuando se requiere evaluar relaciones o diferencias entre variables sin asumir una distribución específica de los datos, lo que las hace más flexibles y aplicables en una amplia gama de situaciones.
- La prueba de Wilcoxon
Evalúa si las diferencias entre las observaciones pareadas son significativamente diferentes de cero, lo que la hace adecuada para analizar cambios o efectos en variables medidas en una misma muestra en diferentes momentos o condiciones.
antes <- c(60, 75, 90, 85, 80)
despues <- c(55, 80, 65, 08, 92)
resultado <- wilcox.test(antes, despues, paired = TRUE)
## Warning in wilcox.test.default(antes, despues, paired = TRUE): cannot compute
## exact p-value with ties
print(resultado)
##
## Wilcoxon signed rank test with continuity correction
##
## data: antes and despues
## V = 10.5, p-value = 0.4982
## alternative hypothesis: true location shift is not equal to 0
- Prueba de la U de Mann-Whitney con muestras pareadas:
es una prueba no paramétrica utilizada para comparar dos grupos independientes cuando las distribuciones de los datos no siguen una distribución normal y/o cuando los datos son ordinales.
hombres <- c(175, 180, 185, 190, 195)
mujeres <- c(160, 165, 170, 175, 180)
resultado <- wilcox.test(hombres, mujeres)
## Warning in wilcox.test.default(hombres, mujeres): cannot compute exact p-value
## with ties
print(resultado)
##
## Wilcoxon rank sum test with continuity correction
##
## data: hombres and mujeres
## W = 23, p-value = 0.03558
## alternative hypothesis: true location shift is not equal to 0
- Prueba de Kruskal-Wallis:
Es una prueba no paramétrica que se utiliza para determinar si hay diferencias significativas entre tres o más grupos independientes en una variable ordinal o continua que no cumple con los supuestos de normalidad y homogeneidad de varianzas requeridos por las pruebas paramétricas como ANOVA
grupo1 <- c(10, 12, 15, 18, 20)
grupo2 <- c(11, 14, 16, 19, 21)
grupo3 <- c(9, 13, 17, 22, 23)
resultado <- kruskal.test(list(grupo1, grupo2, grupo3))
print(resultado)
##
## Kruskal-Wallis rank sum test
##
## data: list(grupo1, grupo2, grupo3)
## Kruskal-Wallis chi-squared = 0.42, df = 2, p-value = 0.8106
CONCLUSIÓN
Al “no rechazar la hipótesis nula” en una prueba de hipótesis, no estamos afirmando que sea verdadera, sino que no hay suficiente evidencia para apoyar la hipótesis alternativa. Este matiz es crucial, ya que indica una falta de evidencia concluyente en contra de la hipótesis nula, no su confirmación. Los investigadores deben evaluar la relevancia práctica de los resultados y considerar sus implicaciones en el contexto del estudio y en situaciones del mundo real. Una interpretación adecuada implica analizar cómo estos resultados se integran con el conocimiento existente, influirán en futuras investigaciones, y evitar malinterpretaciones comunicando claramente las limitaciones del estudio. En resumen, no rechazar la hipótesis nula señala una falta de evidencia suficiente, y este enfoque es esencial para avanzar en la comprensión científica y la aplicación práctica de los resultados.