Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Apuntes de Clase de #3 Introducción Al INTRODUCIÓN AL R Y AL R - STUDIO
Apuntes de Clase de #3 Introducción Al INTRODUCIÓN AL R Y AL R - STUDIO
Y AL R- STUDIO Apuntes
El objetivo de este apunte de clase es proporcionar las de Clase
nociones básicas para personas interesadas en
comenzar a utilizar el paquete econométrico R. N°3
Poniendo énfasis en el funcionamiento de R, con el
objetivo de que se pueda usar de una manera básica.
Dado que R brinda una amplia gama de posibilidades,
es útil para el principiante adquirir algunas nociones y
conceptos y así progresar gradualmente.
Serie de apuntes de clase IFE N°03 noviembre del 2022
INTRODUCIÓN AL R Y AL R- STUDIO ∗
Resumen
R es un programa es ampliamente conocido como un lenguaje de programación y un entorno para
análisis estadístico y para la realización de gráficos de gran calidad. Contiene un entorno de
computación factible para la implementación y la aplicación de métodos numéricos de manera
sencilla y efectiva. Aunque el lenguaje R permite varios estilos de programación, en la medida de lo
posible, se usa un estilo orientado a la "programación de arreglos" (llamado "vectorización"). Como R
es un lenguaje interpretado para acelerar R usando "vectorización", o usando el paquete Rcpp para
conectar R con C++ y también paralelización.
El objetivo de este apunte de clase es proporcionar las nociones básicas para personas interesadas
en comenzar a utilizar el paquete econométrico R. Poniendo énfasis en el funcionamiento de R, con
el objetivo de que se pueda usar de una manera básica. Dado que R brinda una amplia gama de
posibilidades, es útil para el principiante adquirir algunas nociones y conceptos y así progresar
gradualmente.
Se busca, asimismo simplificar al máximo las explicaciones para hacerlas lo más comprensivas
posibles, pero al mismo tiempo proporcionando detalles útiles, algunas veces con la ayuda de tablas.
1
Economista con más de 15 años de experiencia en el dictado de: Econometría Financiera, Econometría Avanzada,
Macroeconomía y Microeconomía e informática para economistas. Docente investigador en la UNMSM en el área de finanzas y
ciencia de datos. Docente de Econometría Avanzada con Stata, R Studio y Python. Magister en Economía con mención en
Finanzas y MBA CENTRUM en PUCP. Estudios concluidos del Doctorado en Economía (UNAM.) MBA con Énfasis en
Business Intelligence y Big Data por el Instituto europeo de Postgrado y el Master en Ciencia de datos y análisis por la
Universidad Sao Paulo y el Doctorado en Economía y Finanzas UFM- OMMA. Cofundador de la empresa de Capacitación
Finance and Econometrics SAC.
Contenido
1. Introducción ........................................................................................................................................ 3
2. Introducción al entorno R ................................................................................................................... 4
2.1. Instalación de R y R‐Studio .......................................................................................................... 6
1.2 Instalación de R Studio. ................................................................................................................. 9
3. Ventajas y desventajas de R Studio ................................................................................................... 12
3. R como un sistema de ventanas........................................................................................................ 17
3.1 Utilización interactiva de R.......................................................................................................... 18
3.2. Programas relacionados y documentación ................................................................................ 18
3.3. El espacio de trabajo .................................................................................................................. 18
3.4 Algunas características importantes de R ................................................................................... 19
3.4.1 El sistema R está dividido en dos partes conceptuales: ....................................................... 19
4. Funciones básicas de R ...................................................................................................................... 21
5. Operaciones básicas .......................................................................................................................... 22
6. Estadística con R ................................................................................................................................ 24
6. Objetos – Tipos .................................................................................................................................. 25
6.1 Objetos ........................................................................................................................................ 25
6.1.1 Vectores ............................................................................................................................... 25
6.1.2 Creación de un vector .......................................................................................................... 26
6.1.3 Generación de Niveles ......................................................................................................... 29
6.1.4 Factores ................................................................................................................................ 31
6.1.4 Indexación de Factores......................................................................................................... 37
6.1.6 Uso de las listas .................................................................................................................... 40
7. Operaciones con Matrices................................................................................................................. 41
8. Arrays (Variable Multiindexada) ....................................................................................................... 46
9. Data frames ...................................................................................................................................... 46
Creamos una matriz. ......................................................................................................................... 48
Bibliografía ............................................................................................................................................ 50
1. Introducción
2. Introducción al entorno R
2
Interfaz es lo que conocemos en inglés como interface (“superficie de contacto”). En informática, se utiliza para
nombrar a la conexión funcional entre dos sistemas, programas, dispositivos o componentes de cualquier tipo,
que proporciona una comunicación de distintos niveles permitiendo el intercambio de información. Su plural es
interfaces. Ejemplos de interfaces en informática son las interfaces de usuario (entre computadora y persona)
como sería una pantalla o un ratón (si hablamos de hardware) o la ventana gráfica de un programa con la que
interactuamos (si hablamos de software); las interfaces físicas (entre dos dispositivos) como el SCSI o el USB; o las
interfaces lógicas (entre dos programas) como la API o el DOM.
FIGURA N° 1
Figura Nº 2
FIGURA N° 2
FIGURA N° 3
FIGURA N° 4
FIGURA N° 5
FIGURA N° 6
Hoy en día, la mejor plataforma para utilizar R (sobre todo para el principiante) es
RStudio1. RStudio es un IDE 3 muy popular y que ofrece un entorno prácticamente
idéntico en todos los sistemas operativos para utilizar R. Para instalar esta
3
Normalmente, un IDE consiste de un editor de código fuente, herramientas de construcción automáticas y un depurador. La
mayoría de los IDE tienen un autocompletado inteligente de código (IntelliSense). Algunos IDE contienen un compilador, un
intérprete, o ambos, tales como NetBeans y Eclipse; otros no, tales como SharpDevelop y Lazarus. El límite entre un IDE y otras
partes del entorno de desarrollo de software más amplio no está bien definido. Muchas veces, a los efectos de simplificar la
construcción de la interfaz gráfica de usuario (GUI, por sus siglas en inglés) se integran un sistema controlador de versión y
varias herramientas. Muchos IDE modernos también cuentan con un navegador de clases, un buscador de objetos y un
diagrama de jerarquía de clases, para su uso con el desarrollo de software orientado a objetos.
https://posit.co/
FIGURA N° 7
FIGURA N° 8
FIGURA N° 9
RStudio, por defecto, tiene cuatro paneles. El panel inferior izquierdo es una consola
de R. En ella se puede escribir y ejecutar código. R muestra también en ella los
resultados obtenidos.
FIGURA N° 10
4
¡La editorial Springer tiene una colección –UseR! – dedicada exclusivamente a R.
5 Un bucle o ciclo, en programación, es una secuencia que ejecuta repetidas veces un trozo de código,
hasta que la condición asignada a dicho bucle deja de cumplirse. Los tres bucles más utilizados en
programación son el bucle while, el bucle for y el bucle do-while.
6
Por ejemplo: http://stat.cmu.edu/S/
ls ()
La función rm() elimina del espacio de trabajo los objetos que se le pasan como
argumento.
rm(x)
El directorio de trabajo es donde RGui salva por defecto los resultados y también de
donde intenta por defecto leer los ficheros. Para saber cuál es el directorio de trabajo
hay que ejecutar
getwd()
7
Por sus siglas en inglés: The Comprehensive R Archive Network. Su página Web es:
http://cran.rproject.org/.
4. Funciones básicas de R
FIGURA N° 11
5. Operaciones básicas
Cuadro N. º1:
Operadores matemáticos
Asignar un valor a cierta cantidad de variables, por ejemplo: a una variable w el valor
3, a la variable y el valor 7 y a la variable z el valor 90, a una variable suma la adición
de las variables anteriores y fi te obtendremos la raíz cuadrada de la variable suma,
guardándola en una variable con el nombre raíz. A continuación, se muestra el
ejemplo en R:
suma <- w + y + z
> suma
[1] 100
12
raiz <- sqrt(suma)
raíz
[1] 10
pi
cos(30)
acos(0.1542514)
choose(30,20)
a <- "Cálculo"
a
[1] "Cálculo"
b <- "Actuarial"
b
[1] "Actuarial"
Para obtener un listado o desplegado de las variables que han sido definidas en la
sesión se debe de escribir el comando ls().
ls()
[1] "a" "b" "raiz" "suma" "w" "y" "z"
6. Estadística con R
6. Objetos – Tipos
6.1 Objetos
En términos generales, todos los elementos que utiliza R son objetos, es decir para
R: un valor numérico, un vector, una función, una base de datos, un gráfico etc.,
todos son tratados como objetos. Para realizar un uso eficiente de R es importante
comprender y aprender a manipular bien las distintas clases de objetos que maneja
el programa. En esta sección nos enfocaremos en aquellos objetos que R utiliza
para analizar los datos: valores, vectores, matrices, dataframes, series temporales y
listas.
6.1.1 Vectores
Un vector es una secuencia ordenada de datos, los cuales han de ser del mismo
tipo, es decir todos deben de ser números, caracteres, cadenas de caracteres,
9
La Programación Orientada a Objetos (POO) es un paradigma de programación, es decir, un modelo
o un estilo de programación que nos da unas guías sobre cómo trabajar con él. Se basa en el concepto
de clases y objetos. Este tipo de programación se utiliza para estructurar un programa de software en
piezas simples y reutilizables de planos de código (clases) para crear instancias individuales de
objetos.
valores lógicos, etc. Los tipos de datos que se pueden almacenar en un vector, se
destacan los siguientes ( Rivera Loredo, 2018):
La función vector, que tiene dos argumentos mode y length, crean un vector cuyos
elementos pueden ser de tipo numérico, lógico o carácter dependiendo del
argumento especificado en mode (0, FALSE o “” respectivamente).
vector(mode = "logical", length = 0)
Ejemplo:
v <- vector("integer", 0)
v # Un vector de enteros sin elementos
## integer(0)
w <- vector("numeric", 3)
w # Un vector de tres ceros
## [1] 0 0 0
u <- vector("logical", 5)
u # Un vector de 5 FALSE
## [1] FALSE FALSE FALSE FALSE FALSE
w <- c(0:10)
w
[1] 0 1 2 3 4 5 6 7 8 9 10
y <- seq(0, 100, by = 10)
y
[1] 0 10 20 30 40 50 60 70 80 90 100
Para crear vectores de otro tipo se sugiere la ayuda de R. Las siguientes funciones
tienen exactamente el mismo efecto y tienen un solo argumento (la longitud del
vector): numeric(), logical(), y character(). El primer tipo de objeto que
manejaremos es el vector (colección ordenada de elementos del mismo tipo).
Podemos escribir vectores de varias maneras, utilizando la opción “:” (el vector
comienza en el primer número suministrado y analiza en el segundo o en un
[1] 1 2 3 4 5 6 7 8 9 10
10:1
[1] 10 9 8 7 6 5 4 3 2 1
Tenemos, además, formas adicionales de crear vectores. Una de las más comunes
es utilizando la función “seq(a, b, c)”, que genera secuencias de números reales,
donde el primer elemento indicaría el principio de la secuencia, el segundo el final y
el tercero el incremento que se debe usar para generar la secuencia. Aunque
también podemos poner la función de estas formas “seq (length = d, from = a, to =
b)” o “seq(by = c, f rom = a, to = b)” siendo “d” la longitud del vector. Ejemplo:
Acceso a datos:
Asimismo, la función vector tiene otras funciones complementarias con las cuales
también se puede trabajar:
Finalmente, “expand.grid( )” crea una tabla de datos con todas las combinaciones
posibles de los elementos de los vectores o factores que proporcionemos como
argumentos.
c("Hola", "Adios")
c(1, 1+2i)
c(1-1i, 2)
dias.semana=c("Lunes","Martes","Miércoles","Jueves","Viernes","Sábado","Domingo")
dias.semana
x < - 1:7
names(x)<- -c("Lunes","Martes","Miercoles","Jueves","Viernes","Sabado","Domingo")
También podemos conocer o cambiar el modo o tipo de los elementos que forman el
vector mediante la función “mode” (tomaría los valores: logical, numeric, complex,
character, null, list, function, graphics, expression, name, frame, raw y unknown).
6.1.4 Factores
Para cambiar el orden en el que se mostrarán los niveles de su orden ordenado por
defecto, el argumento “levels =” puede recibir un vector de todos los valores posibles
de la variable en el orden que desee. Si el pedido también debe utilizarse al realizar
# Tres niveles
> factor(1:3)
[1] 1 2 3
Levels: 1 2 3
El atributo “levels” indica los valores numéricos posibles (es decir los caracteres
diferentes que aparecen en el vector). Se utiliza, por ejemplo, para dividir una
población en grupos.
La función “factor” se utiliza para codificar un vector como un factor. Creando tantos
niveles como le indiquemos.
# Cinco niveles
factor (1:3, levels=1:5)
[1] 1 2 3
Levels: 1 2 3 4 5
# Un vector de dos elementos con cuatro niveles
aa<-factor(c(2,3), levels=2:5)
aa
[1] 2 3
Levels: 2 3 4 5
levels(aa)
> levels(aa)
[1] "2" "3" "4" "5"
factor(c("Mujer","Mujer","Hombre"))
[1] Mujer Mujer Hombre
Levels: Hombre Mujer
Con la opción “exclude”, por ejemplo “factor(1: 5, exclude = 4)” excluimos los
valores de los niveles que necesitemos y con “ordered” especificamos si los niveles
del factor están ordenados.
factor(1:5, exclude=4)
[1] 1 2 3 <NA> 5
Levels: 1 2 3 5
data = c(1,2,2,3,1,2,3,3,1,2,3,3,1)
fdata = factor(data)
fdata
[1] 1 2 2 3 1 2 3 3 1 2 3 3 1
Levels: 1 2 3
rdata = factor(data,labels=c("I","II","III"))
rdata
Levels: I II III
levels(fdata) = c('I','II','III')
fdata
Levels: I II III
Como ejemplo de un factor ordenado, considere los datos que consisten en los
nombres de meses:
mons=c("March","April","January","November","January", "September",
"October","September","November","August","January","November",
"November","February","May","August","July","December","August",
"August","September","November", "February","April")
mons = factor(mons)
table(mons)
mons
2 4 1 2 3 1
1 1 5 1 3
Aunque los meses claramente tienen una ordenación, esto no se refleja en la salida
de la función de tabla. Además, los operadores de comparación no son compatibles
con factores no ordenados. La creación de un factor ordenado resuelve estos
problemas:
ordered=TRUE)
[1] TRUE
table(mons)
mons
3 2 1 2 1 0
1 4 3 1 5 1
fert = c(10,20,20,50,10,20,10,50,20)
fert = factor(fert,levels=c(10,20,50),ordered=TRUE)
fert
[1] 10 20 20 50 10 20 10 50 20
mean(fert)
[1] NA
Warning message:
> mean(as.numeric(levels(fert)[fert]))
[1] 23.33333
La indexación del valor devuelto de la función levels es la forma más confiable para
convertir los factores numéricos a sus valores numéricos originales. Cuando se crea
primero un factor, todos sus niveles se almacenan junto con el factor y si se extraen
subconjuntos del factor, se conservarán todos los niveles originales. Esto puede
crear problemas al construir matrices de modelos y puede o no ser útil al mostrar los
datos usando, digamos, la función de tabla. Como ejemplo, considere una muestra
aleatoria del vector de letras, que es parte de la distribución de base R.
lets = sample(letters,size=100,replace=TRUE)
lets = factor(lets)
table(lets[1:5])
abcdefghijklmnopqrstuvwxyz
10000000001000001010000001
table(factor(lets[1:5]))
akqsz
11111
Se debe tener cuidado al combinar variables que son factores, porque la función c
interpretará los factores como enteros. Para combinar los factores, primero deben
ser convertidos de nuevo a sus valores originales (a través de la función de los
niveles), luego catenated y convertido a un nuevo factor:
l1 = factor(sample(letters,size=10,replace=TRUE))
l2 = factor(sample(letters,size=10,replace=TRUE))
l1
[1] o b i v q n q w e z
Levels: b e i n o q v w z
l2
[1] b a s b l r g m z o
Levels: a b g l m o r s z
l12 = factor(c(levels(l1)[l1],levels(l2)[l2]))
l12
[1] o b i v q n q w e z b a s b l r g m z o
Levels: a b e g i l m n o q r s v w z
Existen funciones que nos permiten convertir diferentes clases de objetos a modos
diferentes. Una situación frecuente es la conversión de factores a valores numéricos.
En este caso, R realiza la conversión usando las expresiones “as.numeric” y
“as.character”. Para realizar la conversión manteniendo los valores literales del
factor, primero se debe convertir a carácter y después a numérico. Este
procedimiento puede ser bastante útil si en un archivo una variable numérica
también tiene valores no-numéricos.
c.p<-c(18002,18194,18199)
c.p
mode(c.p)
[1] "numeric"
codigo.postal<-factor(c.p)
codigo.postal
c.p<-c(18002,18194,18199)
c.p
mode(c.p)
[1] "numeric"
codigo.postal<-factor(c.p)
codigo.postal
f<-factor(c(1,3))
as.numeric(f)
[1] 1 2
as.numeric(as.character(f))
[1] 1 3
Una lista se construye con la función list que devuelve un objeto de tipo lista con
tantos componentes como argumentos se le suministren y es utilizado para devolver
el resultado de una función.
Una lista se crea de manera similar a un marco de datos con la función list. No existe
ninguna limitación en el tipo de objetos que se pueden incluir. A diferencia de
data.frame(), los nombres de los objetos no se toman por defecto; tomando los
vectores x y y del ejemplo anterior:
dias.semana
list(A=dias.semana,B=1:7)
[1] 1 2 3 4 5 6 7
Puede referirse a cada uno de los elementos de la lista de dos formas distintas: Si
tiene nombre, como en este caso, mediante el nombre de la lista, el símbolo $ y el
nombre del elemento. En cualquier caso, siempre puede referirse a él mediante el
índice de posición entre dobles corchetes.
list(A=dias.semana,B=1:7)$A
list(A=dias.semana,B=1:7)$B
[1] 1 2 3 4 5 6 7
m2<-matrix(1:4,3)
Warning message:
In matrix(1:4, 3) :
La longitud de los datos [4] no es un submúltiplo o múltiplo del número de filas [3] en
la matriz
Si quiere dar nombres a las columnas (o a las filas) puedes hacerlo asignando
valores al parámetro “dim-names”, lista con los nombres de las filas y las columnas.
Las componentes de la lista deben tener longitud o ser un vector de cadenas de
caracteres con la misma longitud que la dimensión de la matriz.
matrix(1:9,3,3,dim=list(c(),c("A1","A2","A3")))
matrix(1:9,3,3,dim=list(c(),c("A1","A2","A3")))
A1 A2 A3
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
> matrix(1:9,3,3,dim=list(c("a1","a2","a3"),c()))
a1 1 4 7
a2 2 5 8
a3 3 6 9
matrix(1:9,3,3,dim=list(c("a1","a2","a3"),c("A1","A2","A3")))
A1 A2 A3
a1 1 4 7
a2 2 5 8
a3 3 6 9
datos<-c(70,108,82,1.80,2.06,1.98,27,19,32)
mm<-matrix(datos,ncol=3,dimnames=list(c("Peso","Altura","Edad"),c()),byrow=T) > #
mm
datos<-c(70,108,82,1.80,2.06,1.98,27,19,32)
mm<-matrix(datos,ncol=3,dimnames=list(c("Peso","Altura","Edad"),c()),byrow=T)
mm
[,1] [,2] [,3]
Peso 70.0 108.00 82.00
Altura 1.8 2.06 1.98
Edad 27.0 19.00 32.00
mm
[,1] [,2] [,3]
mm<-matrix(datos,ncol=3,dimnames=list(c("Peso","Altura","Edad"),c()),byrow=F)
# Con byrow=F le hemos dicho que lea primero por columnas, con lo que no se
muestra correctamente
mm
[,1] [,2] [,3]
Peso 70 1.80 27
Altura 108 2.06 19
Edad 82 1.98 32
Podemos realizar operaciones con matrices de la misma forma que lo hacíamos con
los vectores, es decir componente a componente: suma, resta, multiplicación por
escalares, multiplicación elemento a elemento, división elemento a elemento,
exponenciación, división entera y módulo, que se realizan mediante los símbolos: +,
- , *, /, ˆ, % / % y % %.
M1
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
M2<-matrix((1:6)^2,2,3)
M2
[,1] [,2] [,3]
[1,] 1 9 25
[2,] 4 16 36
M1+M2
[,1] [,2] [,3]
[1,] 2 12 30
[2,] 6 20 42
Aunque en principio no están relacionadas las matrices con las tablas de frecuencias
a partir de factores, podemos utilizar las primeras para expresar las segundas.
Hemos visto que un factor define una tabla de entrada simple. Del mismo modo, dos
factores definen una tabla de doble entrada, y así sucesivamente. La función “table(
)” calcula tablas de frecuencias a partir de factores de igual longitud. Si existen k
argumentos categóricos, el resultado será una variable k-indexada, que contiene la
tabla de frecuencias.
a=c(1,3,2)
b=1.3
b=1:3
table(a,b)
9. Data frames
Los data frames son estructuras de datos de dos dimensiones (rectangulares) que
pueden contener datos de diferentes tipos, por lo tanto, son heterogéneas. Esta
Podemos entender a los data frames como una versión más flexible de una matriz.
Mientras que en una matriz todas las celdas deben contener datos del mismo tipo,
los renglones de un data frame admiten datos de distintos tipos, pero sus columnas
conservan la restricción de contener datos de un sólo tipo.
En términos generales, los renglones en un data frame representan casos,
individuos u observaciones, mientras que las columnas representan atributos, rasgos
o variables.
Para crear un data frame usamos la función data.frame(). Esta función nos pedirá
un número de vectores igual al número de columnas que deseemos. Todos los
vectores que proporcionemos deben tener el mismo largo.
Esto es muy importante: Un data frame está compuesto por vectores. Más
adelante se hará evidente porque esta característica de un data frame es
sumamente importante y también, cómo podemos sacarle provecho.
Además, podemos asignar un nombre a cada vector, que se convertirá en el nombre
de la columna. Como todos los nombres, es recomendable que este sea claro, no
ambiguo y descriptivo.
mi_df
## entero factor numero cadena
## 1 1 a 1.2 a
## 2 2 b 3.4 b
## 3 3 c 4.5 c
## 4 4 d 5.6 d
# Podemos usar dim() en un data frame
dim(mi_df)
## [1] 4 4
# El largo de un data frame es igual a su número de columnas
length(mi_df)
## [1] 4
# names() nos permite ver los nombres de las columnas
names(mi_df)
## [1] "entero" "factor" "numero" "cadena"
# La clase de un data frame es data.frame
class(data.frame)
## [1] "function"
Si los vectores que usamos para construir el data frame no son del mismo largo, los
datos no se reciclaran. Se nos devolverá un error.
data.frame(
"entero" = 1:3,
"factor" = c("a", "b", "c", "d"),
"numero" = c(1.2, 3.4, 4.5, 5.6),
"cadena" = as.character(c("a", "b", "c", "d"))
)
## Error in data.frame(entero = 1:3, factor = c("a", "b", "c", "d"), numero = c(1.2, :
arguments imply differing number of rows: 3, 4
También podemos coercionar esta matriz a un data frame.
Verificamos el resultado
class(df)
## [1] "data.frame"
# Resultado
df
## V1 V2 V3 V4
## 1 1 4 7 10
## 2 2 5 8 11
## 3 3 6 9 12
mi_df * 2
## Warning in Ops.factor(left, right): '*' not meaningful for factors
índice de imágenes
FIGURA N° 1 ............................................................................................................................................ 6
FIGURA N° 2 ............................................................................................................................................ 6
FIGURA N° 3 ............................................................................................................................................ 7
FIGURA N° 4 ............................................................................................................................................ 8
FIGURA N° 5 ............................................................................................................................................ 8
FIGURA N° 6 ............................................................................................................................................ 9
FIGURA N° 7 .......................................................................................................................................... 10
FIGURA N° 8 .......................................................................................................................................... 10
FIGURA N° 9 .......................................................................................................................................... 11
FIGURA N° 10 ........................................................................................................................................ 12
FIGURA N° 11 ........................................................................................................................................ 21
Bibliografía
Sergio Santana, J., & Mateos Farfán, E. (2014). El arte de programar en R:Un lenguaje para la
estadística. UNESCO, México. Instituto Mexicano de Tecnología del Agua.
Paradis, E. (2010). R para principiantes. Universit Montpellier II. París: Institut des Sciences de
l’E´volution.
Rivera Loredo, C. (2018). Elementos de Cálculo Actuarial con R. Centro Universitario UAEM, Valle de
México, Atizapán de Zaragoza.
Urquía Moraleda, A., & Martín Villalba, C. (2006). Introducción al análisis de datos con R. Madrid,
España.
González, A., & González, S. (2000). Introdución al R. Notas sobre R: Un entorno de programación
para Análisis de Datos y Gráficos. cran.r-project.org.