PARCIAL – R

1. Aspectos generales de R

Qué es R y cuándo se podría implementar

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.

Explicar cómo genero un script

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).

¿Qué es un objeto?

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.

Tipos de objetos

1. Vectores:

variable_1 <- c("a","b")
variable_1 
## [1] "a" "b"

2. Matrices:

A <- matrix(c(56,45,
              25,33),
            nrow = 2,
            ncol = 2)
matrix(A)
##      [,1]
## [1,]   56
## [2,]   45
## [3,]   25
## [4,]   33

3. Data Frames:

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

4. Listas:

mi_lista <- list(nombre = "Juan", edad = 30, casado = TRUE)
mi_lista
## $nombre
## [1] "Juan"
## 
## $edad
## [1] 30
## 
## $casado
## [1] TRUE

5. Factores:

factores <- factor(c("bajo", "medio", "alto", "medio"))
factores 
## [1] bajo  medio alto  medio
## Levels: alto bajo medio

Cuáles son las funciones más comunes.

Una función en R es un bloque de código diseñado para realizar una tarea específica.

- Manipulación de Datos

- **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.

    • Escritura de Datos:
  • 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.

1. Función mean para calcular un promedio.

notas <- c(4.0, 5.0, 4.8, 3.0)  # Notas de un estudiante
mean(notas) 
## [1] 4.2

2. Operadores.

  • Operador binario para sumar.
5+27
## [1] 32
  • Operador binario para restar.
5-27
## [1] -22
  • Operador binario para multiplicar.
a <- c(1, 6, 9)
b <- c(2, 8, 12) 
a*b
## [1]   2  48 108
  • Operador binario para dividir.
a/b
## [1] 0.50 0.75 0.75

3. Funciones sobre vectores.*

# 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

4. Funciones matemáticas.

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

Operaciones lógicas y dar ejemplo de cada una.

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

Explicar cuáles son los Gráficos básicos, ventanas de R, personalizar, exportar.

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:

1. Gráfico de dispersión (scatter plot): Utilizado para mostrar la relación entre dos variables continuas.

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")

2. Gráfico de líneas (line plot): Ideal para mostrar tendencias o cambios a lo largo del tiempo.

x <- c(1, 2, 3, 4, 5)
y <- c(200, 300, 600, 700, 500)

plot(x, y, type = "l")

3. Histograma: Se usa para representar la distribución de una variable numérica.

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")

4. Diagrama de barras (bar plot): Útil para comparar diferentes categorías.

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))

Explicar cómo se importa un archivo .csv, .xls y cargar una base de datos de cada una

- ARCHIVO cvs.

    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

- ARCHIVO xls.

    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>

Crear cuatro variables.

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

Explicar cómo cargamos una base de datos: de una pagina web, de la bases de datos de r, o de que otra forma se podría.

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.

Estadística descriptiva:

Con el dataframe anterior hallar: la media, moda, desviación estándar de las variables creadas

# 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"

Hallar un resumen de las medidas de tendencia central.

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

Calcular la dispersión y forma (puede ser el grafico de dispersión)

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"

Realizar tabla de distribución de frecuencias

tabla_frecuencia <- table(edad)

print(tabla_frecuencia)
## edad
## 18 19 20 22 25 29 
##  1  1  1  1  1  1

Paquete ggplot2: Graficar

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

Estadística inferencial

  • De la base de datos babies:

Determinar una hipótesis nula y una hipótesis alterna

- 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.

Analizar las variables y seleccionar dos, estudiar si el comportamiento de los datos tiene una distribución normal

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

Seleccionar una base de datos de su preferencia y realizar lo siguiente:

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.

Contrastes de hipótesis: verificar dos variables considerando su comportamiento dentro de unadistribución normal y, a partir de ello, aplicar pruebas paramétricas.

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

Realizar un análisis de regresión simple. (lm)

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

** Realizar un Análisis de varianza.**

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

Explicar la definición y dar un ejemplo de cada una de las pruebas no paramétricas o Dar una conclusión del contraste de la prueba de hipótesis

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.