0% encontró este documento útil (0 votos)
58 vistas24 páginas

Elementos Basicos de R

Este documento introduce R y sus operaciones básicas. Explica cómo instalar R y RStudio, y cómo realizar operaciones simples como asignar valores a variables y vectores, calcular expresiones matemáticas y pedir ayuda. También presenta conceptos básicos sobre entrada de datos en R.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
58 vistas24 páginas

Elementos Basicos de R

Este documento introduce R y sus operaciones básicas. Explica cómo instalar R y RStudio, y cómo realizar operaciones simples como asignar valores a variables y vectores, calcular expresiones matemáticas y pedir ayuda. También presenta conceptos básicos sobre entrada de datos en R.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Elementos básicos de R

Diplomado en ciencia de los datos


Universidad Central de Venezuela
Prof. Mairene Colina & Prof. Máximo Hidalgo

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

3. Teorı́a básica de conteo 11


3.1. Permutaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.2. Combinatorias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

4. Simulando Probabilidades 13

5. Medidas de Tendencia Central 14


5.1. Medidas de Dispersión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
5.2. Creando Funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

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:

Ir al Web site de CARN [Link]

Elegir el archivo descargable correspondiente al sistema operativo.

Presionar la opción ejecutar.

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.

RStudio se obtiene de la Web en la página [Link] y se elije descargar la versión


gratuita, una vez descargado corremos el ejecutable, y ya podriamos trabajar con R.

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

Para asignar o guardar datos en una variable utilizamos,

> 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

Para elevar al cuadrado los elementos de x, escribimos

> x2<- x**2

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

Para ilustrar cómo R distingue entre mayúsculas y minúsculas

> 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()

y si se necesita ayuda de internet, se escribe

> [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.

Podrı́a ser útil ver algunas demostraciones de R escribiendo

> 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”.

Otra alternativa es escribir

> ?image

o simplemente escribiendo image en la consola de ayuda.

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.

2.1. Datos desde un screen a un vector


Un peque?o conjunto de datos, por ejemplo, un peque?o n?mero de mediciones repetidas en una sola
variable, puede introducirse directamente desde la pantalla. Normalmente se almacena como un vector,
que es esencialmente una lista de n?meros.

Ejemplo 1. Introduciendo datos desde un screen a un vector


El tiempo de atención de un cajero en un Banco, para 20 clientes, medido en minutos fue el siguiente

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.

Para ver el contenido, escriba

> 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.

2.2. Introduciendo Datos desde un archivo a un Dataframe


Cuando el conjunto de datos es grande, es mejor configurar un archivo de texto y acceder a los
datos desde este, en lugar de introducirlos directamente desde la pantalla. Un conjunto de datos grande
se almacena normalmente como una matriz, que consta de columnas y filas. Las columnas denotan las
variables, mientras que las filas son las observaciones de las variables. En R, este tipo de conjunto de
datos se almacena en lo que se conoce como un dataframe.

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).

Ejemplo 2. Leyendo datos desde un archivo en un dataframe


Los resultados de la sección U3, de la asignatura Matematicas 3 de la Facultad de Ciencia de la Univer-
sidad Central de Venezuela, se tienen en el archivo ejemplo2 [Link]

la instrucción para llevar este tipo de data a un dataframe es [Link]:

> notas<-[Link]("/home/softcap/Escritorio/Diplomado/ejemplo2_diplomado.csv", header=TRUE,


+ na="", stringsAsFactors=TRUE, sep=",")

asumiendo que ha descargado ejemplo2 [Link] a la carpeta de datos de la unidad especificada.


Este comando hace que los datos se asignen a un dataframe llamado notas.

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.

Para ver el resultado, tipeamos en la consola

> 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)

Si aplicamos la función log al conjunto de números del 1 al 10 elevados al cuadrado, se tiene :

> log((1:10)^2)

[1] 0.000000 1.386294 2.197225 2.772589 3.218876 3.583519 3.891820 4.158883


[9] 4.394449 4.605170

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

2.3. Matrices y Arreglos


Una matriz en matem?ticas es sólo un arreglo bidimensional de números. Las matrices se utilizan
para muchos propósitos en la estadı́stica teórica y práctica. Las matrices y también los arreglos de mayor
dimensión se utilizan también para propósitos más simples, principalmente para representar tablas.

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.

Otra manera conveniente de crear matrices, es con el úso de la función matrix


> matrix(1:12,nrow=3,byrow=T)

[,1] [,2] [,3] [,4]


[1,] 1 2 3 4
[2,] 5 6 7 8
[3,] 9 10 11 12

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.

> x <- matrix(1:12,nrow=3,byrow=T)


> [Link](x)<-letters[1:3]
> x

[,1] [,2] [,3] [,4]


a 1 2 3 4
b 5 6 7 8
c 9 10 11 12

Si se desea la matriz transpuesta, hacemos


> t(x)

a b c
[1,] 1 5 9
[2,] 2 6 10
[3,] 3 7 11
[4,] 4 8 12

Podemos “pegar”vectores en forma de columna o fila, con cbind y rbind, respectivamente.


> cbind(A=1:4,B=5:8,C=9: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"

2.5. Datos Agrupados y Dataframe


La manera natural de almacenar datos agrupados en un dataframe es tener los datos en un mismos
vector y paralelos a éste se tiene un factor que indica qué datos son de qué grupo. Considere, por
ejemplo, el siguiente conjunto de datos sobre el gasto energético de las mujeres delgadas y obesas, que
lo encontramos cargando en R la liberia ISwR (Introductory Statistics with R)2 , y llamando los datos
energy
2
Para trabajar con esta liberı́a, primero debemos verificar si ya se encuentra previamente instalada en R, ,esto lo hacemos
pulsando Packages en la consola de Files, Plosts, Packages, Help, Viewer, para luego verificar si se encuentra. En caso de no
ser ası́, debemos en la consola de R tipear la función [Link](“ISwR”), con lo que comenzara el proceso de instalación.
En esta liberia se encuentran varios grupos de datos que estaremos utilizando a lo largo del curso

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

Si queremos presentar los dos vectores simultaneamente pero separados, hacemos:

> l<-split(energy$expend, energy$stature)


> l

$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

|S| = (27)(27)(27) = 273

Lo anterior se conoce como “muestreo con remplazo”. Para computarlo en R, hacemos

> 27^3

[1] 19683

Pero el evento que nos intereza es el definido por el conjunto

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

o tambien, haciendo el cociente de los factoriles, es decir,

> factorial(27)/factorial(24)

11
[1] 17550

Con esto, ya podemos computar la P(E) = |E|/|S|, es decir,

> prod(27:25)/27^3

[1] 0.8916324

Sumarizando, tenemos que:

Una muestra de tamaño k de n elementos con remplazo = nk

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,

|S| = C(100, 12),

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ı́,

|E| = C(75, 12),

es decir,
> choose(75,12)

[1] 2.612389e+13

De forma tal, que P(E), es el cociente de los valores obtenidos anteriormente,

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.

Para contas el número de C y S, hacemos,

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

Ejemplo 7. En un proceso de manofactura es conocido que el 20 % de los items producidos sondefectuo-


sos.

Para simular esto en R, hacemos

> sample(c("d","b"), 10,replace=T, prob=c(0.2,0.8))

[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

5. Medidas de Tendencia Central


Las medidas de tendencia central son puntos tı́picos o centrales en los datos. Las más utilizadas son
la media y la mediana.

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.

Otra medida de dispersión muy usada es la mediana.

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.

En R, si continuamos utilizando los mismos datos, hacemos,

> 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.

5.1. Medidas de Dispersión


Las medidas de dispersión, como su nombre indica, estiman la dispersión o variación de los datos.
Hay muchas maneras de hacer esto, y consideramos algunas de las más comunes.

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)

[1] 0.81 2.39

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.

Definición 6. (Desviación Estándar )


La desviación estándar (sd) mide la extensión de los datos o cuánto se desvı́a de la media. Es la raı́z
cuadrada de las desviaciones medias cuadradas de la media.

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.

En R, escribimos los siguiente,

> quantile([Link]$obese)

0% 25% 50% 75% 100%


0.8100 1.1425 1.2850 1.4300 2.3900

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,

> quantile([Link]$obese, probs = seq(0,1,0.10))

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

Mientras, que para los percentiles, hacemos,

> quantile([Link]$obese, probs = seq(0,1,0.01))

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

5.2. Creando Funciones


Ocasionalmente puede que necesitemos algunas funciones estadı́sticas que no están disponibles en R,
por lo que se deberá crear una función propia. Tomemos como ejemplo el coeficiente de asimetrı́a, que
mide en qué medida los datos difieren de la simetrı́a. Un conjunto de datos perfectamente simétrico tendrá
una asimetrı́a de 0, cuando el coeficiente de asimetrı́a es sustancialmente mayor que cero, los datos son
positivamente asim?tricos con una larga cola a la derecha, y un coeficiente de asimetrı́a negativo significa
que los datos tienen una larga cola a la izquierda3 .

El coeficiente de simetrı́a es definido como,


√ Pn
n (xi − x)3
Asimetria = Pn i=1 3/2
(1)
( i=1 (xi − x)2 )
Ejemplo 8. (Un programa que calcule la asimetrı́a)
La siguiente sintaxis calcula el coeficiente de asimetrı́a de un conjunto de datos y lo asigna a una función
llamada skew que tiene un argumento (x).

> skew <- function(x) {


+ sum2 <- sum((x-mean(x))^2)
+ sum3 <- sum((x-mean(x))^3)
+ skew <- (sqrt(length(x))*sum3)/(sum2^(1.5))
+ skew}

Cuando se ha definido skew, se puede calcular la asimetrı́a en cualquier conjunto de datos, por ejemplo,

> skew([Link]$obese)

[1] 1.260221

Esto indica que los datos están ligeramente positivamente sesgados.


3
Más adelante en el curso, retomaremos estos conceptos y los discutiremos con profundidad

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

Figura 1: Boxplot de los datos [Link]

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,

> boxplot([Link]$obese, xlab = "Obesidad", ylab = "Tasa")


2.0
Tasa

1.5
1.0

Obesidad

Figura 2: Boxplot de los datos [Link] con leyendas

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

Datos de supervivencia del SIDA en Australia

Figura 3: Datos de supervivencia del SIDA en Australia”

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.

Con la función par() se puede representar varios histoogramas en un diagrama.

> par (mfrow = c(2,2))


> hist(Aids2$diag)
> hist(Aids2$death)
> hist(Aids2$age)

6.3. Tallo y Hoja


El diagrama de tallo y hoja, una forma más moderna de mostrar los datos, es una representación de
la forma utilizando los números reales observados. Al igual que el histograma, el diagrama de tallo y hoja
da las frecuencias de las categorı́as de la variable, pero va más allı́ y da los valores reales de cada categorı́a.

20
Edades de los Pacientes con SIDA

500
400
300
Edades

200
100
0

0 20 40 60 80

Número de Pacientes

Figura 4: Histograma de supervivencia del SIDA en Australia por edad

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)

The decimal point is 1 digit(s) to the right of the |

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

Figura 5: Histograma de supervivencia del SIDA en Australia

conjunto. En el gráfico podemos observar que el grueso de las edades se encuentran entre 20 y 55 años.

6.4. Scatters Plots


Las gráficas de los datos son útiles para investigar las relaciones entre las variables. Por ejemplo, si
se desea ver la relación entre la obesidad y la presión arterial, para los datos [Link], hacemos,

> plot([Link]$obese, [Link]$bp, xlab = "Obesidad", ylab = "Presi\'on sanguinea")

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

1.0 1.5 2.0

Obesidad

Figura 6: Plot de Obesidad vs. Presión Sanguinea

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

También podría gustarte