Aquí se fijan opciones de manera global para los chunks, y se pueden cambiar
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
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.
¿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
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.
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
\(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
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
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"
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
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
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.
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)
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
| 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 |
Introducción manual en un script.
Utilizar dos paqueterías para importarlos (foreign y readxl)
attach() apply() Operadores $
Como generarlos (función matriz) y concatenar, cbind, rbind
Suma, resta, multiplicación, comprobación del inverso
Explicar el pnorm, rnorm y dnorm (y las otras que siguen su forma )
Todo lo que se puede poner, y meter el histograma por ahí
Tipo de fórmula (encuentras lo que significa : * :: ^2 y esas cosas)
Gráficos de barras, líneas y cómo formar una tabla para introducir los datos formula
Utilizar la base de datos del coronavirus, y bajar el shape del país (con todo y municipios)
Seleccionar otro tipo, no scripts, sino una plantilla y un nuevo markdown
Seleccionar otra plantilla. Jalar otros gráficos y ponerlos en los chunks
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
| 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')