Elementos Basicos de R
Elementos Basicos de R
Mayo 2020
Índice
1. ¿Qué es R? 2
1.1. Instalación de R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2. Básicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3. Pidiendo Ayuda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2. Entrada de Datos 4
2.1. Datos desde un screen a un vector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.2. Introduciendo Datos desde un archivo a un Dataframe . . . . . . . . . . . . . . . . . . . . 5
2.3. Matrices y Arreglos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.4. Factores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.5. Datos Agrupados y Dataframe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.6. Aplicación Elemental: El Proceso de Bernoulli . . . . . . . . . . . . . . . . . . . . . . . . . 10
4. Simulando Probabilidades 13
6. Representaciones Gráficas 18
6.1. Boxplots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
6.2. Histogramas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
6.3. Tallo y Hoja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
6.4. Scatters Plots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1
En esta lectura introduciremos el lenguaje R y algunos de sus operaciones básicas y edición de proce-
dimientos, con el fin de irnos familiarizando con esta herramienta que utilizaremos a lo largo del curso.
La intención no es realizar una guia exaustiva, sino presentar los primeros elementos para comenzar
a implementar los conceptos probabilı́sticos y estadı́sticos que estaremos impartiendo durante el curso.
1. ¿Qué es R?
R es un sistema de análisis de datos, una calculadora sofisticada y un lenguaje de programaciń orien-
tado a objetos. Es posible llegar bastante lejos usando R ejecutando expresiones simples desde la linea de
comando y es posible que para algunos sea suficente este nivel de profundidad. A un más nivel avanzado,
se pueden escribir funciones propias ya sea para sistematizar el trabajo repetitivo o con la perspectiva de
escribir paquetes adicionales para nuevas funcionalidades1 .
1.1. Instalación de R
R se obtiene de la red a través del CRAN (Comprehensive R Archive Network) y se descarga de la
forma siguiente:
R ya esta instalado.
Tambien podemos descargar un ambiente mucho más amigable para el trabajo en R, que es RS-
tudio que es un conjunto de herramientas integradas diseñadas para ayudarnos a ser más productivo
con R. Incluye una consola, un editor de sintaxis que soporta la ejecución directa de código y una va-
riedad de herramientas robustas para plotear, ver el historial, depurar y administrar el espacio de trabajo.
1.2. Básicos
Para familiarizarnos con R, podemos comenzar trabajar con los comandos que se indican a continua-
ción.
Para iniciar R, haga clic en el icono RStudio o vaya a ”Programas”, seleccione RStudio, y luego haga
clic en el icono RStudio. Al iniciar el programa R y despues de imprimir un mensaje introductorio en la
pantalla, R solicita la entrada con ”>”.
1
A medida que necesitemos profundiza en la herramienta, en las salas de entrenamiento prevista se explicarán las funcio-
nalidades adicionales
2
Las expresiones que se escriben en la l?nea de comandos se eval?an e imprimen. Por ejemplo,
> 8+7*3/2
y se obtiene
[1] 18.5
> x<-2:7
Aqui, los entros del 2 al 7 son asignados al vector x. para chequear el contenido de x, tipeamos x, lo
cual regresa
> x
[1] 2 3 4 5 6 7
o tambien,
> x2<-x^2
causando que cada elemento del vector x sea elevado al cuadrado, para verificar esto tipeamos x2, es
decir,
> x2
[1] 4 9 16 25 36 49
> X<-10
> prod1<-X*x
> prod1
[1] 20 30 40 50 60 70
Aquı́, el entero 10 es almacenado en la variable X, ası́, X ∗ x causas que cada entrada del vector x sea
multiplicada por 10.
Las entidades que R crea y manipula se llaman objetos. Estos incluyen variables, matrices de n?meros
(arrays), cadenas (strings) o funciones (function). Todos los objetos creados en R se almacenan en lo que
se conoce como espacio de trabajo (workspace).
3
1.3. Pidiendo Ayuda
La manera más sencilla de pedir ayuda en hacer click directamente en el boton help, sino, directamente
en la consola se puede escribir,
> help()
> [Link]()
RStudio ya trae estas opciones incorporadas en el espacio de trabajo, simplemente con selecionar la
opción de Help en la consola correspondiente a Files, PLots, Packages, Help, Viewer, se puede tipear
directamente el comando, función o cualquier otro objeto con el cual se tenga dudas.
> demo()
Una forma más especı́fica de obtener ayuda cuando se trabaja en el entorno R es escribir el nombre de
la función que se necesita. Por ejemplo,
> demo(image)
Esto proporcionar detalles sobre la estructura sintáctica y los ploteos exactos de la instrucción “image”.
> ?image
2. Entrada de Datos
Antes de realizar un análisis estadı́stico, es necesario introducir los datos. La forma de hacerlo varı́a
en función de la cantidad de datos implicados.
10, 12, 15, 14, 18, 12, 5, 20, 21, 14, 18, 10, 11, 12, 15, 17, 19, 20, 11, 9
Para introducir estos datos en R, escribimos
> espera<-c(10,12,15,14,18,12,5,20,21,14,18,10,11,12,15,17,19,20,11,9)
4
La instrucción c(...) se utiliza para definir un vector que contiene los 20 puntos de datos. A continuación,
se asignan a un vector denominado espera.
> espera
y se obtiene
[1] 10 12 15 14 18 12 5 20 21 14 18 10 11 12 15 17 19 20 11 9
R maneja un vector como un solo objeto. Los cálculos se pueden hacer con vectores como los números
ordinarios siempre que sean de la misma longitud.
Definición 1. Un dataframe es un objeto con filas y columnas o, de forma equivalente, es una lista de
vectores de la misma longitud. Cada vector consiste en observaciones repetidas de alguna variable. Las
variables pueden ser numéricas, cadenas (strings) o factores (factors).
Aquı́, header = T especifica que la primera lı́nea es un encabezado, en este caso conteniendo los
nombres de variables. na= significa que los espacios en blanco serán completados con NA. stringsAsFac-
tors=TRUE significa que las entradas de la tabla son factores, en este caso numéricos.
Observe que la barra oblicua (/) se utiliza en el nombre del archivo, no la barra invertida. (\), lo que
serı́a de esperar en el entorno Windows.
> head(notas,6)
o tambien,
5
> View(notas)
Finalmente, la instrucción para acceder a las variables de columna es usar el nombre del marco de
datos seguido del nombre de la columna relevante. Por ejemplo,
> notas$PARCIAL.1[13]
R tiene una gran variedad de funciones, tales como suma, máximo y mı́nimo que calculan la suma,
máximo y mı́nimo de todos los elementos del vector, respectivamente. La mayorı́a de las funciones en
R se pueden aplicar a vectores, ası́ como a otros tipos de objetos tales como como matrices y tablas de
datos agrupados.
Algunas de las funciones, como suma, máximo y mı́nimo, producen sólo un número como resultado.
Sin embargo, la mayorı́a de las funciones aplican sus operaciones a cada elemento del vector, y producen
otro vector del mismo tamaño. Para obtener información sobre una función R, simplemente escriba un
signo de interrogaci?n seguido del nombre de la funci?n, o su equivalente, utilice la función de ayuda.
Por ejemplo, log es el logaritmo natural. Para conocer todas sus caracterśticas escriba el comando
(para ello necesitará acceso a internet):
> help(log)
> log((1:10)^2)
Nótese que por convención común, si no se especifica una base para el log, entonces es el logaritmo
natural, es decir, el logaritmo neperiano. Cualquier otra base debe ser especificada explı́citamente. Por
ejmplo, si quisiera aplicarse logaritmo base 10 a los números del 2 al 5, en R se debe hacer de la forma
siguiente.
> log(10^(2:5),base=10)
[1] 2 3 4 5
En R, la noción de matriz se extiende a elementos de cualquier tipo, por lo que podrı́a tener, por
ejemplo, una matriz de cadenas de caracteres. Las matrices y arreglos se representan como vectores con
dimensiones:
> x<-1:12
> dim(x)<-c(3,4)
> x
6
[,1] [,2] [,3] [,4]
[1,] 1 4 7 10
[2,] 2 5 8 11
[3,] 3 6 9 12
La función dim establece o cambia el atributo de dimensión de x, haciendo que R trate el vector de
12 números como una matriz de 3 × 4. Observe que el almacenamiento se hace inuciando en la columna
mayor; es decir, los elementos de la primera columna son seguidos por los de la segunda, etc.
Aquı́ byrow significa que el arreglo se hará por fila en lugar de columnas como en el caso anterior.
Tambien podemos darle nombre a la columnas y filas con los comandas [Link] y [Link],
respectivamente.
a b c
[1,] 1 5 9
[2,] 2 6 10
[3,] 3 7 11
[4,] 4 8 12
A B C
[1,] 1 5 9
[2,] 2 6 10
[3,] 3 7 11
[4,] 4 8 12
7
> rbind(A=1:4,B=5:8,C=9:12)
[,1] [,2] [,3] [,4]
A 1 2 3 4
B 5 6 7 8
C 9 10 11 12
2.4. Factores
Es común en los datos estadı́sticos variables categóricas, que indican alguna subdivisión de los datos,
como la clase social, el diagnóstico primario, etapa de un tumor, etapa de Tanner de la pubertad, etc.
Tales variables pueden ser especidicadas en R como factores.
Hay análisis en los que es esencial que R sea capaz de distinguir entre códigos categóricos y variables
cuyos valores tienen una relación directa significado numérico
La terminologı́a es que un factor tiene un conjunto de niveles - digamos cuatro niveles de concreción.
Internamente, un factor de cuatro niveles consta de dos posiciones: a) un vector de números enteros entre
1 y 4, y b) un vector de caracteres de longitud 4 que contenga cadenas que describan los cuatro niveles.
Veamos un ejemplo:
> dolor<- c(0,3,2,2,1)
> fdolor<- factor(dolor,levels=0:3)
> levels(fdolor) <- c("Ninguno","Bajo","Medio","Severo")
> fdolor
[1] Ninguno Severo Medio Medio Bajo
Levels: Ninguno Bajo Medio Severo
La función [Link] extrae la codificación numérica como números del 1 al 4 y levels extrae los
nombres de los niveles. Observe que la codificación de entrada original en términos de números del 0 al
3 ha desaparecido; la representación interna de un factor siempre utiliza números que empiezan por 1.
> [Link](fdolor)
[1] 1 4 3 3 2
> levels(fdolor)
[1] "Ninguno" "Bajo" "Medio" "Severo"
8
> library("ISwR")
> energy
expend stature
1 9.21 obese
2 7.53 lean
3 7.48 lean
4 8.08 lean
5 8.09 lean
6 10.15 lean
7 8.40 lean
8 10.88 lean
9 6.13 lean
10 7.90 lean
11 11.51 obese
12 12.79 obese
13 7.05 lean
14 11.85 obese
15 9.97 obese
16 7.48 lean
17 8.79 obese
18 9.69 obese
19 9.68 obese
20 7.58 lean
21 9.19 obese
22 8.11 lean
A veces es deseable tener datos en un vector separado para cada grupo. Afortunadamente, es fácil
extraerlos del dataframe. Por ejemplo, si quisieramos extraer el gasto de las personas obesas, lo hacemos
de las siguiente forma:
> [Link]<-energy$expend[energy$stature=="obese"]
> [Link]
[1] 9.21 11.51 12.79 11.85 9.97 8.79 9.69 9.68 9.19
$lean
[1] 7.53 7.48 8.08 8.09 10.15 8.40 10.88 6.13 7.90 7.05 7.48 7.58
[13] 8.11
$obese
[1] 9.21 11.51 12.79 11.85 9.97 8.79 9.69 9.68 9.19
9
2.6. Aplicación Elemental: El Proceso de Bernoulli
Comenzamos nuestro estudio de probabilidad con el proceso de lanzar una moneda. La función que
lanza una moneda en R se llama rbinom. Para lanzar una moneda justa 10 veces, usamos este comando:
> rbinom(10,1,1/2)
[1] 0 1 0 0 1 0 0 0 0 0
Esta función tiene tres parámetros. El primer parámetro es el número de lanzamientos. El segundo pa-
rámetro selecciona el caso especial de esta función que implementa el proceso de Bernoulli. El proceso
general se explicará luego. El tercer parámetro es el sesgo de la moneda. Cada vez que llame a esta función
obtendrá otra secuencia de 0 y 1. La funci?n rbinom es una de las funciones R para generar n?meros
aleatorios. Veremos muchos má adelante en el curso.
Si utilizamos operaciones booleanas podemos determinar si se tiene caras o sellos en una realización
del experimento de lanzar una moneda 10 veces. Para ello hacemos
> rbinom(10,1,1/2)==1
[1] FALSE FALSE FALSE TRUE TRUE TRUE FALSE FALSE FALSE TRUE
obteniendo un vector de valores booleanos en lugar de ceros y unos, con lo que estamos solicitando a
R que nos diga si es cierto que en determinada entrada del vector se tiene una cara. Una vez realizado
esto, podemos utilizar la siguiente instrucción para que R nos indique en qué posición de a obtenido una
cara, ası́
> (1:10)[rbinom(10,1,1/2)==1]
[1] 3 4 7 10
Finalmente, cuando una expresión resulta especialmente complicada, podemos invocarla a través de
una función en la cual sólo sea necesario especificar los parámetros. Por ejemplo, si quisieramos modelar
en experimento de lanzar una moneda balanceada o no n veces, pudiesemos hacerlo a través de una
función en la cual sólo se necesite especificar el número de lanzamientos y la probabilidad de obtener una
cara, de la forma siguiente:
> caras<-function(n,p)(1:n)[rbinom(n,1,p)==1]
ası́, llamamos a la función caras para obtener la posición que ocupan las caras en una vector, que por
ejemplo, recoge los resultados de 10 lanzamientos con una probabilidad de obtener una cara de 3/4,
> caras(10,3/4)
[1] 1 2 3 4 5 7 8 9 10
Con estos elementos básicos de R, ya podemos empezar a inspeccionar todas los elementos que no
spermite hacer R, e iremos desarrollando otras funciones a medida que se avance en el curso. De igual
manera, en la web se encuntran suficientes manuales de R que pueden consultar.
10
3. Teorı́a básica de conteo
En esta sección trataremos de ver cómo contar los elementos de un evento prob- NA
Para espacios muestrales grandes, esta puede ser una tarea titánica; afortunadamente, hay ciertas
técnicas estándar del análisis combinatorio que pueden venir en nuestra ayuda. Las más famosas se
conocen como “permutaciones”y “combinaciones”, que proporcionan un método conciso de contar lo que
hay en S y E sin tener que escribir los resultados explı́citamente.
3.1. Permutaciones
Ejemplo 3. Si una clave consiste de tres letras,encuentre la probabilidad que se escoja de manera aleatoria
una clave que no tenga ninguna letra repetida.
Para este ejemplo resulta que el conjunto del cual tomaremos los letras es el correspondiente al alfa-
beto, es decir, el conjunto A = {a, b, c, ..., y, z} conformado por 27 letras.
S = {(x1 , x2 , x3 ) : xi ∈ A, ∀i = 1, 2, 3}
El conjunto S nos dá todas las posibles claves que podemos formar con tres letras del conjunto A.
Como para cada entrada del vector (x1 , x2 , x3 ) podemos elegir entre las 27 letras, entonces, resulta que
> 27^3
[1] 19683
E = {(x1 , x2 , x3 ) : x1 6= x2 6= x2 , xi ∈ A, ∀i = 1, 2, 3}
El conjunto E nos dá todas las posibles claves en las cuales no se repite la letra, para la cual, notemos
que el orden es relevante, es decir, se considera que la clave (a, b, c) es diferente a (b, a, c). De esta
manera, para la primera entrada del vector (x1 , x2 , x3 ), tenemos 27 posibles letras para elegir, para la
segunda 26, y para la tercera 25, con lo que se obtiene que
27!
|E| = (27)(26)(25) =
24!
A lo anterior se lo conoce como “muestreo sin remplazo”. En R, este calculo lo podemos realizar de la
forma siguiente:
> prod(27:25)
[1] 17550
> factorial(27)/factorial(24)
11
[1] 17550
> prod(27:25)/27^3
[1] 0.8916324
n!
Una muestra de tamaño k de n elementos sin remplazo =
(n − k)!
Definición 2. Permutaciones
Las permutaciones son muestras o secuencias ordenadas de un tamaño particular que pueden ser elegidas,
sin reemplazo, de una población.
3.2. Combinatorias
La diferencia entre “combinatorias ”y “permutaciones”radica en el hecho de que con las combinatorias
no importa el orden de los elementos seleccionados.
Ejemplo 4. ¿De cuantas maneras se pueden elegir tres letras distintas {α, β, γ} del alfabeto usual A =
{a, b, c, d, ...}?
Notemos, que tomando las tres letras a, b y c, los conjuntos ordenados son (a, b, c), (a, c, b), (b, a, c),
(b, c, a), (c, a, b), (c, b, a), seis en total; pero si ignoramos el orden, sólo hay una combinación, es decir,
que la forma de contar la cantidad de maneneras que hay para elegir tres letras sin remplezo y sin orden
es el número de formas de elegir tres letras sin remplazo dividido en la cantidad de maneras que se tiene
para ordenarlas, es decir, la permutación de tres elemento, de donde, si C(n, k) denota la forma de elegir
de n elementos k sin orden y P(n, k) las maneras de elegir de n elementos k sin remplazo importando el
orden, es decir, la permutación, entonces,
P(27, 3) (27)(26)(25)
C(27, 3) = =
P(3, 3) (3)(2)(1)
En general,
P(n, k) n! 0! n!
C(n, K) = = =
P(k, k) n − k! k! (k!)(n − k!)
En R, la combinatoria C(27, 3), lo calculamos de la forma siguiente,
> choose(27,3)
[1] 2925
Ejemplo 5. Si una caja contiene 75 chips buenos y 25 chips defectuosos de los cuales se seleccionan 12
chips al azar, busque la probabilidad de que todos los chips sean buenos.
12
Nuevamente, como se supone que todos los chips tienen la misma probabilidad de ser elegidos, lo
primero que debemos hacer es definir el espacio muestral y su cardinalidad.
Definimos S = {(x1 , x2 , ..., x12 ) : xi ∈ A}, donde, A es la caja con los 100 chips. Resulta que para contar
los elementos de S nos damos cuenta que es un muestreo sin remplazo y sin orden, es decir,
usando R,
> choose(100,12)
[1] 1.050421e+15
Ahora, si denotamos por B los chips de la caja buenos y por Bc los chips malos, entonces el evento de
interes, E, podemos definirlo como E = {(x1 , x2 , ..., x12 ) : xi ∈ B}, con lo que notamos, que su cardinalidad
se determina de forma análoga como se hiza para S, ası́,
es decir,
> choose(75,12)
[1] 2.612389e+13
C(75, 12)
P(E) = ,
C(100, 12)
con R,
> choose(75,12)/choose(100,12)
[1] 0.02486992
4. Simulando Probabilidades
En R, podemos simular probabilidades con el enfoque de frecuencias relativas, con la función sample.
Ejemplo 6. Lanzar una moneda
> x<-sample(c("C","S"),10, replace=TRUE)
> x
[1] "C" "C" "S" "C" "S" "C" "S" "S" "S" "C"
Se genera un vector de 10 entradas de caras (C) y sellos (S). Con el comando replace le pedimo a R que
remplace C y S en las entradas del vector.
13
> table(x)
x
C S
5 5
Para obtener las probailidades estimadas, es decir, las frecuencias relativas, hacemos,
> table(x)/10
x
C S
0.5 0.5
[1] "b" "b" "b" "b" "b" "b" "b" "b" "b" "d"
Notemos aquı́ que el primer vector c(”d”,”b”) contiene el espacio de la muestra, y el vector al final
del comando prob=c(0.2,0.8) contiene las probabilidades. R asume que las probabilidades son iguales a
menos que se indique lo contrario.
En los ejemplos anteriores, ya conocemos la probabilidad de que el evento ocurra en cada experimento
empı́rico. El poder real de la simulación proviene de su capacidad para estimar las probabilidades cuando
no se conocen de antemano, veremos ejemplo de esto más adelante
Definición 3. La media es la suma de todos los valores dividida por el número de casos, excluyendo los
valores que faltan.
Para obtener la media en R, cargamos los datos de obesidad y presión sanguinea, [Link], del paquete
ISwR (Introductory Statistics with R), y calculemos la media de la variable obesidad (obese),
> library("ISwR")
> data("[Link]")
> mean([Link]$obese)
[1] 1.313039
14
Por lo tanto, la relación entre el peso real y el peso ideal medio es de 1,313039.
Definición 4. La mediana es el valor medio del conjunto de datos; el 50 % de las observaciones son
menores y el 50 % mayores que este valor.
> median([Link]$obese)
[1] 1.285
lo cual significa que para el 50 % de las personas su tasa de obesidad se encuentra por debajo de 1,285,
el 50 % restante, se encuentra por encima.
Definición 5. (Rango)
El rango se define como la diferencia entre los valores máximos y mı́nimos.
En R, si continuamos trabajando con los datos de obesidad, podemos calcular el rango de los datos
de la forma siguiente, primero calculamos los valores máximo y mı́nimos con al función range(9)
> range([Link]$obese)
luego, asignamos estos valores a una variable, por ejemplo, rgobese, par aluego con la función diff(),
podamos calcular la diferencia de los valores arrojados por la función range(), ası́,
> rgobese<-range([Link]$obese)
> diff(rgobese)
[1] 1.58
esto nos dice que, el tamañ del intervalo en el cual se encuentran los datos, es de 1,58.
Una pequeña desviación estándar implica que la mayorı́a de los valores están cerca del promedio. Una
gran desviacióon estándar indica que los valores están muy extendidos por encima y por debajo de la
media. En R, lo calculamos de la siguiente manera,
> sd([Link]$obese)
15
[1] 0.2578387
Definición 7. (Cuantiles)
Los cuantiles dividen los datos en proporciones, generalmente en cuartos llamados cuartiles, décimas
llamadas deciles y porcentajes llamados percentiles.
> quantile([Link]$obese)
esto nos arroja por defecto el valor de los cuartiles, y no indica que, por ejemplo, el 25 % de los datos
se encuentra por debajo de 1,1425, y ası́ sucesivamente.
Para los deciles, tenemos que establecer los puntos deciles, es decir, con la función seq(), partimos el
intervalo [0,1] en 10, de la forma siguiente,
> seq(0,1,0.10)
[1] 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0
luego, en la función quantile(), establecemos este vector como las probabilidades, es decir,
0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%
0.810 1.040 1.110 1.173 1.240 1.285 1.326 1.377 1.500 1.589 2.390
0% 1% 2% 3% 4% 5% 6% 7% 8% 9% 10%
0.8100 0.8804 0.9202 0.9309 0.9604 0.9720 1.0106 1.0207 1.0300 1.0309 1.0400
11% 12% 13% 14% 15% 16% 17% 18% 19% 20% 21%
1.0400 1.0424 1.0613 1.0700 1.0715 1.0816 1.0900 1.0936 1.1100 1.1100 1.1142
22% 23% 24% 25% 26% 27% 28% 29% 30% 31% 32%
1.1300 1.1300 1.1324 1.1425 1.1526 1.1600 1.1628 1.1700 1.1730 1.1831 1.1900
33% 34% 35% 36% 37% 38% 39% 40% 41% 42% 43%
1.1900 1.1934 1.2000 1.2036 1.2137 1.2238 1.2339 1.2400 1.2400 1.2442 1.2500
44% 45% 46% 47% 48% 49% 50% 51% 52% 53% 54%
1.2544 1.2600 1.2600 1.2647 1.2748 1.2800 1.2850 1.2900 1.2900 1.2900 1.2954
55% 56% 57% 58% 59% 60% 61% 62% 63% 64% 65%
1.3055 1.3100 1.3157 1.3200 1.3200 1.3260 1.3300 1.3300 1.3363 1.3400 1.3465
66% 67% 68% 69% 70% 71% 72% 73% 74% 75% 76%
1.3566 1.3667 1.3700 1.3700 1.3770 1.4013 1.4172 1.4273 1.4300 1.4300 1.4376
77% 78% 79% 80% 81% 82% 83% 84% 85% 86% 87%
16
1.4708 1.4956 1.5000 1.5000 1.5081 1.5346 1.5483 1.5584 1.5600 1.5600 1.5687
88% 89% 90% 91% 92% 93% 94% 95% 96% 97% 98%
1.5700 1.5789 1.5890 1.6264 1.6392 1.6493 1.6688 1.7270 1.7396 1.7497 2.0342
99% 100%
2.1984 2.3900
Finalmente, una manera rápida de obtener información estadistica de los datos, es utililizar la función
summary() en R, ası́
> summary([Link])
sex obese bp
Min. :0.0000 Min. :0.810 Min. : 94.0
1st Qu.:0.0000 1st Qu.:1.143 1st Qu.:116.0
Median :1.0000 Median :1.285 Median :124.0
Mean :0.5686 Mean :1.313 Mean :127.0
3rd Qu.:1.0000 3rd Qu.:1.430 3rd Qu.:137.5
Max. :1.0000 Max. :2.390 Max. :208.0
Cuando se ha definido skew, se puede calcular la asimetrı́a en cualquier conjunto de datos, por ejemplo,
> skew([Link]$obese)
[1] 1.260221
17
6. Representaciones Gráficas
Además de los resúmenes numéricos de los datos estadı́sticos, hay varias representaciones gráficas
disponibles en R que tienen un impacto más dramático en el usuario y permiten una mejor comprensión
de los datos. La facilidad y velocidad con la que se pueden producir pantallas gráficas es una de las
caracterı́sticas importantes de R. Ahora examinamos algunas pantallas gráficas comunes.
6.1. Boxplots
Un diagrama de caja es un resumen gráfico basado en la mediana, el cuartil y los valores extremos.
Para visualizar los datos de obesidad con boxplot, hacemos,
> boxplot([Link]$obese)
y obtenemos,
2.0
1.5
1.0
A menudo el plot anterior es llamado de caja y bigote, la caja representa el rango intercuartil que
contiene el 50 % de los casos. Los bigotes son las lı́neas que se extienden desde la caja hasta los valores
18
más altos y más bajos. La lı́nea que atraviesa el recuadro indica la mediana. Para colocarle las leyenda,
hacemos,
1.5
1.0
Obesidad
Se pueden mostrar varios gr?ficos de caja en el mismo eje añadiendo argumentos adicionales a la
función de gráfico de caja. Por ejemplo, utilizando datos de supervivencia del SIDA en Australia (del
paquete de R MASS ), tenemos
> library("MASS")
> boxplot(Aids2$diag, Aids2$death,xlab="Datos de supervivencia del SIDA en Australia")
Observe, en el gráfica (3) los puntos fuera de los bigotes, estos valores se denominan valores atı́picos y
representan casos con longitudes superiores al extremo superior o inferior al extremo inferior de la caja.
Estos puntos se consideran atı́picos de los datos en general, siendo extremadamente bajos o extremada-
mente altos en comparación con el resto de los datos.
19
11500
11000
10500
10000
9500
9000
8500
6.2. Histogramas
Un histograma es una representación gráfica de las frecuencias en las categorı́as de una variable y es
la forma tradicional de examinar la forma de los datos. En R,
> hist(Aids2$age, xlab ="N?mero de Pacientes", ylab="Edades", main = "Edades de los Pacientes con SI
Como podemos ver, gráfica (4), eel histograma da el recuento de las observaciones que caen dentro
de las categorı́as. R elige un número adecuado de categor?as, a menos que se especifique lo contrario.
20
Edades de los Pacientes con SIDA
500
400
300
Edades
200
100
0
0 20 40 60 80
Número de Pacientes
Para la serie de datos de Aids2, realizamos un diagrama de tallo y hoja para la variable edad, lo cual
se realiza con la función stem(), es decir,
> stem(Aids2$age)
0 | 0000111333
0 | 555669
1 | 122222344
1 | 55566677788899
2 | 00000001111111111112222222222222222223333333333333333333333333333344+38
2 | 55555555555555555555555555555555555555555555555555555555555555555555+386
3 | 00000000000000000000000000000000000000000000000000000000000000000000+488
3 | 55555555555555555555555555555555555555555555555555555555555555555555+495
4 | 00000000000000000000000000000000000000000000000000000000000000000000+392
4 | 55555555555555555555555555555555555555555555555555555555555555555555+215
5 | 00000000000000000000000000000000000001111111111111111111111111111111+64
5 | 55555555555555555555555666666666666666666666666777777777777777777888+9
6 | 0000000011111122222223333334444444
6 | 55555566666666666777789999999
7 | 000123334
7 | 788
8 | 02
Aquı́ podemos ver los valores de las observaciones individuales, asćomo la forma de los datos en su
21
Histogram of Aids2$diag Histogram of Aids2$death
1200
1000
300
800
Frequency
Frequency
200
600
400
100
200
0
0
8500 9000 9500 10500 11500 8500 9000 9500 10000 11000
Aids2$diag Aids2$death
Histogram of Aids2$age
500
400
Frequency
300
200
100
0
0 20 40 60 80
Aids2$age
conjunto. En el gráfico podemos observar que el grueso de las edades se encuentran entre 20 y 55 años.
En el gráfico se aprecia, que en apariencia, no existe una relación lineal entre los datos.
22
200
180
160
Presi'on sanguinea
140
120
100
Obesidad
Cuando hay más de dos variables, utilizamos la librerı́a car, y utilizamos la función scatterplotMatrix(),
es decir,
> library("car")
> scatterplotMatrix([Link])
23
1.0 1.5 2.0
1.0
sex
0.8
0.6
0.4
0.2
0.0
obese
2.0
1.5
1.0
200
bp
180
160
140
120
100
0.0 0.2 0.4 0.6 0.8 1.0 100 120 140 160 180 200
Figura 7: ScatterPlot de la serie de datos [Link], donde se observa la comparación entre las variables
sexo, obesidad y presión sanguinea
24