Aquí se fijan opciones de manera global para los chunks, y se pueden cambiar

1 Manejo básico de datos en R-studio

Primero, ¿por qué R? Bueno, como en todo lo gratis (sí, R es gratis), la comunidad de usuarios y programadores crece (y creció) rápidamente. Así, se tienen una gran cantidad de paquetes que premitirán “crecer” a R. A diferencie de lo sucedido en la película The fight club, la comunidad de R constantemente habla del programa y está retroalimentando el desarrollo de éste.

R representa el presente en la programación estadística (y por ende, de la Ciencia de datos). A diferencia de Python, R no es tan general en sus conceptos y el manejo de datos y técnicas estadísticas es más intiutivo. Y yendo más allá, ya existen manera de interconectar a R y Python mediante conecciones seguras y aprovechar las fortalezas de cada uso en casos que así lo requiera. Un ejemplo de lo anterior son las paqueterías keras y tensoflow con las que cuenta R, en las cuales utilizan las API ya instaladas en Python y “manda” a procesar algoritmos de Machine Learning (y en general, de Inteligencia Artificial) a Python, regresando los resultados a R.

Otra ventaja de R es que es muy versátil. Puedes usar R para hacer de todo, desde calcular simples estadísticas de resumen, hasta realizar complejas simulaciones para crear magníficos gráficos como el diagrama de chord (muy utilizado en la rama de Estadística circular).

Utilizando Rstudio (que lo utilizaremos en este curso), un programa que te ayuda a escribir código de R, se puede combinar fácilmente código de R, gráficos, análisis y texto escrito tipo Sweave (R y Latex) o RMarkdown (estas notas están siendo hechas desde Markdown). De hecho, existen libros escritos desde RMarkdown. Otro ejemplo de dicha combinación de código y salidas de R es el siguiente:

#install.packages("circlize")
#library(circlize)
circlize::chordDiagram(matrix(sample(10), nrow = 2, ncol = 5))
Figura de interés

Figura de interés

Los análisis realizados en R son transparentes, fácilmente compartibles y reproducibles. Si le pregunta a un usuario de SPSS cómo realizó un análisis específico, él o bien A) No lo recordará, B) Intentará (nerviosamente) construir un procedimiento de análisis en el lugar que tenga sentido - que puede o no corresponder a lo que realmente hizo hace meses o años. Hoy en día, y como un ejercicio de transparencia científica, el análisis paso-a-paso en una investigación también es requerido por la comunidad científica para que también sea revisado y; por lo tanto, la aplicación de la técnica también revisada.

1.1 Ambiente de R-studio y descarga de paqueterías.

¿Ya tienen R y Rstudio ya instalados? Si no, primero descargar R desde aquí. Ya una vez instalado, se recomienda abrirlo y verificar que todo funcione bien. Una vez ya instalada la versión base de R, se debe de instalar Rstudio, el cual lo pueden descargar desde acá. Esta instalación de Rstudio utilizará la versión base de R recientemente instalada.

Rstudio en cuatro ventanas

Rstudio en cuatro ventanas

1.2 Descarga de paquetes

Cuando se descarga e instalas R por primera vez, estás instalando el software Base R (si es que no se eligió descargar el complmento de Rtools). R-Base cuenta con la mayoría de funciones que nosotros utilizamos en cursos básicos de estadística y para análisis generales tales como mean(), plot() contendrá la mayoría de las funciones que usarás diariamente como mean() e hist(). Sin embargo, sólo las funciones escritas por los autores originales del lenguaje R aparecerán aquí.

Si se pretende a datos y código escrito por otras personas, necesitarás instalarlo como un paquete. Un paquete R es simplemente un montón de datos, desde funciones, a menús de ayuda, a viñetas (ejemplos), almacenados en un solo paquete (usualmente .zip, .tar.gz ó .tgz).

La manera más intuitiva para instalar un paquete es en la cuarta ventana (se muestran archivos, gráficos, paquetes, ayuda y visualizador), seleccionar la pestaña paquetes, seleccionar instalar, seleccionar el repositorio y el nombre del paquete. La manera más rápida, que yo prefiero, es mediante instrucciones en la consola. Un ejemplo se muestra a continuación:

# Instalar un paquete desde el CRAN, mirror por default
#   Solo se tienen que instalar lo paquetes una vez en tu computadora!
#install.packages("readxl",repos = "https://cran.ma.imperial.ac.uk/")

Se debe de verificar de que dicha paquetería se haya instalado correctamente. En el caso que no, el error más común se debe a la falta de privilegios de administrador en la computadora, falla en la conexión mientras se descargaba la paquetería o falta de compatibilidad entre la versión de R y el paquete instalado.

Una vez instalado un paquete, ya está en tu computadora. Sin embargo, sólo porque esté en tu ordenador no significa que R esté listo para usarlo. Si quieres usar algo, como una función o un conjunto de datos de un paquete, siempre tienes que cargar primero el paquete en tu sesión de R. Al igual que un foco, ¡necesitas encenderlo para usarlo!

Instalar y llamar paquetes.

Instalar y llamar paquetes.

Para cargar un paquete, se utiliza la función library(). Por ejemplo, ahora que hemos instalado el paquete readxl, podemos cargarlo con library("readxl"):

#Recuerda que se tienen que cargar los paquetes utilizados (no instalados en la versión
#base), cada vez que se inicie sesión
#También se puede agregar el include=FALSE
library("readxl") #Se quitan esos molestos warnings

1.3 Manejo básico de datos

\(R\) es una poderosa herramienta para todo tipo de cálculos, manipulación de datos y análisis. Antes de llegar a las complejas operaciones posibles en R debemos empezar con lo básico. Como la mayoría de los lenguajes, R tiene su cuota de capacidad matemática, variables,funciones y tipos de datos.

Así, se comenzará con el “Hello world” de R, en la consola se escribe la expresión \(1+1\)

1+1
## [1] 2

Si esto devuelve 2, entonces todo está bien; si no, entonces algo está muy, muy mal.

Asumiendo que funcionó, veamos algunas expresiones un poco más complicadas:

#Suma de más de tres términos
1+5+6
## [1] 12
#Multiplicación
1*5*6
## [1] 30
#División
9/7
## [1] 1.285714
#Redondeo y truncamiento
round(9/7)
## [1] 1
floor(9/7)
## [1] 1

1.3.1 Asignación de variables

Hay varias maneras de asignar un valor a una variable, y de nuevo, esto no depende sobre el tipo de valor que se asigna. Los operadores de asignación válidos son <- y =, prefiriéndose el primero (personalmente). Por ejemplo, guardemos 2 a la variable x y 5 a la variable y.

x <- 2
x
## [1] 2
y <- 5
y
## [1] 5

El operador flecha -> puede funcionar bidireccionalmente:

2 -> x
x
## [1] 2
5 -> y
y
## [1] 5

1.3.2 Borrando variables

si por algún motivo se desea borrar alguna de las variables generadas en el ambiente de trabajo, éstas pueden ser borradas utilizando la función remove, o su abreviación rm

x <- 9
x
## [1] 9
rm(x)

Esto libera la memoria para que R pueda almacenar más objetos, aunque no necesariamente liberar la memoria para el sistema operativo. Para garantizar eso, use la función gc.
Para listar las variables generadas hasta el momento en en ambiente de R, se utiliza la función ls()

ls()
## [1] "y"

Los nombres de las variables son sensibles a las mayúsculas y minúsculas, lo que puede hacer tropezar a la gente que viene de un lenguaje como SQL o Visual Basic.

##Tipos de datos Hay una gran cantidad de tipos de datos en R. Los cuatro tipos principales de datos más probablemente se utilizarán son numéricos, de caracteres (cadena), Fecha/ POSIXct (basado en el tiempo) y lógico (VERDADERO/FALSO).

El tipo de datos contenidos en una variable se comprueba mediante la función class.

x<-3
class(3)
## [1] "numeric"

1.3.3 Datos numéricos

Como es de esperarse, R sobresale por su capacidad de procesamiento numérica, ya sea manejando grandes bases de datos o funciones complejas. El tipo de datos más utilizado en R es el numérico. Este es similar a un tipo float o double float. R maneja números enteros y decimales, tanto positivos como negativos, y por supuesto, cero. Se supone que un valor numérico almacenado en una variable es automáticamente numérico. La prueba de si una variable es numérica se hace con la función is.numeric.

is.numeric(x)
## [1] TRUE

1.3.4 Caracteres

Aunque no es explícitamente matemático, el tipo de datos de caracteres (cadena) es muy común en el análisis estadístico y debe ser manejado con cuidado. R tiene dos formas básicas de manejo de datos de caracteres: caracter y factor. Aunque pueden parecer similares inicialmente, se tratan de manera muy distinta, tanto desde la perspectiva del análisis, así como desde la perspectiva de manejo de datos.

z <- "datos"
z
## [1] "datos"
w<- factor("datos")
w
## [1] datos
## Levels: datos

Fíjese que la variable z contiene la palabra “datos” encerrada entre comillas, mientras que w tiene la palabra “datos” sin comillas y una segunda línea de información sobre los niveles de w. Los caracteres son sensibles a las mayúsculas y minúsculas, por lo que “Datos” es diferente de “datos” o “DATOS”.

Para determinar la longitud de un caracter (o numérico) se utiliza la función nchar(). Nota: Los espacios en blanco se cuentan como un carater.

nchar(z)
## [1] 5
nchar("Hola")
## [1] 4
nchar("Hola mundo")
## [1] 10

Lo anterior no funciona para variables de tipo factor

1.3.5 Fechas

Lidiar con fechas y horas puede ser difícil en cualquier idioma, y para complicar aún más la materia, R tiene numerosos tipos de fechas. Las más útiles son Date y POSIXct. Date almacena sólo una fecha, mientras que POSIXct puede almacenar una fecha y una hora. Ambos objetos son en realidad representados como el número de días (Fecha) o segundos (POSIXct) desde el 01 de enero de 1970.

Nota: Existe una paquetería llamada lubridate la cual es muy útil para asignar formato de tipo fecha a variables numéricas y para cambiar el formato de la fecha.

1.4 Exploración de datos

Para utilizar el menú de ayuda disponible en \(Rstudio\), veremos el menú de ayuda del conjunto de datos llamado \(cars\), con el signo de interrogación _"cars. Al ejecutarlo, debería ver que se abre una pequeña ventana de ayuda en \(RStudio\) que le proporciona cierta información sobre el conjunto de datos.

?cars
?iris

Para observar los primeros o últimos renglones de la base de datos, se utilizará las funciones \(head()\) y \(tail()\).

head(iris)
##   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1          5.1         3.5          1.4         0.2  setosa
## 2          4.9         3.0          1.4         0.2  setosa
## 3          4.7         3.2          1.3         0.2  setosa
## 4          4.6         3.1          1.5         0.2  setosa
## 5          5.0         3.6          1.4         0.2  setosa
## 6          5.4         3.9          1.7         0.4  setosa
tail(iris)
##     Sepal.Length Sepal.Width Petal.Length Petal.Width   Species
## 145          6.7         3.3          5.7         2.5 virginica
## 146          6.7         3.0          5.2         2.3 virginica
## 147          6.3         2.5          5.0         1.9 virginica
## 148          6.5         3.0          5.2         2.0 virginica
## 149          6.2         3.4          5.4         2.3 virginica
## 150          5.9         3.0          5.1         1.8 virginica

Algunas funciones que son útiles para visualizar los datos o conocer sus características son:

#Conocer el nombre de las columnas
colnames(iris)
## [1] "Sepal.Length" "Sepal.Width"  "Petal.Length" "Petal.Width"  "Species"
#Conocer las dimensiones
dim(iris)
## [1] 150   5
#Conocer el número de fila y columnas
nrow(iris)
## [1] 150
ncol(iris)
## [1] 5

También se pueden visualizar los datos utilizando la funcioón \(View()\):

View(iris)

1.5 Estadísticas básicas

Para calcular algunas estadísticas básicas de todo el conjunto de datos. Calcularemos la media, el máximo de cada columna. Para lo anterior, existe varias maneras de hacerlo, una par de ellas son las siguientes ( max(), min(), mean(), var(), table() ):

mean(iris$Sepal.Length) #Media
## [1] 5.843333
mean(iris$Sepal.Width)
## [1] 3.057333
max(iris$Sepal.Length) #Máximos
## [1] 7.9
max(iris$Sepal.Width)
## [1] 4.4
min(iris$Sepal.Length) #Mínimo
## [1] 4.3
min(iris$Sepal.Width)
## [1] 2
table(iris$Species) #Tabla de frecuencia
## 
##     setosa versicolor  virginica 
##         50         50         50
#When collapse is true, the coda and result are merged
resu1<-round(sum(rnorm(100)),2)

Para insertar y referenciar resultados en tu texto, hacer lo siguiente: -2.67

## 
##  0  1  2  3  4  5  6  7  8  9 10 
##  1  2 14 13 22 12 10 13  4  4  5
##     tension
## wool L M H
##    A 9 9 9
##    B 9 9 9
Tabla de prueba
Noreste Sur Centro-norte Oeste
New England 6 0 0 0
Middle Atlantic 3 0 0 0
South Atlantic 0 8 0 0
East South Central 0 4 0 0
West South Central 0 4 0 0
East North Central 0 0 5 0
West North Central 0 0 7 0
Mountain 0 0 0 8
Pacific 0 0 0 5

1.6 Introducción de datos

Introducción manual en un script.
Utilizar dos paqueterías para importarlos (foreign y readxl)

1.7 Funciones, ciclos and condicionantes

1.8 Otras funciones útiles

attach() apply() Operadores $

2 Álgebra matricial

2.1 Introducción y manejo de matrices y vectores

Como generarlos (función matriz) y concatenar, cbind, rbind

2.2 Operaciones básicas matriciales

Suma, resta, multiplicación, comprobación del inverso

2.3 Traza, rango, inversa, transpuesta, valores característicos, entre otros

3 Análisis y graficación básica en R

3.1 Estadística descriptiva

3.2 Distribuciones de probabilidad

Explicar el pnorm, rnorm y dnorm (y las otras que siguen su forma )

4 Graficación

4.1 Gráficos planos con la función plot

Todo lo que se puede poner, y meter el histograma por ahí

4.2 Modelos lineales, no lineales y lineales generalizados

Tipo de fórmula (encuentras lo que significa : * :: ^2 y esas cosas)

4.3 Graficación utilizando GGplot

Gráficos de barras, líneas y cómo formar una tabla para introducir los datos formula

5 Visualización y manejo de datos espaciales

Utilizar la base de datos del coronavirus, y bajar el shape del país (con todo y municipios)

5.1 Lectura de archivos tipo .SHP (shape)

5.2 Manipulación de datos espaciales (shape features)

5.3 Representación espacial de datos espaciales (plot y GGplot)

5.4 Gráficos dinámicos de datos espaciales

6 Dashboards

6.1 Introducción a Markdown (chunks)

Seleccionar otro tipo, no scripts, sino una plantilla y un nuevo markdown

6.2 Utilización de Flexdashboards

Seleccionar otra plantilla. Jalar otros gráficos y ponerlos en los chunks

6.3 Publicación de Mardowns y Flexdashboards

Crear cuenta en rpubs o shinnyapp.io

endash: –
emdash: —
ellipsis: …
inline equation: \(A = \pi*r^{2} \phi \rho \chi \frac{4}{5}\)

horizontal rule (or slide break):


Veamos

block quote
el wey

  • unordered list
  • item 2
    • sub-item 1
    • sub-item 2
  1. ordered list
  2. item 2
  • sub-item 1
  • sub-item 2
Table Header Second Header
Table Cell Cell 2
Cell 3 Cell 4
summary(cars)
##      speed           dist       
##  Min.   : 4.0   Min.   :  2.00  
##  1st Qu.:12.0   1st Qu.: 26.00  
##  Median :15.0   Median : 36.00  
##  Mean   :15.4   Mean   : 42.98  
##  3rd Qu.:19.0   3rd Qu.: 56.00  
##  Max.   :25.0   Max.   :120.00

You can also embed plots, for example:

#webshot::install_phantomjs()
 knitr::include_app('https://hdltorre.shinyapps.io/Funciana2/', height = '600px')