es un lenguaje de programación y un entorno de software libre utilizado principalmente para el análisis estadístico, la minería de datos y la visualización gráfica. Fue creado por Ross Ihaka y Robert Gentleman en la Universidad de Auckland, Nueva Zelanda, y es ampliamente utilizado en el ámbito académico, la investigación y la industria.
La implementación de R es adecuada en situaciones donde se necesita:
-Análisis Estadístico Avanzado: Cuando el análisis requiere técnicas estadísticas complejas y personalizadas.
-Visualización de Datos: Para crear gráficos detallados y personalizables que faciliten la interpretación de los datos.
-Manejo de Grandes Conjuntos de Datos: Ideal para trabajar con datos extensos que requieren manipulación y análisis eficiente.
-Reproducibilidad y Transparencia: En proyectos donde la reproducibilidad del análisis es crucial, como en la investigación académica.
-Extensibilidad: Cuando se requiere un entorno flexible que permita la integración de nuevas herramientas y metodologías a través de paquetes adicionales.
Generar un script en R es un proceso sencillo que implica escribir y guardar un conjunto de instrucciones en un archivo de texto. Aquí te explico los pasos básicos para crear y ejecutar un script en R:
-R: Descarga e instala R desde el sitio oficial de CRAN.
-RStudio: Aunque no es obligatorio, RStudio es un entorno de desarrollo integrado (IDE) muy popular que facilita la escritura y ejecución de scripts en R.
Si estás usando RStudio, abre el programa. Si prefieres otro editor de texto, como Notepad++ o Visual Studio Code, ábrelo.
-En RStudio, puedes crear un nuevo script seleccionando File > New File > R Script. Esto abrirá un nuevo archivo de script en el editor.
-En otros editores de texto, simplemente abre un nuevo archivo y asegúrate de guardarlo con la extensión .R.
Escribe el código R en el archivo. Por ejemplo, podrías comenzar con un script simple que suma dos números y muestra el resultado:
a <- 9
b <- 8
suma <- a + b
print(suma)
## [1] 17
Guarda el archivo con un nombre descriptivo y la extensión .R. Por ejemplo, mi_primer_script.R.
-En RStudio, puedes ejecutar el script completo seleccionando Code > Run Region > Run All, o presionando Ctrl + Shift + Enter.
-Si prefieres ejecutar el script desde la consola R, usa el comando source(“ruta/al/archivo/mi_primer_script.R”), donde ruta/al/archivo/ es la ruta al archivo en tu sistema.
En matemáticas y programación, un vector es una secuencia ordenada de números, también conocidos como elementos o componentes. Los vectores se utilizan para representar magnitudes que tienen tanto magnitud como dirección.
Un vector numérico es una secuencia de números. Por ejemplo, el vector que representa las primeras cinco potencias.
vector_numerico <- c(2, 9, 1, 13, 7)
print(vector_numerico)
## [1] 2 9 1 13 7
Un vector de caracteres contiene cadenas de texto. Por ejemplo, un vector que contiene los nombres de los días de la semana.
vector_caracteres <- c("Lunes", "Martes", "Miercoles", "Jueves", "Viernes", "Sabado", "Domingo")
print(vector_caracteres)
## [1] "Lunes" "Martes" "Miercoles" "Jueves" "Viernes" "Sabado"
## [7] "Domingo"
Un vector lógico contiene valores de verdad (TRUE o FALSE). Por ejemplo, un vector que indica si los números del 1 al 5 son pares.
vector_logico <- c(FALSE, TRUE, FALSE, TRUE, FALSE)
print(vector_logico)
## [1] FALSE TRUE FALSE TRUE FALSE
hay una amplia variedad de funciones que se utilizan comúnmente para manipulación de datos, análisis estadístico, visualización y más. Aquí te presento algunas de las funciones más comunes y útiles, junto con breves descripciones y ejemplos de cómo usarlas.
Las funciones en R se caracterizan por un nombre corto y que dé una idea de lo que hace la función. Los elementos que pueden ingresar (inputs) a la función se llaman parámetros o argumentos y se ubican dentro de paréntesis, el cuerpo de la función se ubica dentro de llaves y es ahí donde se procesan los inputs para convertirlos en outputs, a continuación se muestra la estructura general de una función.
A continuación se presenta un ejemplo de cómo usar la función mean para calcular un promedio.
notas <- c(4.0, 1.3, 3.8, 2.0) # Notas de un estudiante
mean(notas)
## [1] 2.775
En R se pueden hacer asignación de varias formas, a continuación se presentan los operadores disponibles para tal fin.
<- este es el operador de asignación a izquierda, es el más usado y recomendado.
-> este es el operador de asignación a derecha, no es frecuente su uso.
= el símbolo igual sirve para hacer asignaciones pero NO se recomienda usarlo.
<<- este es un operador de asignación global y sólo debe ser usado por usuarios avanzados.
a <- 5.3
4.6 -> b
age = 25
En R se pueden hacer diversas operaciones usando operadores binarios. Este tipo de operadores se denomina binarios porque actuan entre dos objetos, a continuación el listado. Los operadores binarios son también funciones.
3+17
## [1] 20
30-98
## [1] -68
a <- c(1, 3, 2)
b <- c(2, 0, 1)
a*b
## [1] 2 0 2
a/b
## [1] 0.5 Inf 2.0
a^b
## [1] 1 1 2
8 %/% 2
## [1] 4
12 %% 3
## [1] 0
En R se puede verificar si un objeto cumple una condición dada, a continuación el listado de las pruebas usuales.
< para saber si un número es menor que otro. > para saber si un número es mayor que otro. == para saber si un número es igual que otro. <= para saber si un número es menor o igual que otro. >= para saber si un número es mayor o igual que otro.
A continuación se presentan ejemplos de cómo usar las anteriores funciones.
5 < 12 # ¿Será 5 menor que 12?
## [1] TRUE
# Comparando objetos
x <- 7
y <- 20 / 4
x == y # ¿Será x igual a y?
## [1] FALSE
# Usando vectores
a <- c(1, 5, 2)
b <- c(2, 8, 3)
a > b # Comparación término a término
## [1] FALSE FALSE FALSE
En R están disponibles los operadores lógicos negación, conjunción y disyunción. A continuación el listado de los operadores entre los elementos x e y.
x <- c(5, 1.5, 2, 3, 2)
!(x < 2.5)
## [1] TRUE FALSE FALSE TRUE FALSE
x <- c(5, 8, 9)
y <- c(4, 6, 3)
x < 4
## [1] FALSE FALSE FALSE
En R podemos destacar las siguientes funciones básicas sobre vectores numéricos.
para obtener el mínimo de un vector.
myvec <- c(5, 3, 2, 1, 2, 0, NA, 0, 9, 6)
myvec
## [1] 5 3 2 1 2 0 NA 0 9 6
min(myvec)
## [1] NA
para obtener el máximo de un vector.
max(myvec, na.rm=T)
## [1] 9
para determinar la longitud de un vector. #### range: para obtener el rango de valores de un vector, entrega el mínimo y máximo.
range(myvec, na.rm=T)
## [1] 0 9
entrega la suma de todos los elementos del vector.
sum(myvec, na.rm=T)
## [1] 28
multiplica todos los elementos del vector.
prod(myvec, na.rm=T)
## [1] 0
nos entrega la posición en donde está el valor mínimo del vector.
which.min(myvec)
## [1] 6
nos da la posición del valor máximo del vector.
which.max(myvec)
## [1] 9
invierte un vector.
Otras funciones básicas muy utilizadas en estadística son: sin, cos, tan, asin, acos, atan, atan2, log, logb, log10, exp, sqrt, abs. A continuación algunos ejemplos de las anteriores funciones.
angulos <- c(0, pi/4, pi)
sin(angulos)
## [1] 0.000000e+00 7.071068e-01 1.224606e-16
tan(angulos)
## [1] 0.000000e+00 1.000000e+00 -1.224647e-16
log(100)
## [1] 4.60517
logb(125, base=5)
## [1] 3
exp(2)
## [1] 7.389056
exp(1:3)
## [1] 2.718282 7.389056 20.085537
27 ^ (1/3)
## [1] 3
sqrt(49)
## [1] 7
En R podemos crear secuencias de números de una forma sencilla usando la función seq, la estructura de esta función es:
Los argumentos de esta función son:
-from: valor de inicio de la secuencia. -to: valor de fin de la secuencia, no siempre se alcanza. -by: incremento de la secuencia. -length.out: longitud deseado de la secuencia.
seq(from=0, to=1, length.out = 11)
## [1] 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0
Los gráficos básicos en R son una herramienta fundamental para visualizar datos y explorar patrones y tendencias. Aquí tienes una explicación sobre los gráficos básicos, las ventanas de R, cómo personalizarlos y cómo exportarlos:
Los gráficos básicos en R se crean utilizando funciones gráficas incorporadas, como plot(), hist(), boxplot(), entre otras. Estas funciones pueden usarse para crear una variedad de tipos de gráficos, como gráficos de dispersión, histogramas, diagramas de caja, gráficos de barras y gráficos de líneas.
es un gráfico de barras que representa la distribución de frecuencia de un conjunto de datos continuo o discretizado. En un histograma, el eje x representa los valores de los datos y el eje y representa la frecuencia o densidad de los datos.
datos <- rnorm(100, mean = 50, sd = 10)
hist(datos, breaks = 10, col = "skyblue", main = "Histograma de datos", xlab = "Valores", ylab = "Frecuencia")
también conocido como boxplot, es un gráfico que proporciona una representación visual de la distribución de un conjunto de datos y de sus características estadísticas clave, como la mediana, los cuartiles, los valores mínimo y máximo y los posibles valores atípicos.
datos_grupo1 <- rnorm(50, mean = 30, sd = 5)
datos_grupo2 <- rnorm(50, mean = 40, sd = 8)
datos_grupo3 <- rnorm(50, mean = 35, sd = 6)
datos_combinados <- list("Grupo 1" = datos_grupo1, "Grupo 2" = datos_grupo2, "Grupo 3" = datos_grupo3)
boxplot(datos_combinados, col = c("skyblue", "lightgreen", "pink"), main = "Diagrama de Caja por Grupos", xlab = "Grupos", ylab = "Valores")
Cuando se generan gráficos en R, estos se muestran por defecto en una ventana gráfica. La función plot() abre automáticamente una ventana gráfica si no está abierta. Además, R proporciona funciones para abrir, cerrar y manejar ventanas gráficas, como windows(), dev.off() y dev.new().
Es donde escribes comandos y ves los resultados de la ejecución de esos comandos.
Donde escribes y guardas tus scripts R. Puedes abrir un nuevo script en RStudio con File > New File > R Script.
Muestra los gráficos generados. En RStudio, esta ventana está usualmente en la parte inferior derecha.
Muestra los archivos y objetos en tu espacio de trabajo.
Los gráficos en R son altamente personalizables. Puedes modificar aspectos como colores, tipos de líneas, etiquetas de ejes, títulos, leyendas, tamaño del gráfico y mucho más. Por ejemplo, puedes usar argumentos como col, lty, xlab, ylab, main, legend en las funciones gráficas para personalizar aspectos específicos del gráfico.
Una vez que has creado y personalizado tu gráfico en R, puedes exportarlo en diferentes formatos para su uso en informes, presentaciones u otros documentos. R ofrece diversas formas de exportar gráficos, como guardarlos como archivos de imagen (por ejemplo, PNG, JPEG, PDF) o copiarlos en el portapapeles para pegarlos en otros programas. Puedes utilizar funciones como png(), jpeg(), pdf(), svg(), tiff(), windows(), dev.copy(), dev.print() para exportar tus gráficos.
Importar datos en R desde diferentes formatos es una tarea común y esencial para el análisis de datos. Aquí te explico cómo importar archivos .csv y .xls, así como cómo cargar una base de datos desde estos formatos.
Un archivo .csv (valores separados por comas) es uno de los formatos de datos más comunes. Para importar un archivo CSV en R, puedes usar la función read.csv().
ruta_csv <- "C:/Users/Laura/Downloads/osb_enftransm_covid19.archivo.csv"
print(ruta_csv)
## [1] "C:/Users/Laura/Downloads/osb_enftransm_covid19.archivo.csv"
Para importar un archivo XLS en RStudio, puedes utilizar la función read_excel() del paquete readxl. Primero, debes asegurarte de instalar y cargar el paquete readxl si aún no lo has hecho:
library(readxl)
MEDICINA_NEIVA <- read_excel("C:/Users/Laura/Downloads/MEDICINA NEIVA.xlsx")
## New names:
## • `` -> `...2`
View(MEDICINA_NEIVA)
para saber que vector es numerico,logico,caracteristico
str(vector_caracteres)
## chr [1:7] "Lunes" "Martes" "Miercoles" "Jueves" "Viernes" "Sabado" ...
comando para asociar vectores ejemplo:
y<-c("laura","andrea","brayan","michael","angel","david")
w<-c(20,22,20,20,24,24)
z<-c("pequeño","pequeño","mediano","mediano","alto","alto")
t<-c(52,48,60,53,60,62)
u<-data.frame(y,w,z,t)
print(u)
## y w z t
## 1 laura 20 pequeño 52
## 2 andrea 22 pequeño 48
## 3 brayan 20 mediano 60
## 4 michael 20 mediano 53
## 5 angel 24 alto 60
## 6 david 24 alto 62
Puedes utilizar funciones como download.file() o paquetes como httr o rvest para descargar datos desde una página web. Por ejemplo, con el paquete httr, puedes usar la función GET() para obtener datos de una URL y luego manipularlos según sea necesario. Luego, puedes leer los datos descargados usando las funciones de lectura de datos de R como read.csv() o read.table().
R incluye varias bases de datos integradas que puedes cargar directamente. Por ejemplo, el paquete datasets contiene conjuntos de datos de ejemplo como iris, mtcars, entre otros. Puedes cargar estos conjuntos de datos utilizando la función data().
Muchos paquetes de R incluyen conjuntos de datos que puedes cargar directamente. Por ejemplo, el paquete ggplot2 incluye el conjunto de datos diamonds. Puedes cargar este conjunto de datos utilizando la función data() o accediendo directamente al nombre del conjunto de datos con diamonds.
Puedes conectarte a bases de datos externas como MySQL, PostgreSQL, SQLite, etc., utilizando paquetes específicos como RMySQL, RPostgreSQL, RSQLite, entre otros. Estos paquetes te permiten ejecutar consultas SQL directamente desde R y cargar los resultados en un objeto de datos en RStudio.
url <- 'https://raw.githubusercontent.com/fhernanb/datos/master/babies.txt'
comando para calcular media,moda y mediana de una tabla datos o vectores.
summary(u)
## y w z t
## Length:6 Min. :20.00 Length:6 Min. :48.00
## Class :character 1st Qu.:20.00 Class :character 1st Qu.:52.25
## Mode :character Median :21.00 Mode :character Median :56.50
## Mean :21.67 Mean :55.83
## 3rd Qu.:23.50 3rd Qu.:60.00
## Max. :24.00 Max. :62.00
mediana
median(w)
## [1] 21
media
mean(t)
## [1] 55.83333
moda install.packages(“DescTools”) library(DescTools)
mode(z)
## [1] "character"
desviacion <- sd(t)
print(desviacion)
## [1] 5.600595
summary(u)
## y w z t
## Length:6 Min. :20.00 Length:6 Min. :48.00
## Class :character 1st Qu.:20.00 Class :character 1st Qu.:52.25
## Mode :character Median :21.00 Mode :character Median :56.50
## Mean :21.67 Mean :55.83
## 3rd Qu.:23.50 3rd Qu.:60.00
## Max. :24.00 Max. :62.00
varianza <- var(w)
desviacion_estandar <- sd(w)
tabla_frecuencia <- table(t)
print(tabla_frecuencia)
## t
## 48 52 53 60 62
## 1 1 1 2 1
library(ggplot2)
ggplot(u, aes(x = w)) +
geom_histogram(fill = "skyblue", color = "black", bins = 20) +
labs(title = "Histograma", x = "Variable", y = "Frecuencia")
ggplot(u, aes(x = factor(y))) +
geom_bar(fill = "green") +
labs(title = "Diagrama de Barras", x = "Categoría", y = "Frecuencia")
ggplot(u, aes(x = z, y = t)) +
geom_point(color = "red") +
labs(title = "Gráfico de Dispersión", x = "z", y = "t")
El histograma muestra la distribución de la variable w. Podemos observar que la variable no se distribuye normalmente.
El diagrama de barras muestra la frecuencia de cada categoría en la variable y. Podemos ver la frecuencia de cada categoría y comparar su distribución. Por ejemplo, podemos observar cuántas observaciones pertenecen a cada categoría y si alguna categoría es más común que las otras.
El gráfico de dispersión muestra la relación entre las variables z y t. Podemos observar si hay alguna relación entre estas dos variables. En este caso, parece haber una relación lineal nula entre las variables, ya que los puntos estan dispersos.
El gráfico de líneas muestra cómo cambia la variable t a lo largo de z. Podemos observar cualquier tendencia o patrón a lo largo de z.
El gráfico de densidad muestra la distribución de la variable w. Es similar a un histograma pero con una curva suavizada. Nos da una buena idea de la forma de la distribución de la variable y la concentración de valores.
El gráfico de pastel muestra la proporción de cada categoría en la variable t. Nos da una vista rápida de cómo se distribuyen las observaciones entre las diferentes categorías. Sin embargo, a menudo se recomienda tener cuidado con los gráficos de pastel debido a la dificultad para comparar áreas de círculos.
El gráfico de dispersión con una línea de regresión muestra la relación lineal entre las variables w y t. Podemos observar si hay una relación lineal entre estas dos variables y la fuerza de esa relación. En este caso, la línea de regresión roja muestra la tendencia lineal positiva entre las variables.
# Line plot
ggplot(u, aes(x =t, y = z)) +
geom_line(color = "orange") +
labs(title = "Gráfico de Líneas", x = "t", y = "z")
# Gráfico de densidad
ggplot(u, aes(x = w)) +
geom_density(fill = "purple", alpha = 0.5) +
labs(title = "Gráfico de Densidad", x = "Variable", y = "Densidad")
# Gráfico de pastel
ggplot(u, aes(x = "", fill = factor(t))) +
geom_bar(width = 1) +
coord_polar(theta = "y") +
labs(title = "Gráfico de Pastel", fill = "t")
# Correlación lineal
ggplot(u, aes(x = w, y = t)) +
geom_point(color = "blue") +
geom_smooth(method = "lm", se = FALSE, color = "red") +
labs(title = "Correlación Lineal", x = "w", y = "t")
## `geom_smooth()` using formula = 'y ~ x'
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
-H_o= las madres gestantes son menores de 18 años
-h_1= las madres gestantes son mayores de 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
respuesta: como el valor p es menor que tu nivel de significancia 0.05 se rechaza la nula y se acepta la alterna por lo tanto las madres gestantes son mayores de 18 años.
library(ggplot2)
variable1 <- dt$bwt
variable2 <- dt$height
hist(variable1, main = "Histograma de Variable 1", xlab = "Variable 1")
hist(variable2, main = "Histograma de Variable 2", xlab = "Variable 2")
ggplot(data = dt, aes(x = variable1)) +
geom_density(fill = "blue", alpha = 0.5) +
labs(title = "Gráfico de Densidad de Variable 1", x = "Variable 1")
ggplot(data = dt, aes(x = variable2)) +
geom_density(fill = "green", alpha = 0.5) +
labs(title = "Gráfico de Densidad de Variable 2", x = "Variable 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
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
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
-H_0= los automoviles cuentan con mas de 8 carbs
-H_1= los automoviles cuentan con menos de 8 carb
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
respuesta: como el valor p es menor que tu nivel de significancia 0.05 se rechaza la nula y se acepta la alterna por lo tanto los automoviles cuentan con menos de 8 carb.
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
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_anova <- aov(mtcars$vs ~ mtcars$hp, data = mtcars)
son pruebas estadísticas que hacen suposiciones sobre la distribución de los datos subyacentes en la población. Estas pruebas son más sensibles y poderosas cuando se cumplen los supuestos subyacentes.
se utiliza para comparar las medias de dos grupos independientes para determinar si hay una diferencia 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
resultado_prueba <- t.test(Orange$age,Orange$circumference)
print(resultado_prueba)
##
## Welch Two Sample t-test
##
## data: Orange$age and Orange$circumference
## t = 9.6323, df = 34.929, p-value = 2.286e-11
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## 636.3407 976.2308
## sample estimates:
## mean of x mean of y
## 922.1429 115.8571
se utiliza para comparar las medias de tres o más grupos independientes para determinar si al menos uno de los grupos difiere significativamente de 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)
se utiliza para evaluar la relació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 utiliza para modelar la relación entre una variable dependiente continua y una o más variables independientes, asumiendo 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
son pruebas estadísticas que no hacen suposiciones sobre la distribución de los datos subyacentes en la población. Estas pruebas son útiles cuando 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.
se utiliza cuando las diferencias entre las observaciones no siguen una distribución normal.
antes <- c(70, 75, 80, 85, 90)
despues <- c(75, 80, 85, 88, 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 = 0, p-value = 0.05447
## alternative hypothesis: true location shift is not equal to 0
se utiliza para comparar las medianas de dos grupos emparejados o dependientes.
hombres <- c(170, 175, 180, 185, 190)
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 = 20.5, p-value = 0.1138
## alternative hypothesis: true location shift is not equal to 0
Se utiliza para determinar si hay diferencias significativas en las medianas entre tres o más grupos.
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
conclusion: Es importante recordar que “no rechazar la hipótesis nula” no significa que la hipótesis nula sea verdadera, sino que no hay suficiente evidencia en los datos para afirmar lo contrario. Además, es crucial considerar el contexto del estudio y la relevancia práctica de los resultados al interpretar los hallazgos de la prueba de hipótesis.