Vectores: Los vectores son secuencias de elementos del mismo tipo. Pueden ser de tipo numérico, caracter, lógico, entre otros. Por ejemplo:
vector_numerico <- c(1, 2, 3, 4, 5)
vector_caracter <- c("Uno", "Dos", "Tres", "Cuatro")
vector_logico <- c(TRUE, FALSE, TRUE)
Matrices: Las matrices son arreglos bidimensionales de elementos del mismo tipo. Pueden contener números, caracteres o valores lógicos. Por ejemplo:
matriz_numerica <- matrix(c(1, 2, 3, 4, 5, 6), nrow = 2, ncol = 3)
matriz_caracter <- matrix(c("a", "b", "c", "d"), nrow = 2, ncol = 2)
matriz_caracter
## [,1] [,2]
## [1,] "a" "c"
## [2,] "b" "d"
Listas: Las listas son objetos que pueden contener elementos de diferentes tipos y longitudes. Pueden incluir vectores, matrices, data frames, entre otros. Por ejemplo:
lista <- list(nombre = "Juan", edad = 30, vector = c(1, 2, 3), irracional = 2L)
lista
## $nombre
## [1] "Juan"
##
## $edad
## [1] 30
##
## $vector
## [1] 1 2 3
##
## $irracional
## [1] 2
Data frames: Los data frames son estructuras de datos similares a tablas, donde las columnas pueden tener diferentes tipos de datos. Son muy utilizados para trabajar con conjuntos de datos. Por ejemplo:
data_frame <- data.frame(nombre = c("Ana", "Pedro", "María"),
edad = c(25, 30, 28),
ciudad = c("Madrid", "Barcelona", "Valencia"))
data_frame
## nombre edad ciudad
## 1 Ana 25 Madrid
## 2 Pedro 30 Barcelona
## 3 María 28 Valencia
Factores: Los factores son utilizados para representar variables categóricas con niveles predefinidos. Son útiles en análisis estadísticos y modelos predictivos. Por ejemplo:
factor <- factor(vector_caracter)
Ee pueden realizar diversas operaciones matemáticas y cálculos numéricos. A continuación, te proporciono algunos ejemplos de operaciones matemáticas comunes que se pueden realizar en R:
Suma: Se utiliza el operador “+” para sumar números. Por ejemplo:
resultado <- 5 + 3
resultado
## [1] 8
Resta: Se utiliza el operador “-” para restar números. Por ejemplo:
resultado <- 20 - resultado
resultado
## [1] 12
Multiplicación: Se utiliza el operador “*” para multiplicar números. Por ejemplo:
2 * 6
## [1] 12
División: Se utiliza el operador “/” para dividir números. Por ejemplo:
resultado <- 20 / 5
Potencia: Se utiliza el operador “^” para elevar un número a una potencia. Por ejemplo:
resultado <- 2^resultado
resultado
## [1] 16
Raíz cuadrada: Se utiliza la función sqrt() para
calcular la raíz cuadrada de un número. Por ejemplo:
resultado <- sqrt(25)
resultado
## [1] 5
Valor absoluto: Se utiliza la función abs() para obtener
el valor absoluto de un número. Por ejemplo:
resultado <- abs(-7)
resultado
## [1] 7
voy entendiendo?Un paquete es una colección de funciones, datos y documentación que se agrupan para proporcionar un conjunto específico de funcionalidades y facilitar tareas específicas en el análisis de datos, la visualización o cualquier otro aspecto del trabajo con R. Los paquetes son creados y mantenidos por la comunidad de usuarios de R y pueden ser instalados y cargados en R para ampliar su funcionalidad base.
El paquete tidyverse es un conjunto de paquetes de R
diseñado para facilitar la manipulación, visualización y análisis de
datos de una manera consistente y eficiente. Al instalar y cargar el
paquete tidyverse, se cargan automáticamente varios
paquetes populares, como ggplot2 para gráficos,
dplyr para manipulación de datos, tidyr para
limpieza de datos, entre otros.
si quiero llamar un paquete pero para una funcion especifica utilizo
:: de lo contrario para llamar un paquete seimpre debo
utilizar library()
# Instalar el paquete tidyverse
#install.packages("tidyverse")
# Cargar el paquete tidyverse
library(tidyverse)
## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.2 ──
## ✔ ggplot2 3.4.1 ✔ purrr 1.0.1
## ✔ tibble 3.1.8 ✔ dplyr 1.1.0
## ✔ tidyr 1.3.0 ✔ stringr 1.5.0
## ✔ readr 2.1.4 ✔ forcats 1.0.0
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
para el ejercicio de carge de informacion utilizaremos las bases
disponibles en DANE en el siguiente enlace
https://microdatos.dane.gov.co/index.php/catalog/680/get-microdata
personas <- read.csv("C:/Users/ytoloza/OneDrive - unbosque.edu.co/R STUDIO OJOOOO/TALLER R/UELBOSQUE/2023-1/Curso 2023-1/DATA/personas.csv")
View(personas)
Cargar la base de datos desde un stata
personas <- haven::read_dta("C:/Users/ytoloza/OneDrive - unbosque.edu.co/R STUDIO OJOOOO/TALLER R/UELBOSQUE/2023-1/Curso 2023-1/DATA/personas.dta")
## Invalid timestamp string (length=17): 27 jul. 2020 18:4
summary(personas)
## SEXO EDAD PARENTESCO PADRE
## Min. :1.000 Min. : 0.00 Min. : 1.000 Min. :1.000
## 1st Qu.:1.000 1st Qu.: 17.00 1st Qu.: 1.000 1st Qu.:2.000
## Median :2.000 Median : 31.00 Median : 3.000 Median :2.000
## Mean :1.528 Mean : 33.53 Mean : 2.839 Mean :2.029
## 3rd Qu.:2.000 3rd Qu.: 50.00 3rd Qu.: 3.000 3rd Qu.:3.000
## Max. :2.000 Max. :106.00 Max. :10.000 Max. :9.000
##
## MADRE CONSENTIMIENTO RESULTADO DIRECTORIO
## Min. :1.000 Min. :1 Min. :1 Min. : 1
## 1st Qu.:1.000 1st Qu.:1 1st Qu.:1 1st Qu.:13282
## Median :2.000 Median :1 Median :1 Median :26672
## Mean :1.765 Mean :1 Mean :1 Mean :27630
## 3rd Qu.:2.000 3rd Qu.:1 3rd Qu.:1 3rd Qu.:41248
## Max. :9.000 Max. :1 Max. :1 Max. :59977
## NA's :119590 NA's :119590
## SECUENCIA_ENCUESTA SECUENCIA_P ORDEN PER_SELECCIONADA
## Min. : 1.000 Min. :1 Min. : 1.000 Min. :1
## 1st Qu.: 1.000 1st Qu.:1 1st Qu.: 1.000 1st Qu.:1
## Median : 2.000 Median :1 Median : 2.000 Median :1
## Mean : 2.625 Mean :1 Mean : 2.625 Mean :1
## 3rd Qu.: 3.000 3rd Qu.:1 3rd Qu.: 3.000 3rd Qu.:1
## Max. :17.000 Max. :1 Max. :17.000 Max. :1
## NA's :119590
Cargar la base de datos desde un SPSS
personas <- haven::read_sav("C:/Users/ytoloza/OneDrive - unbosque.edu.co/R STUDIO OJOOOO/TALLER R/UELBOSQUE/2023-1/Curso 2023-1/DATA/personas.sav")
str(personas)
## tibble [169,346 × 12] (S3: tbl_df/tbl/data.frame)
## $ SEXO : num [1:169346] 1 2 2 1 2 2 1 1 2 1 ...
## ..- attr(*, "label")= chr "SEXO"
## ..- attr(*, "format.spss")= chr "F8.0"
## $ EDAD : num [1:169346] 59 56 28 25 62 33 11 54 52 19 ...
## ..- attr(*, "label")= chr "EDAD"
## ..- attr(*, "format.spss")= chr "F8.0"
## $ PARENTESCO : num [1:169346] 1 2 3 3 1 3 5 1 2 3 ...
## ..- attr(*, "label")= chr "PARENTESCO"
## ..- attr(*, "format.spss")= chr "F8.0"
## $ PADRE : num [1:169346] 2 2 1 1 2 2 2 3 2 1 ...
## ..- attr(*, "label")= chr "PADRE"
## ..- attr(*, "format.spss")= chr "F8.0"
## $ MADRE : num [1:169346] 2 2 1 1 2 1 1 2 1 1 ...
## ..- attr(*, "label")= chr "MADRE"
## ..- attr(*, "format.spss")= chr "F8.0"
## $ CONSENTIMIENTO : num [1:169346] NA 1 NA NA 1 NA NA 1 NA NA ...
## ..- attr(*, "label")= chr "CONSENTIMIENTO"
## ..- attr(*, "format.spss")= chr "F8.0"
## $ RESULTADO : num [1:169346] NA 1 NA NA 1 NA NA 1 NA NA ...
## ..- attr(*, "label")= chr "RESULTADO"
## ..- attr(*, "format.spss")= chr "F8.0"
## $ DIRECTORIO : num [1:169346] 1 1 1 1 2 2 2 3 3 3 ...
## ..- attr(*, "label")= chr "DIRECTORIO"
## ..- attr(*, "format.spss")= chr "F8.0"
## $ SECUENCIA_ENCUESTA: num [1:169346] 1 2 3 4 1 2 3 1 2 3 ...
## ..- attr(*, "label")= chr "SECUENCIA_ENCUESTA"
## ..- attr(*, "format.spss")= chr "F8.0"
## $ SECUENCIA_P : num [1:169346] 1 1 1 1 1 1 1 1 1 1 ...
## ..- attr(*, "label")= chr "SECUENCIA_P"
## ..- attr(*, "format.spss")= chr "F8.0"
## $ ORDEN : num [1:169346] 1 2 3 4 1 2 3 1 2 3 ...
## ..- attr(*, "label")= chr "ORDEN"
## ..- attr(*, "format.spss")= chr "F8.0"
## $ PER_SELECCIONADA : num [1:169346] NA 1 NA NA 1 NA NA 1 NA NA ...
## ..- attr(*, "label")= chr "PER_SELECCIONADA"
## ..- attr(*, "format.spss")= chr "F8.0"
## - attr(*, "label")= chr "NSDstat generated file"
Importar un video
vembedr::embed_url("https://www.youtube.com/watch?v=smvHfHWzcbw")
Guardar una base de datos en formato txt
write.table(personas,
"C:/Users/ytoloza/OneDrive - unbosque.edu.co/R STUDIO OJOOOO/TALLER R/UELBOSQUE/2023-1/Curso 2023-1/DATA/Personas12.txt",
sep="[", col.names=TRUE,
row.names=FALSE, quote=FALSE,
na="")
Guardar una base de datos en formato txt
write.table(personas, file = "DATA/Personas12.csv", sep = ";", row.names = FALSE)
Guardar varias bases de datos en formato xlxs
primero creamos nuestras bases de datos y las almacenamos en un objeto de lista.
bases_de_datos <- list(base1 = data.frame(a = 1:5, b = 6:10),
base2 = data.frame(x = 11:15, y = 16:20),
base3 = data.frame(foo = 21:25, bar = 26:30))
creamos un archivo en blanco de xlxs y cargamos la libreria
library(openxlsx)
archivo_excel <- createWorkbook()
creamos bucle for para recorrer cada elemento de la
lista bases_de_datos. Para cada base de datos, se agrega una nueva hoja
al archivo de Excel utilizando la función addWorksheet(), y
luego se escriben los datos de la base de datos en la hoja
correspondiente utilizando la función writeData().
for (nombre_base in names(bases_de_datos)) {
addWorksheet(archivo_excel, sheetName = nombre_base)
writeData(archivo_excel, sheet = nombre_base, x = bases_de_datos[[nombre_base]])
}
Finalmente, se guarda el archivo de Excel en el proyecto utilizando
la función saveWorkbook(). El archivo se guarda con el
nombre “Personas12.xlsx” en la carpeta “DATA”. Si el archivo ya existe,
se sobrescribe debido al argumento overwrite = TRUE.
saveWorkbook(archivo_excel, file = "DATA/Personas12.xlsx",
overwrite = TRUE)
descarga una o varias bases del portal SIVIGILA
https://portalsivigila.ins.gov.co/Paginas/Buscador.aspx
carga la base en R y luego guardala desde R a tu equipo.
Utilizaremos la base Titanic, esta base es un conjunto de titanic clásico ampliamente utilizado en el ámbito de la ciencia de titanic y el aprendizaje automático. Contiene información sobre los pasajeros a bordo del famoso barco Titanic, incluyendo variables como la clase del pasajero, edad, género, número de hermanos/cónyuges a bordo, número de padres/hijos a bordo, tarifa del boleto, entre otros.
Acontinuacion mostramos las librerias necesarias para el ejercicio, asi como la base de datos que se utilizara.
library(titanic)
library(tidyverse)
library(hrbrthemes)
## NOTE: Either Arial Narrow or Roboto Condensed fonts are required to use these themes.
## Please use hrbrthemes::import_roboto_condensed() to install Roboto Condensed and
## if Arial Narrow is not on your system, please see https://bit.ly/arialnarrow
library(viridis)
## Loading required package: viridisLite
titanic <- titanic_train
En el dataset de Titanic las variables disponibles son:
PassengerId: identificador único del pasajero. Survived: si el pasajero sobrevivió al naufragio, codificada como 0 (no) y 1 (si). Esta es la variable respuesta que interesa predecir. Pclass: clase a la que pertenecía el pasajero: 1, 2 o 3. Name: nombre del pasajero. Sex: sexo del pasajero. Age: edad del pasajero. SibSp: número de hermanos, hermanas, hermanastros o hermanastras en el barco. Parch: número de padres e hijos en el barco. Ticket: identificador del billete. Fare: precio pagado por el billete. Cabin: identificador del camarote asignado al pasajero. Embarked: puerto en el que embarcó el pasajero.
Esta base de titanic brinda la oportunidad de realizar una variedad de ejercicios estadísticos para explorar diferentes aspectos relacionados con la supervivencia de los pasajeros y su relación con las diferentes variables disponibles. Algunos ejemplos de los ejercicios estadísticos que se pueden realizar son:
Análisis descriptivo: Calcular estadísticas resumidas, como medias, medianas, desviaciones estándar, para variables numéricas como edad o tarifa del boleto. También se pueden obtener tablas de frecuencia para variables categóricas, como la clase del pasajero o el género.
Análisis de supervivencia: Investigar la tasa de supervivencia general y compararla entre diferentes grupos de pasajeros según variables como género, clase o edad. Se pueden realizar análisis de curvas de supervivencia, estimar la función de supervivencia y realizar pruebas de comparación de supervivencia, como el test de log-rank.
Modelos predictivos: Utilizar técnicas de aprendizaje automático, como regresión logística o árboles de decisión, para construir modelos predictivos de supervivencia basados en diferentes variables. Estos modelos pueden ayudar a identificar los factores que influyen en la probabilidad de supervivencia de un pasajero.
Análisis de correlación: Investigar las relaciones entre las variables disponibles utilizando medidas de correlación, como el coeficiente de correlación de Pearson o el coeficiente de correlación de Spearman. Por ejemplo, se puede analizar si existe una correlación entre la edad y la tarifa del boleto.
Análisis de tablas de contingencia: Realizar análisis de tablas de contingencia y pruebas de independencia para evaluar la asociación entre variables categóricas. Por ejemplo, se puede analizar si existe una asociación entre la supervivencia y la clase del pasajero.
Iniciemos con el primer punto.
Debemos conocer los nombres y caracteristicas de la data
names(titanic)
## [1] "PassengerId" "Survived" "Pclass" "Name" "Sex"
## [6] "Age" "SibSp" "Parch" "Ticket" "Fare"
## [11] "Cabin" "Embarked"
head(titanic)
## PassengerId Survived Pclass
## 1 1 0 3
## 2 2 1 1
## 3 3 1 3
## 4 4 1 1
## 5 5 0 3
## 6 6 0 3
## Name Sex Age SibSp Parch
## 1 Braund, Mr. Owen Harris male 22 1 0
## 2 Cumings, Mrs. John Bradley (Florence Briggs Thayer) female 38 1 0
## 3 Heikkinen, Miss. Laina female 26 0 0
## 4 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35 1 0
## 5 Allen, Mr. William Henry male 35 0 0
## 6 Moran, Mr. James male NA 0 0
## Ticket Fare Cabin Embarked
## 1 A/5 21171 7.2500 S
## 2 PC 17599 71.2833 C85 C
## 3 STON/O2. 3101282 7.9250 S
## 4 113803 53.1000 C123 S
## 5 373450 8.0500 S
## 6 330877 8.4583 Q
Histograma de una variable numérica: Este código crea un histograma
de la variable age en el conjunto de titanic
titanic. Se utiliza la función geom_histogram para crear el
histograma, especificando el ancho de los intervalos de clase con el
argumento binwidth.
ggplot(titanic, aes(x = Age)) +
geom_histogram(binwidth = 5, fill = "steelblue", color = "white") +
labs(x = "Edad", y = "Frecuencia", title = "Distribución de Edad")
## Warning: Removed 177 rows containing non-finite values (`stat_bin()`).
Diagrama de densidad de una variable numérica: se utiliza la función
geom_density para crear un diagrama de densidad de la
variable Fare. El argumento fill se utiliza
para especificar el color del área bajo la curva de densidad.
ggplot(titanic, aes(x = Fare)) +
geom_density(fill = "steelblue", color = "white") +
labs(x = "Tarifa", y = "Densidad", title = "Distribución de Tarifa")
ggplot(titanic, aes(x=Age, fill=Sex)) +
geom_histogram( color="#e9ecef", alpha=0.6, position = 'identity') +
scale_fill_manual(values=c("#69b3a2", "#404080")) +
theme_ipsum() +
labs(fill="")
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
analicemos el codigo que utilizamos para generar el grafico anterior.
ggplot(titanic, aes(x=Age, fill=Sex)) Aquí se especifica
el conjunto de datos titanic y se asigna la variable “Age” a la posición
x del gráfico. Además, se utiliza la variable “Sex” para llenar (fill)
las barras con diferentes colores según el sexo
geom_histogram(color="#e9ecef", alpha=0.6, position = 'identity')
Esta línea agrega un objeto de geometría geom_histogram, que representa
el histograma. Se establece el color de las barras en “#e9ecef” y se
ajusta la transparencia (alpha) a 0.6 para que las barras sean
semi-transparentes. La opción position = ‘identity’ se utiliza para que
las barras se muestren en su posición original sin agruparlas.
scale_fill_manual(values=c("#69b3a2", "#404080")) Aquí
se define el esquema de colores para el llenado (fill) de las barras. Se
utilizan dos colores especificados en formato hexadecimal: “#69b3a2”
para el género femenino y “#404080” para el género masculino.
theme_ipsum() Esta línea aplica un tema predefinido de
apariencia (theme_ipsum()) al gráfico, que proporciona un estilo visual
agradable y coherente.
labs(fill="") Por último, se utiliza esta línea para
cambiar la etiqueta del título de la leyenda del llenado (fill) en el
gráfico. Al establecer fill=““, se elimina la etiqueta de la
leyenda.
ggplot(titanic, aes(x=Age, fill=Sex)) +
geom_histogram(alpha=0.6, binwidth = 5) +
scale_fill_manual(values = c("pink", "green")) +
scale_color_manual(values = c("pink", "green")) +
theme_ipsum() +
xlab("Titulo en el eje x") +
ylab("Titulo en el eje y") +
facet_wrap(~Survived)
Analicemos el codigo que utilizamos para general el grafico anterior:
ggplot(titanic, aes(x=Age, fill=Sex)) Esta línea crea un
objeto ggplot y especifica el conjunto de datos “titanic” como fuente de
datos. El argumento aes se utiliza para asignar la variable “Age” al eje
x del gráfico y la variable “Sex” (sexo) se utiliza para determinar el
relleno (color) de las barras.
geom_histogram(alpha=0.6, binwidth = 5) Esta línea
agrega la capa geométrica “histograma” al gráfico. Define el parámetro
alpha para establecer la transparencia de las barras y el parámetro
binwidth para especificar el ancho de los intervalos del histograma.
scale_fill_viridis(discrete=TRUE) Esta línea define la
escala de color para el relleno de las barras utilizando el esquema de
colores “viridis”. El argumento discrete=TRUE indica que la variable
“Sex” es de naturaleza categórica.
scale_color_viridis(discrete=TRUE) Esta línea define la
escala de color para los elementos de color en el gráfico, como las
leyendas. También utiliza el esquema de colores “viridis” y especifica
que la variable es categórica.
theme_ipsum() Esta línea aplica un tema de estilo al
gráfico para darle una apariencia estética. El tema “ipsum” proporciona
un diseño limpio y moderno.
xlab("titulo del eje x") Esta línea establece una
etiqueta en blanco para el eje x.
ylab("titulo del eje y) Esta línea establece una
etiqueta para el eje y
facet_wrap(~Survived) Esta línea crea múltiples paneles
o facetas en el gráfico, basados en la variable “Survived”
(superviviente). Cada panel mostrará el histograma de la edad para cada
categoría de supervivencia.
Realicemos otro tipo de grafico
a <- data.frame("Promedios" = tapply(titanic$Fare, titanic$Embarked, mean, na.rm=T),
"Embarque" = names(tapply(titanic$Fare, titanic$Embarked, mean, na.rm=T)))
head(a)
## Promedios Embarque
## 80.00000
## C 59.95414 C
## Q 13.27603 Q
## S 27.07981 S
primero creamos el data frame llamado a la cual es el
resultado de la función tapply() para calcular la media de
la variable Fare (tarifa) los datos se agrupan por la variable Embarked
(puerto de embarque).
a continuacion, graficamos el data frame que creamos:
ggplot(a, aes(x=Embarque, y=Promedios)) +
geom_segment(aes(xend=Embarque, yend=0)) +
geom_point( size=4, color="orange") +
coord_flip() +
theme_bw() +
xlab("")
analicemos el codigo que utilizamos para crear el gráfico
ggplot(a, aes(x=Enbarco, y=Promedios)): Crea un objeto
ggplot utilizando el dataframe a y asigna las variables Enbarco como el
eje x y Promedios como el eje y.
geom_segment(aes(xend=Enbarco, yend=0)): Agrega
segmentos verticales desde el eje x hasta el eje y en 0. Estos segmentos
se extienden desde cada valor en el eje x hasta el punto en el eje y que
corresponde a 0.
geom_point(size=4, color="orange"): Agrega puntos en el
gráfico con un tamaño de 4 y color naranja. Estos puntos representan los
valores en los ejes x e y del dataframe.
coord_flip(): Invierte los ejes x e y, de manera que el
eje x se muestra en posición vertical y el eje y en posición horizontal.
Esto es útil cuando se quiere representar variables categóricas en el
eje y.
theme_bw(): Aplica un tema de fondo blanco al
gráfico.
xlab(""): Elimina la etiqueta del eje x.
ggplot(titanic, aes(x=Age, y=Sex, fill = Sex)) +
geom_violin(alpha = 0.6) +
xlab("class") +
theme(legend.position="none") +
xlab("")+
facet_wrap(~Survived)
ggplot(titanic, aes(x=Age, y=Fare, shape=Sex)) +
geom_point(size=3, color="#69b3a2") +
theme_ipsum()
Realicemos una grafica dinamica, para esto trabajaremos con una nueva
base de datos (recuerda que debes conocer las variables de la data, para
lo que colocaremos en la consola el siguiente codigo
?gapminder)
#cargamos la base
library(gapminder)
library(gganimate)
head(gapminder)
## # A tibble: 6 × 6
## country continent year lifeExp pop gdpPercap
## <fct> <fct> <int> <dbl> <int> <dbl>
## 1 Afghanistan Asia 1952 28.8 8425333 779.
## 2 Afghanistan Asia 1957 30.3 9240934 821.
## 3 Afghanistan Asia 1962 32.0 10267083 853.
## 4 Afghanistan Asia 1967 34.0 11537966 836.
## 5 Afghanistan Asia 1972 36.1 13079460 740.
## 6 Afghanistan Asia 1977 38.4 14880372 786.
Realizamos un grafico de puntos.
ggplot(
gapminder,
aes(x = gdpPercap, y=lifeExp, size = pop, colour = country)
) +
geom_point(show.legend = FALSE, alpha = 0.7) +
scale_color_viridis_d() +
scale_size(range = c(2, 12)) +
scale_x_log10() +
labs(x = "GDP per capita", y = "Esperanza de Vida")
analicemos el grafico.
ggplot(gapminder, aes(x = gdpPercap, y = lifeExp, size = pop, colour = country)):
Esta línea establece el objeto de gráfico base utilizando el conjunto de
datos gapminder. Se especifica que el eje x estará
representado por la variable gdpPercap (producto interno
bruto per cápita), el eje y estará representado por la variable
lifeExp (esperanza de vida), el tamaño de los puntos estará
determinado por la variable pop (población) y el color de
los puntos se distinguirá por la variable country
(país).
geom_point(show.legend = FALSE, alpha = 0.7): Esta línea
agrega puntos al gráfico utilizando la geometría
geom_point. El argumento show.legend = FALSE
oculta la leyenda de colores y el argumento alpha = 0.7
establece la transparencia de los puntos en 0.7.
scale_color_viridis_d(): Esta línea define la escala de
colores utilizando la función scale_color_viridis_d(), que
proporciona una paleta de colores continua basada en la librería
Viridis.
scale_size(range = c(2, 12)): Esta línea establece el
rango de tamaño de los puntos utilizando la función
scale_size. Los puntos se ajustarán dentro del rango de
tamaño de 2 a 12.
scale_x_log10(): Esta línea transforma el eje x a una
escala logarítmica utilizando la función scale_x_log10().
Esto significa que los valores en el eje x se representarán en
una escala logarítmica en base 10.
labs(x = "GDP per capita", y = "Life expectancy"): Esta
línea establece las etiquetas de los ejes x e y
utilizando la función labs. El texto “GDP per capita” se
mostrará en el eje x y “Life expectancy” se mostrará en el eje
y.
ggplot(
gapminder,
aes(x = gdpPercap, y=lifeExp, size = pop, colour = country)) +
geom_point(show.legend = FALSE, alpha = 0.7) +
scale_color_viridis_d() +
scale_size(range = c(2, 12)) +
scale_x_log10() +
labs(x = "GDP per capita", y = "Esperanza de Vida")+
transition_time(year) +
labs(title = "Year: {frame_time}")

Analicemos el codigo.
se agregaron dos lineas extras, las cuales fueron:
transition_time(year): Agrega una transición basada en
la variable year, lo que permite animar los cambios a lo largo del
tiempo.
labs(title = "Year: {frame_time}"): Etiqueta el título
del gráfico con el año actual representado en el cuadro de
animación.
ggplot(
gapminder,
aes(x = gdpPercap, y=lifeExp, size = pop, colour = country)) +
geom_point(show.legend = FALSE, alpha = 0.7) +
scale_color_viridis_d() +
scale_size(range = c(2, 12)) +
scale_x_log10() +
labs(x = "GDP per capita", y = "Esperanza de Vida")+
transition_time(year) +
labs(title = "Year: {frame_time}")+
facet_wrap(~continent)+
shadow_wake(wake_length = 0.1, alpha = FALSE)

Analicemos el codigo.
se agregaron dos lineas extras, las cuales fueron:
facet_wrap(~continent): Divide el gráfico en múltiples
paneles según la variable continent, lo que significa que se mostrarán
gráficos separados para cada continente.
shadow_wake(wake_length = 0.1, alpha = FALSE): Agrega un
efecto de sombra a los puntos en el gráfico con una longitud de
desvanecimiento de 0.1.
gapminder %>% filter(continent=="Americas") %>%
ggplot(aes(x = gdpPercap, y = lifeExp, size = pop, colour = country)) +
geom_point(show.legend = FALSE, alpha = 0.8) +
geom_text(aes(label = country), nudge_x = 0, nudge_y = 2,
size = 4, color = "black") +
scale_color_viridis_d() +
scale_size(range = c(2, 12)) +
scale_x_log10() +
labs(x = "GDP per capita", y = "Esperanza de Vida") +
transition_time(year) +
labs(title = "Year: {frame_time}") +
#shadow_wake(wake_length = 0.1, alpha = FALSE) +
theme(legend.position = "none")

Para finalizar, realizaremos un mapa de colombia.
library(tidyverse)
library(rgdal)
## Loading required package: sp
## Please note that rgdal will be retired during 2023,
## plan transition to sf/stars/terra functions using GDAL and PROJ
## at your earliest convenience.
## See https://r-spatial.org/r/2022/04/12/evolution.html and https://github.com/r-spatial/evolution
## rgdal: version: 1.6-5, (SVN revision 1199)
## Geospatial Data Abstraction Library extensions to R successfully loaded
## Loaded GDAL runtime: GDAL 3.5.2, released 2022/09/02
## Path to GDAL shared files: C:/Users/ytoloza/AppData/Local/Programs/R/R-4.2.2/library/rgdal/gdal
## GDAL binary built with GEOS: TRUE
## Loaded PROJ runtime: Rel. 8.2.1, January 1st, 2022, [PJ_VERSION: 821]
## Path to PROJ shared files: C:/Users/ytoloza/AppData/Local/Programs/R/R-4.2.2/library/rgdal/proj
## PROJ CDN enabled: FALSE
## Linking to sp version:1.6-0
## To mute warnings of possible GDAL/OSR exportToProj4() degradation,
## use options("rgdal_show_exportToProj4_warnings"="none") before loading sp or rgdal.
library(sf)
## Linking to GEOS 3.9.3, GDAL 3.5.2, PROJ 8.2.1; sf_use_s2() is TRUE
Colmbia<- st_read("DATA/depto/depto.shp")#para seleccionar la base de datos que queremos mapear
## Reading layer `depto' from data source
## `C:\Users\ytoloza\OneDrive - unbosque.edu.co\R STUDIO OJOOOO\TALLER R\UELBOSQUE\2023-1\Curso 2023-1\DATA\depto\depto.shp'
## using driver `ESRI Shapefile'
## Simple feature collection with 33 features and 5 fields
## Geometry type: MULTIPOLYGON
## Dimension: XY
## Bounding box: xmin: 165298.4 ymin: 20565.69 xmax: 1804280 ymax: 1984871
## Projected CRS: Bogota 1975 / Colombia Bogota zone
library(readxl)
datos <- read_excel("DATA/Incidencia vr 16.11.21.xlt",
sheet = "IncDepart") #base donde se encuentran las tasa calculadas
names(datos) <- make.names(names(datos))#eliminar espacios
datos$DPTO <- as.numeric(datos$Cod_departamento)#se unifica el nombre de la llave de union entre las dos bases
Colmbia$DPTO <- as.numeric(Colmbia$DPTO)
a <- merge(x=Colmbia, y=datos , by ="DPTO")# se unen las BASES dos llaves
##### se crean los mapas DE INCIDENCIA
a %>%
ggplot(aes(fill = Incidencia.2015)) + # Crea un objeto ggplot a partir del objeto mex_map
geom_sf()+
geom_sf(colour = "grey75", size = 0.07) + # cambia el color y el grosor de las líneas
scale_fill_gradient("Incidencia",# cambia el color de relleno y el título de la leyenda
high = "red",
low = "white") +
labs(title = "a")+ #Colombia: Incidencia 2015
#subtitle = "Actualizado al 16 de Noviembre, 2021",
#caption = "Datos: propia del autor")+
theme_bw() # retirar el fondo gris
analicemos el codigo
Se cargan las bibliotecas necesarias, incluyendo
tidyverse, rgdal y sf, que son
utilizadas para manipular y visualizar datos espaciales.
Se lee el archivo depto.shp, que contiene la información
geoespacial de los departamentos de Colombia, utilizando la función
st_read de la biblioteca sf.
Se lee el archivo de Excel Incidencia vr 16.11.21.xlt
que contiene los datos de incidencia, utilizando la función
read_excel de la biblioteca readxl.
Se realiza una manipulación de los nombres de las columnas en el
conjunto de datos datos, utilizando la función make.names,
con el fin de eliminar espacios y asegurar que los nombres sean
válidos.
Se crea una columna adicional llamada DPTO en ambos
conjuntos de datos para unificar la llave de unión entre las dos bases,
convirtiendo los valores a tipo numérico.
Se realiza una fusión de los dos conjuntos de datos utilizando la
función merge, tomando como llave de unión la columna
DPTO, la nueva base de llama a
A partir del objeto resultante de la fusión (a), se
genera un objeto ggplot mediante la función
%>% de la biblioteca tidyverse.
Se configuran las capas del mapa utilizando geom_sf()
para representar los polígonos de los departamentos y
geom_sf(colour = "grey75", size = 0.07) para establecer el
color y el grosor de las líneas de los límites. Se utiliza
scale_fill_gradient para definir el color de relleno de los
polígonos en función de la variable de incidencia, con un gradiente que
va desde el red (alto valor de incidencia) hasta el
white (bajo valor de incidencia).
Se añade un título al mapa utilizando
labs(title = "a"),
Se aplica un tema visual utilizando theme_bw() para
establecer un fondo blanco y eliminar el fondo gris predeterminado.
Analizaremos la base de datos kidtran. Los datos sobre la hora de la muerte de 863 pacientes con trasplante de riñón. A todos los pacientes se les realizó su trasplante en el Centro de trasplantes de la Universidad Estatal de Ohio durante el período 1982-1992. El tiempo máximo de seguimiento para este estudio fue de 9.47 años. Los pacientes fueron censurados si se mudaron de Colón (perdidos durante el seguimiento) o si estaban vivos el 30 de junio de 1992. En la muestra, había 432 hombres blancos, 92 hombres negros, 280 mujeres blancas y 59 mujeres negras. Las edades de los pacientes en el trasplante variaron de 9,5 meses a 74,5 años con una edad promedio de 42,8 años. Setenta y tres (16.9%) de los hombres blancos, 14 (15.2%) de los hombres negros, 39 (13.9%) de las mujeres blancas y 14 (23.7%) de las mujeres negras murieron antes del final del estudio.
Las variables contiene las siguientes variables:
obs. Numero de observación. time. Tiempo hasta la muerte o en estudio. delta. Indicador de muerte(1=Vivo,0=Muerte) gender. 1=Hombre, 2=Mujer race. Raza (1=Blanco,2=Negro) age. Edad en Años.
library(survival)
library(KMsurv)
library(survMisc)
##
## Attaching package: 'survMisc'
## The following object is masked from 'package:ggplot2':
##
## autoplot
library(survminer)
## Loading required package: ggpubr
##
## Attaching package: 'survminer'
## The following object is masked from 'package:survival':
##
## myeloma
library(ggfortify)
library(flexsurv)
library(actuar)
##
## Attaching package: 'actuar'
## The following objects are masked from 'package:flexsurv':
##
## dllogis, pllogis, qllogis, rllogis
## The following objects are masked from 'package:stats':
##
## sd, var
## The following object is masked from 'package:grDevices':
##
## cm
library(dplyr)
library(KMsurv)
data("kidtran")
Se calculará medidas descriptivas sobre el número de observaciones censuradas de acuerdo a las variables. Estas estadísticas se utilizaran utilizando las funciones table y prob.table en conjunto a with para utilizar las columnas de la base de datos como variables.
with(kidtran, table(delta)) #Censura
## delta
## 0 1
## 723 140
with(kidtran, prop.table(table(delta)))
## delta
## 0 1
## 0.8377752 0.1622248
El numero de observaciones por muerte por trasplante de riñón es bajo a comparación con el número de observaciones perdidas o vivos.
Las covariables que representan grupos las convertiremos a tipo factor para un mejor uso y visualización.
kidtran$gender <- factor(kidtran$gender, labels = c("Hombre", "Mujer"))
kidtran$race <- factor(kidtran$race, labels = c("Blanco", "Negro"))
with(kidtran, table(gender, delta)) #genero
## delta
## gender 0 1
## Hombre 437 87
## Mujer 286 53
with(kidtran, table(race, delta)) #Raza
## delta
## race 0 1
## Blanco 600 112
## Negro 123 28
with(kidtran, hist(age))
kidtran$edadg <- cut(kidtran$age, c(0, 25, 50, 75))
with(kidtran, table(edadg, delta))
## delta
## edadg 0 1
## (0,25] 100 7
## (25,50] 406 69
## (50,75] 217 64
survfit(Surv(time, delta) ~ gender, kidtran, conf.type = "log-log") %>% ggsurvplot(title = "Supervivencia por Género",
conf.int = T, legend.title = "Género", legend.labs = c("Hombres", "Mujeres"))
survfit(Surv(time, delta) ~ race, kidtran, conf.type = "log-log") %>% ggsurvplot(title = "Supervivencia por Raza",
conf.int = T, legend.title = "Raza", legend.labs = c("Blanco", "Negro"))
survfit(Surv(time, delta) ~ edadg, kidtran, conf.type = "log-log") %>% ggsurvplot(title = "Supervivencia por Edad",
conf.int = T, legend.title = "Edad", legend.labs = c("0-25", "25-50", "50+"))
A primera vista los grupos de edad presentan una clara diferencia entre sus curvas de supervivencia, en donde las personas con mayor edad presentan un mayor riesgo, la curva por Raza presenta al final una ligera diferencia.
Ahora se analizarán las curvas de supervivencia por covariables utilizando subgrupos de otra covariable utilizando el argumento facet.by de ggsurvplot.
survfit(Surv(time, delta) ~ gender + edadg, kidtran, conf.type = "log-log") %>%
ggsurvplot(title = "Supervivencia entre Género por Edad", conf.int = T,
facet.by = "edadg", legend.title = "Género", panel.labs = list(edadg = c("0-25",
"25-50", "75+")), short.panel.labs = T)
survfit(Surv(time, delta) ~ race + edadg, kidtran, conf.type = "log-log") %>%
ggsurvplot(title = "Supervivencia entre Raza por Edad", conf.int = T, facet.by = "edadg",
legend.title = "Raza", panel.labs = list(edadg = c("0-25", "25-50",
"75+")), short.panel.labs = T)
survfit(Surv(time, delta) ~ race + gender, kidtran, conf.type = "log-log") %>%
ggsurvplot(title = "Supervivencia entre Género por Raza", conf.int = T,
facet.by = "gender", legend.title = "Raza", short.panel.labs = T)
survfit(Surv(time, delta) ~ race + gender + edadg, kidtran, conf.type = "log-log") %>%
ggsurvplot(title = "Supervivencia entre Género por Raza", conf.int = F,
facet.by = "edadg")
Las gráficas sugieren que el género y la raza no son factores de riesgo para la muerte, sin embargo, la edad gráficamente parecer un factor de riesgo, esta hipótesis se pondrá a prueba a continuación.
realizaremos una regresion logistica con la base
titanic_train iniciaremos cagando las librerias y la base
de datos
library(titanic)
library(tidyverse)
library(hrbrthemes)
titanic <- titanic_train
Colocaremos las etiquetas a cada una de las variables de nuestro interes
titanic$Pclass <- factor(titanic$Pclass,
levels= c("1","2","3"),
labels = c("Primera",
"Segundo",
"Tercero"))
titanic$Pclass <- relevel(titanic$Pclass,
ref="Primera")
titanic$Sex<- factor(titanic$Sex,
levels= c("female","male"),
labels = c("Femenino",
"Masculino"))
titanic$Sex <- relevel(titanic$Sex,
ref="Femenino")
titanic$Embarked<- factor(titanic$Embarked,
levels= c("C","Q", "S"),
labels = c("C","Q", "S"))
titanic$EmbarkedCod <- ifelse(is.na(titanic$Embarked), "Perdido",
as.character(titanic$Embarked))
realizaremos una regresion lineal
modelo_lineal <- lm(Survived~Fare, data = titanic)
ggplot(titanic, aes(x = Fare, y = Survived))+
geom_point(aes(color = as.factor(Survived)))+
geom_smooth(method = "lm", color= "gray" , se= FALSE )+
theme_bw()+
labs(title= "Regresion lineal",
x = "Precio",
y = "¿Sobrevivio?")+
theme(legend.position = "none")
## `geom_smooth()` using formula = 'y ~ x'
analicesmos el codigo: Se ajusta un modelo lineal utilizando la
función lm(). El modelo lineal se especifica con la fórmula
Survived~Fare, lo que significa que estamos tratando de
predecir la variable Survived (sobrevivido) en función de
la variable Fare (precio del boleto). El modelo se ajusta
utilizando los datos del data frame titanic.
ggplot() para crear un gráfico de dispersión. Se
especifica titanic como el data frame y Fare como el eje X
y Survived como el eje Y dentro de aes().
geom_point() se utiliza para agregar los puntos al
gráfico de dispersión. Se utiliza as.factor(Survived) para
codificar el color de los puntos en función de la variable
Survived, lo que permite distinguir entre las personas que
sobrevivieron y las que no.
geom_smooth() se utiliza para agregar una línea de
regresión lineal al gráfico. El método utilizado es lm, lo
que significa que se ajusta una línea de regresión utilizando el modelo
lineal que se definió anteriormente. color = "gray" se
utiliza para establecer el color de la línea de regresión y
se = FALSE se utiliza para desactivar el sombreado del
intervalo de confianza de la Y estimada.
theme_bw() para aplicar un tema en blanco y negro al
gráfico.
labs() se utiliza para establecer los títulos de los
ejes y el título del gráfico.
theme(legend.position = "none") se utiliza para eliminar
la leyenda del gráfico, ya que no es necesaria en este caso.
realizaremos una regresion logistico
modelo_logistico <- glm(Survived~Fare, data = titanic,
family = binomial(link = "logit"))
ggplot(titanic, aes(x = Fare, y = Survived))+
geom_point(aes(color = as.factor(Survived)))+
geom_smooth(method = "glm",
method.args = list(family = "binomial"),
se= TRUE )+
theme_bw()+
labs(title= "Regresion logistica",
x = "Precio",
y = "¿Sobrevivio?")+
theme(legend.position = "none")
## `geom_smooth()` using formula = 'y ~ x'
Analicemos el codigo:
Primero, se realiza un modelo logístico utilizando la función
glm(). El objetivo es predecir la variable
Survived (sobrevivido) utilizando la variable
Fare (precio) en la base de datos titanic. Se
especifica family = binomial(link = "logit") para indicar
que se trata de una regresión logística binaria con enlace logit.
ggplot() y se especifica la base de datos
titanic y las variables Fare y
Survived dentro de aes() para mapearlas a los
ejes X e Y del gráfico.
geom_point() para representar los puntos en el gráfico,
donde se utiliza color = as.factor(Survived) para asignar
colores diferentes a los puntos según si sobrevivieron o no.
Se agrega geom_smooth() para trazar una línea suavizada
en el gráfico utilizando un modelo de regresión logística. Se especifica
method = "glm" para utilizar la función glm()
como método de ajuste del modelo. Se establece
method.args = list(family = "binomial") para indicar que se
trata de un modelo logístico binomial. Además, se = TRUE
permite mostrar el intervalo de confianza alrededor de la línea
suavizada.
theme_bw() para establecer un tema de fondo blanco en el
gráfico.
Se agregan etiquetas de título, ejes X e Y utilizando
labs(). El título del gráfico es
Regresión logística, el eje X se etiqueta como
Precio y el eje Y como ¿Sobrevivio“.
theme(legend.position = "none") se utiliza para ocultar
la leyenda en el gráfico.
modelo_logistico <- glm(Survived~Fare+SibSp+Pclass,
data = titanic,
family = binomial(link = "logit"))
summary(modelo_logistico)
##
## Call:
## glm(formula = Survived ~ Fare + SibSp + Pclass, family = binomial(link = "logit"),
## data = titanic)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -2.0503 -0.7519 -0.7455 1.0971 1.8430
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.045080 0.230908 -0.195 0.84521
## Fare 0.008014 0.002704 2.963 0.00304 **
## SibSp -0.091197 0.077251 -1.181 0.23779
## PclassSegundo -0.192721 0.245306 -0.786 0.43208
## PclassTercero -1.149844 0.237431 -4.843 1.28e-06 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 1186.7 on 890 degrees of freedom
## Residual deviance: 1071.3 on 886 degrees of freedom
## AIC: 1081.3
##
## Number of Fisher Scoring iterations: 4
grafico <- data.frame(car::Confint(modelo_logistico,
level=0.95, type="LR",
exponentiate=TRUE),
"nombres" = c("Intercep","Costo",
"Hermanos", "Clase.1", "Clase.3"))
##
## Exponentiated Coefficients and Confidence Bounds
analicemos el codigo en la primera parte realizamos un modelo logistico con los valores que vimos en el comando anterior agregandole mas covariables.
car::Confint(modelo_logistico, level=0.95, type="LR", exponentiate=TRUE)
Calcula los intervalos de confianza para los coeficientes del modelo
logístico. Se utiliza la función Confint() del paquete
car. Se establece el nivel de confianza en 0.95 y se
especifica el tipo de intervalo de confianza "LR"
(likelihood ratio). También se indica que los valores deben ser
exponenciados para obtener las odds ratios.
grafico <- data.frame(car::Confint(modelo_logistico, level=0.95, type="LR", exponentiate=TRUE), "nombres" = c("Interce", "Costo", "Hermanos", "Clase"))
Se crea un data frame llamado “grafico” que contiene los intervalos de
confianza calculados y los nombres de las variables correspondientes
(“Interce”, “Costo”, “Hermanos”, “Clase”). Estos nombres son asignados
utilizando el vector c()
grafico<- grafico[-1,]
ggplot(grafico, aes(x = Estimate , y = nombres))+
geom_point(size = 3)+
geom_errorbarh(aes(xmin = X2.5..,
xmax = X97.5..))+
geom_vline(xintercept = 1, linetype = 5)+
scale_x_continuous(limits = c(0,4))+
labs(x = "OR", y = "Variables")+
theme_minimal()
analicemos el codigo
grafico <- grafico[-1,] elimina la primera fila del
objeto grafico, lo que implica eliminar el conjunto de datos. Esto se
hace para excluir una fila específica del gráfico.
ggplot(grafico, aes(x = Estimate , y = nombres)) crea un
objeto ggplot utilizando el conjunto de datos grafico y estableciendo
las variables Estimate en el eje X y nombres
en el eje Y.
geom_point(size = 3) agrega puntos al gráfico utilizando
la geometría point. El argumento size = 3
establece el tamaño de los puntos.
geom_errorbarh(aes(xmin = X2.5.., xmax = X97.5..))
agrega barras de error horizontales al gráfico utilizando la geometría
errorbarh. Los argumentos xmin = X2.5.. y
xmax = X97.5.. indican los valores mínimos y máximos de los
intervalos de confianza para las barras de error.
geom_vline(xintercept = 1, linetype = 5) agrega una
línea vertical al gráfico utilizando la geometría vline. El
argumento xintercept = 1 establece la posición de la línea
en el valor 1 del eje X, y linetype = 5 establece el tipo
de línea.
scale_x_continuous(limits = c(0,4)) establece los
límites del eje X en 0 y 4
labs(x = "OR", y = "Variables") agrega etiquetas a los
ejes del gráfico. El argumento x = "OR" establece la
etiqueta del eje X como “OR” (Odds Ratio) y y = "Variables"
establece la etiqueta del eje Y como “Variables”.
theme_minimal() aplica un tema minimalista al gráfico,
ajustando los elementos visuales y el estilo general.
yEstimada <- ifelse(modelo_logistico$fitted.values>0.3, 1, 0)
matriz.Confuzion <- table(modelo_logistico$model$Survived,
yEstimada, dnn = c("y Real", "y Estimado"))
#% de buena clasificacion
(matriz.Confuzion[1,1]+matriz.Confuzion[2,2])/
(matriz.Confuzion[1,1]+matriz.Confuzion[2,2]+
matriz.Confuzion[1,2]+ matriz.Confuzion[2,1])
## [1] 0.671156
plot(matriz.Confuzion)
analicemos el codigo
yEstimada <- ifelse(modelo_logistico$fitted.values>0.3, 1, 0)
crea un vector llamado yEstimada que asigna 1 a aquellos valores
predichos por el modelo logístico (modelo_logistico) que sean mayores a
0.3 y 0 en caso contrario. Esta línea aplica un umbral para clasificar
las predicciones como 1 o 0.
matriz.Confuzion <- table(modelo_logistico$model$Survived, yEstimada, dnn = c("y Real", "y Estimado"))
crea una matriz de confusión llamada matriz.Confuzion. La matriz compara
los valores reales de la variable Survived del data frame utilizado en
el modelo logístico (modelo_logistico$model$Survived) con
los valores estimados (yEstimada). La opción dnn se utiliza
para asignar nombres a las dimensiones de la matriz de confusión.
plot(matriz.Confuzion) crea un gráfico de la matriz de
confusión utilizando la función plot(). Este gráfico
muestra visualmente los resultados de la clasificación, resaltando los
aciertos y los errores de clasificación.
(matriz.Confuzion[1,1]+matriz.Confuzion[2,2])/(matriz.Confuzion[1,1]+matriz.Confuzion[2,2]+matriz.Confuzion[1,2]+ matriz.Confuzion[2,1])
calcula el porcentaje de clasificación correcta dividiendo la suma de
los valores correctos (es decir, la diagonal principal de la matriz de
confusión) entre la suma total de todos los valores de la matriz de
confusión. Este cálculo proporciona una medida de la precisión general
del modelo de clasificación.
TALLER
Para realizar las preguntas de la 1 a la 5 utilizaremos las bases
disponibles en el siguiente enlace:
https://microdatos.dane.gov.co/index.php/catalog/680/get-microdata
1. Descargue las bases d_capitulos y personas, cárguelas en R y
únalas. Busque información sobre la función merge de R.
2. Descargue el directorio de variables (utilícelo para información de las bases).
3. Establezca 5 variables de interés: a. Realice tablas, figuras o
regresión de estas 5 variables de interés. (Piense una pregunta a
contestar con esos análisis que va a realizar, por ejemplo: ¿Qué
porcentaje de personas se sintió desanimado, deprimido o con pocas
esperanzas (variable: D_09).
4. Realice una caja y bigotes de la edad estratificado por sexo,
régimen de afiliación y consumo de alcohol (consulte:
https://r-charts.com/es/distribucion/box-plot-grupo-ggplot2/)
5. Elija alguna una de las preguntas D_11_A a D_11_N, intente
realizar la siguiente gráfica en waffle (consulte:
https://r-charts.com/es/parte-todo/grafico-waffle-ggplot2/).
Para realizar las preguntas de la 6 a la 10 utilizaremos las bases
disponibles en el siguiente enlace:
https://microdatos.dane.gov.co//catalog/733/get_microdata
6. Realice un histograma de la edad estratificado por sexo, adicionalmente calcule los deciles de la edad por sexo.
7. ¿Cuál es el promedio y mediana del ingreso mensual (variable = V392) por estrato socioeconómico? Grafique estas variables mediante un box plot.
8. ¿Cuál es el promedio con su IC de personas por hogar?
9. ¿Cuál es el porcentaje con su IC de hogares pobres en Colombia?
10. ¿Los hombres son la mayor proporción de personas pobres e indigentes? (¿cuál(es) prueba de hipótesis podría realizarse? Busque información e intente realizarla)
11. ¿Cuáles son los departamentos que tienen mayor proporción de personas pobres e indigentes?
12. Calcule un índice de hacinamiento en el hogar.