Professional Documents
Culture Documents
Benjamín López
¾Qué es R?
R es un lenguaje y entorno de programación para análisis estadístico y gráco. Se trata de un proyecto de
software libre, resultado de la implementación GNU del lengua je S. R y S-Plus -versión comercial de S- son,
probablemente, los dos lenguajes más utilizados en investigación por la comunidad estadística, siendo además
0.1. Obteniendo R
>
R output
Se muestra el número de la versión y alguna información útil para nuevos usuarios como, por ejemplo, instruc-
Cuando R comienza, busca si hay trabajo guardado en el directorio de traba jo y de encontrarlo, lo carga en la
sesión actual.
Lo último que se muestra es la línea de comando >, que es donde se escribirán los comandos que serán procesados
por R.
En el siguiente ejemplo, se muestra una serie de operaciones en R. Se introduce una instrucción en la línea de
Se pueden escribir múltiples comandos en uns línea separándolos por un punto y coma ;.
1
0.4 Advertencias y errores
Se transcribe este ejemplo tal y como se vería en la consola de R, si se desean reproducir estos ejemplos, de debe
omitir la línea de comando >
R input-output
> 2+5
[1] 7
> 4-9
[1] -5
> 7*8
[1] 56
> (4-6)*5
[1] -10
> 5^3
[1] 125
> 5**3
[1] 125
R input-output
La respuesta a cada una de éstas "preguntas" se imprime antecedida por [1], esta notación adquirirá sentido
función tiene un nombre y este se introduce seguido de paréntesis (necesariamente) y los argumentos de la
decir, todo el texto que preceda a este símbolo será ignorado por R. En el siguiente ejemplo, los comentarios
serán añadidos para ayudar a la comprensión de las funciones, sin embargo, pueden ser omitidos al reproducir
éstos ejemplos.
R input-output
> sqrt(5) # Raíz cuadrada
[1] 2.236068
> cos(pi/2) # La función coseno
[1] 6.123032e-17 # Esto es cero!
> exp(1) # Esto es exp(x) = e^x
[1] 2.718282
> log(10) # Logaritmo natural
[1] 2.302585
R input-output
El resultado que se obtiene de cos(pi/2), es decir de cos π
2 es 6.123032e-17, es decir, 6.123032 1017 que
es muy pequeño, pero no nos da exactamente cero, este tipo de diferencias numéricas no son extrañas.
Muchas funciones en R tienen argumentos extra que nos permiten cambiar el comportamiento predeterminado
de las funciones, en el ejemplo anterior, se puede observar que la función log es la función logaritmo natural,
sin embargo, si se quisiera utilizar la función logaritmo con base 10, se puede hacer lo siguiente
R input-output
> log(10,10)
[1] 1
> log(10,base=10)
[1] 1
R input-output
Para entender el uso de la primera expresión, log(10,10), se debe tomar en cuenta que para esta función, R
utilizará el segundo argumento como la base del logaritmo y que en caso de ser omitido, en este caso usará la
base e. En el segundo comando, log(10,base=10), se utiliza indicando explícitamente el nombre del argumento
para indicar que se trata de la base.
Cuando R se encuentra con un comando que no puede reconocer, responderá con un mensa je de error según
sea el caso, por ejemplo
R input-output
> raizcuadrada(45)
Error: no se pudo encontrar la función "raizcuadrada"
> sqrt 45
2
0.5 Obteniendo ayuda
nombre. En el segundo comando, se omitieron los paréntesis al aplicar la función por lo que se produce un error
de sintaxis, se necesita poner los paréntesis para indicar el uso de una función. En el tercer comando, R da una
respuesta pero supone que no es lo que se buscaba, la salida NaN signica not a number en respuesta a la
raíz cuadrada de un número negativo, por lo que se imprime una advertencia Warning o Mensajes de aviso
perdidos. En el último comando, se omitió un paréntesis por lo que en la siguiente línea se imprime + para
indicar que R espera que se termine de introducir la operación.
Utilizar R de manera extensa requiere del conocimiento de muchas de sus funciones, en ocasiones más de
las que se pueden tener en la mente en cualquier momento, por suerte, R tiene recursos de ayuda integrados.
Estos pueden ser consultados para obtener información de funciones como por ejemplo acerca de los valores que
La función help() es la interface principal del sistema de ayuda. Por ejemplo, help("sum") dará información
acerca de la función sum(). Un ata jo útil para la función help() es el uso de ?, es decir, volviendo al ejemplo
anterior, sería lo mismo escribir ?sum o ?"sum". La forma entrecomillada es necesaria para algunas funciones.
Lo anterior funciona de manera muy adecuada cuando se recuerda el nombre preciso de la función deseada, en el
caso de no saber o no recordar el nombre preciso, hay otras maneras de buscar ayuda. La función help.search()
buscará en cada archivo de ayuda el término especicado, por ejemplo, help.search("variance") regresará
tods las funciones que tengan el término variance en alguna parte de su página de ayuda. Para hacer una
búsqueda de en sólo el nombre de la función, existe la función apropos(), es decir, esta función buscará entre
todas los nombres de funciones y variables disponibles y regresará aquellas que coinciden con el término buscado.
Por ejemplo, apropos("cov") regresará todas las funciones y variables que tengan en su nombre la palabra
"cov".
Si lo que se quiere es explorar el contenido de las páginas de ayuda, existe la función help.start(), que al
ejecutarla abrirá un navegador web con un índice de los documentos de ayuda disponibles, incluyendo algunos
Muchas de las páginas de ayuda incluyen algunos ejemplos que pueden ser ejecutados uno por uno copiándolos
Las echas verticales del teclado pueden utilizarse para recorrer el historial de órdenes. Cuando se haya
recuperado una orden con este procedimiento, se pueden utilizar las echas horizontales para desplazarse por
La consola de R conserva un historial de los comandos introducidos. De manera individual, los comandos
pueden ser accesados utilizando las echas arriba o aba jo. Haciendo esto repetidamente, se puede desplazarse
en este historial de instrucciones. Esto puede ser bastante útil para reutilizar comandos previos, por ejemplo,
para corregir un pequeño error que se hubiera cometido en una instrucción. La función history() muestra las
últimas 25 instrucciones que se le han ejecutado. A continuación se muestra una tabla de ata jos para la edición
de comandos.
Ò ó (Ctrl+p)
Llama a la instrucción anterior realizada en la consola, se puede presionar en
3
0.7 Scripts 1 ASIGNACIÓN DE DATOS EN R
0.7. Scripts
En la mayoría de los casos es muy complicado tener que escribir los comandos directamente en la consola
porque los códigos son muy largos o porque se encuentran en un proceso de estructuración. Para esto, R tiene la
posibilidad de crear un archivo de texto plano en el cualse escribe el código para después correrlo completo o por
partes en la consola, al que se llama script. Para crear un script nuevo, se da click en la Barra de herramientas
en Archivo y en el menú que se despliega, dar click en Nuevo Script y se abrirá el documento en blanco en
donde se pueden escribir múltiples líneas de código sin tener que correrlas en la consola.
Para correr el código que se ha escrito en un script, se selecciona la parte del código que se desea ejecutar y
después se presiona Ctrl+r, de esta forma, R copiará el código al portapapeles y lo pegará en la consola.
Si se desea cambiar el directorio de trabajo, que es la carpeta en la cual R buscará y guardará los archi-
vos de la sesión actual. Se puede utilizar la función getwd() para conocer el directorio de trabajo (se usa
sin parámetros) y para cambiarlo existe la función setwd(), por ejemplo, si se quiere cambiar a la carpeta
C:\Users\Benja\Documents\Curso R Congreso, se escribirá en la consola
Código de R
setwd("C:/Users/Benja/Documents/Curso R Congreso")
Código de R
1. Asignación de datos en R
Las entidades que R crea y manipula se denominan ob jetos. Estos pueden ser de muchos tipos: variables,
variables indexadas, cadenas de caracteres, funciones, etc. Incluso estructuras más complejas construidas a partir
de otras más sencillas. Durante una sesión de traba jo con R los ob jetos que se crean se almacenan por nombre.
Asignar o crear un ob jeto no produce una salida impresa en la pantalla. Para crear un objeto en R que tenga el
R input-output
> x<-5-3 # Asignación "silenciosa"
> x # Preguntando el valor de la variable
[1] 2
> (y=45/9) # Se muestra el valor de la asignación
[1] 5
> print(4^2->>z) # También imprime el valor de la asignación
[1] 16
R input-output
Entonces, se tienen los siguientes comandos de asignación
=
<- Asignación hacia la izquierda
<<-
->
Asignación hacia la derecha
->>
Para nombrar objetos, R acepta letras, números y puntos en los nombres, con algunas restricciones. No se
puede empezar el nombre de una objeto con un número y si el nombre de un ob jeto empieza con un punto (un
sólo punto es válido como nombre para R) el siguiente caracter no pude ser un número. Por ejemplo:
4
1.2 Vectores de datos con el comando c() 1 ASIGNACIÓN DE DATOS EN R
Código de R
x=3
X=9
.hola.<-7.4
x1<-6
x2=0
nombre.largo.para.un.objeto<<-1
Código de R
Entonces, si preguntamos los valores de estas variables a R, se obtendrá lo siguiente
R input-output
> x
[1] 3
> X
[1] 9
> .hola.
[1] 7.4
> x1
[1] 6
> x2
[1] 0
> nombre.largo.para.un.objeto
[1] 1
> (nombre.largo.para.un.objeto+.hola.)*x1
[1] 50.4
R input-output
Cabe mencionar que R distingue entre mayúsculas y minúsculas en los nombres de los ob jetos.
Para guardar éstos datos en R, se usa un vector de datos. Los vectores de datos se crean con la función c()
que combina los argumentos de un conjunto de datos. El conjunto de observaciones anterior se puede guardar
la primera observación, esto es útil cuando se tienen múltiples líneas, por ejemplo, supóngase que se tienen 60
observaciones de otro fenómeno (que se introduce a R de manera similar que en el ejemplo anterior usando el
comando c()) en una variable de nombre muestra2 y al imprimirlo en pantalla se muestra lo siguiente.
R input-output
> muestra2
[1] 119 58 111 113 116 66 79 130 87 15 21 94 60 67 28 115 145 85 83 62 25
[22] 135 72 104 176 123 145 122 40 54 62 44 61 135 53 84 83 18 83 37 123 137
[43] 142 98 34 125 89 39 141 105 102 38 63 137 112 46 93 69 199 126
R input-output
Esto signica que, como se muestra el valor [1] al inicio de la primera línea, entonces el primer renglón
empieza con el primer valor. Como el segundo renglón muestra [22], entonces el primer valor del segundo
renglón es el valor número 22 del vector de datos y como el tercer renglón comienza con [43], signica que el
El comando c() también puede ser usado para combinar vectores de datos, por ejemplo
5
1.2 Vectores de datos con el comando c() 1 ASIGNACIÓN DE DATOS EN R
R input-output
> x = c(101, 106, 122, 68, 51)
> y = c(123, 108, 90, 118, 98)
> c(x,y)
[1] 101 106 122 68 51 123 108 90 118 98
R input-output
enR tienen nombres intuitivos. Por ejemplo, la función sum() sumará todos las entradas del vector y la función
length() regresará la longitud o numero de entradas que conforman al vector al que se aplica la función. A
continuación se muestran algunos ejemplos
R input-output
> sum(muestra) # Suma de las entradas del vector
[1] 985
> length(muestra) # Longitud del vector
[1] 10
> sum(muestra)/length(muestra) # Promedio de las entradas del vector
[1] 98.5
> mean(muestra) # Función integrada para sacar el promedio
[1] 98.5
R input-output
Se puede encontrar el promedio de las entradas del vector dividiendo la suma de todas las entradas y dividiendo
entre el número de entradas o utilizando la función mean(). R tiene muchas funciones integradas para hacer
una variedad de operaciones. Algunas otras funciones comunes son sort(), min(), max(), range(), diff() y
cumsum().
R input-output
> sort(muestra) # Ordena los valores de las entradas del vector
[1] 51 68 90 98 101 106 108 118 122 123
> min(muestra) # Regresa el valor mínimo
[1] 51
> max(muestra) # Regresa el valor máximo
[1] 123
> range(muestra) # Regresa un vector, la primera entrada es el mínimo, la segunda el máximo
[1] 51 123
> diff(muestra) # Regresa la diferencia entre entradas consecutivas del vector
[1] 5 16 -54 -17 72 -15 -18 28 -20
> cumsum(muestra) # La suma acumulada de las entradas
[1] 101 207 329 397 448 571 679 769 887 985
R input-output
6
1.2 Vectores de datos con el comando c() 1 ASIGNACIÓN DE DATOS EN R
operaciones entre vectores se realizarán entrada por entrada al mismo tiempo. Por ejemplo, si se tiene el
siguiente vector
Código de R
b = c(84, 98, 85, 55, 84, 96, 88, 92, 86, 101)
Código de R
Entonces, para hacer la suma entrada por entrada, es decir, la primera entrada del vector muestra con la
primer entrada del vector b, la segunda entrada con la segunda entrada y así sucesivamente, se tiene que hacer
lo siguiente
R input-output
> muestra + b
[1] 185 204 207 123 135 219 196 182 204 199
R input-output
Algunos ejemplos de operaciones se muestran a continuación
R input-output
> muestra - b
[1] 17 8 37 13 -33 27 20 -2 32 -3
> muestra-100
[1] 1 6 22 -32 -49 23 8 -10 18 -2
R input-output
En el último ejemplo se opera un vector con un valor simple, en este caso, R repite el valor simple hasta completar
la longitud del vector, por lo que resta el mismo valor a cada entrada. A esto se le llama reciclaje de datos.
Para que funcione correctamente, la longitud de uno de los vectores que se están operando debe ser múltiplo de
error
R input-output
> muestra-c(1,2,3)
[1] 100 104 119 67 49 120 107 88 115 97
Mensajes de aviso perdidos
In muestra - c(1, 2, 3) :
longitud de objeto mayor no es múltiplo de la longitud de uno menor
R input-output
Otro ejemplo, es calcular la varianza de un vector de datos usando operciones con vectores, recordando que la
pxq
¸
n
xip x̄q2
n1
Var
i1
R input-output
> x <- c(7, 16, 9, 3, 18)
> (n = length(x)) # La longitud del vector de datos
[1] 5
> xbar = mean(x) # El valor promedio
> x - xbar # Las diferencias de la media
[1] -3.6 5.4 -1.6 -7.6 7.4
> (x - xbar)^2 # Las diferencias cuadradas
[1] 12.96 29.16 2.56 57.76 54.76
> sum((x - xbar)^2) # Suma de las diferencias cuadradas
[1] 157.2
> sum((x - xbar)^2)/(n-1) # La varianza
[1] 39.3
> var(x) # Usando el comando automático de R
[1] 39.3
R input-output
7
1.3 Matrices en R 2 ACCESANDO A LOS DATOS UTILIZANDO ÍNDICES
1.3. Matrices en R
referenciada utilizando su índice y usando corchetes. Utilizando los índices, se puede accsear y asignar valores
guardados en un vector de datos. Por ejemplo, para accesar a las entradas de la variable muestra se puede hacer
lo siguiente
R input-output
> muestra # Vector completo
[1] 101 106 122 68 51 123 108 90 118 98
> muestra[1] # Valor de la primera entrada
[1] 101
> muestra[2] # Valor de la segunda entrada
[1] 106
> muestra[length(muestra)] # Valor de la última entrada si la long es desconocida
[1] 98
> muestra[1]<- 120 # Modificando el valor de la primera entrada
> muestra # Vector resultante
[1] 120 106 122 68 51 123 108 90 118 98
R input-output
En el caso de matrices, se tiene que dar la ubicación primero por renglón y luego por columna, por ejemplo
R input-output
> m # Matriz completa
[,1] [,2] [,3] [,4]
[1,] 1 4 7 10
[2,] 2 5 8 11
[3,] 3 6 9 12
> m[1,3] # Primer renglón, tercera columna
[1] 7
> m[2,2] # Segundo renglón, segunda columna
[1] 5
> m[3,4] # Tercer renglón, cuarta columna
[1] 12
> m[2,3]<-25 # Modificando la entrada (2,3)
> m #Matriz resultante
[,1] [,2] [,3] [,4]
[1,] 1 4 7 10
[2,] 2 5 25 11
[3,] 3 6 9 12
R input-output
Para accesar a un renglón simplemente se omite la información de la posición de columna, por ejemplo
R input-output
> m[1,] # Vector de datos del primer renglón
[1] 1 4 7 10
> m[3,] # Vector de datos del tercer renglón
[1] 3 6 9 12
> m[2,] # Vector de datos del segundo renglón
[1] 2 5 25 11
> m[2,] <- c(10,20,30,40) # Modificando todo el renglón
> m # Matriz resultante
[,1] [,2] [,3] [,4]
8
2.1 Seccionamiento de vectores de datos 3 CREANDO DATOS ESTRUCTURADOS
[1,] 1 4 7 10
[2,] 10 20 30 40
[3,] 3 6 9 12
R input-output
De manera similar para las columnas, es decir
R input-output
> m[,1] # Vector de datos de la primera columna
[1] 1 10 3
> m[,4] # Accesando la cuarta colunma
[1] 10 40 12
> m[,4]= c(1,2,3) # Modificando la cuarta columna
> m # Matriz resultante
[,1] [,2] [,3] [,4]
[1,] 1 4 7 1
[2,] 10 20 30 2
[3,] 3 6 9 3
R input-output
vector de datos y vec es un vector de índices (que contiene valores sólamente entre 1 y length(x)), entonces
Si el vector de índices contiene valores que corresponden a índices del vector, es algo intuitivo lo que R
regresará, sin embargo si se da un valor mayor al número de elementos del vector, R regresará NA, indicando que
el valor no está disponible (not available).
Sin embargo si se proporciona un valor o conjunto de valores negativos, R regresará los valores del vector, excep-
tuando el i-ésimo valor. Por ejemplo, muestra[-1] regresará todas las entradas del vector muestra exceptuando
el primer valor.
R input-output
> muestra[-1] # Omitiendo el primer valor
[1] 106 122 68 51 123 108 90 118 98
> muestra[-4] # Omitiendo el cuarto valor
[1] 120 106 122 51 123 108 90 118 98
> muestra[-c(1,3,5,7,9)] # Omitiendo los valores 1,3,5,7,9
[1] 106 68 123 90 98
> muestra[-(6:length(muestra))] # Omitiendo desde el valor 6 hasta el final
[1] 120 106 122 68 51
> muestra[-100] # Omite el valor 100, como no hay, no omite valores
[1] 120 106 122 68 51 123 108 90 118 98
R input-output
9
3.1 Sucesiones 3 CREANDO DATOS ESTRUCTURADOS
3.1. Sucesiones
o especicar el punto de inicio, el punto nal y la longitud deseada de la sucesión aritmética. Para esto, se cuenta
3.2. Repeticiones
Cuando se desea crear un vector de valores repetidos, se puede usar la función rep(). Su uso más simple es
10
4 TABLAS Y GRÁFICAS
Patrones un poco más complejos se pueden generar especicando pares de vectores de longitud igual. En este
4. Tablas y Grácas
4.1. Datos categóricos
Los datos categóricos son generalmente resumidos en tablas o representados grácamente con grácas de
4.1.1. Tablas
Las tablas son ampliamente utilizadas para resumir conjuntos de datos, por ejemplo, cuando una variable de
respuesta cae en un conjunto determinado de categorías, como encuestas de opinión o resultados de votaciones.
La función principal en R para generar este tipo de tablas es la función table(). En su uso más simple, la
función table(x) en cuentra los valores únicos en un vector de datos y tabula las frecuencias de su ocurrencia.
Por ejemplo, si los resultados de una pequeña encuesta son "sí", "sí", "no", "sí" y "no" pueden ser tabulados
de la siguiente manera
R input-output
> res = c("Sí","Sí","No","Sí","No")
> table(res)
res
No Sí
2 3
R input-output
Conjuntos de datos tan pequeños como el anterior pueden ser resumidos sin ayuda de una computadora. En el
siguiente ejemplo, se usará un registro del clima de algún mes y se obtuvieron los siguientes datos
R input-output
> clima
[1] "despejado" "despejado" "medio.nublado" "despejado" "despejado"
[6] "despejado" "medio.nublado" "nublado" "nublado" "nublado"
[11] "medio.nublado" "nublado" "nublado" "nublado" "medio.nublado"
[16] "medio.nublado" "despejado" "medio.nublado" "despejado" "despejado"
[21] "nublado" "despejado" "medio.nublado" "nublado" "medio.nublado"
[26] "nublado" "despejado" "medio.nublado" "medio.nublado" "despejado"
[31] "medio.nublado"
R input-output
Para generar una tabla simplemente se hace lo siguiente
R input-output
> table(clima)
clima
despejado medio.nublado nublado
11 11 9
R input-output
de barras. Una gráca de barras, en su uso más simple, toma los valores de una tabla y representa con alturas
los valores de las distintas categorías. Para esto existe la función barplot(). Esta función utiliza la versión
resumida de los datos, comúnmente el resultado de el uso de la función table(). Los datos resumidos pueden
ser frecuencias absolutas o relativas, la gráca resultante será similar, con la diferencia de la escala del eje y.
Por ejemplo, se tiene el resultado de una encuesta cuyas respuestas están codicadas por 1,2,3 y 4. Las respuestas
obtenidas son:
3 4 1 1 3 4 3 3 1 3 2 1 2 1 2 3 2 3 1 1 1 1 4 3 1
11
4.1 Datos categóricos 4 TABLAS Y GRÁFICAS
0.4
10
4
0.3
3
0.2
2
0.1
1
0.0
0
0
1 2 3 4 1 2 3 4
Figura 1: La primer gráca es incorrecta pues los datos deben ser primero tabulados, en la segunda se muestra
R input-output
> encuesta<-scan()
1: 3 4 1 1 3 4 3 3 1 3 2 1 2 1 2 3 2 3 1 1 1 1 4 3 1
26:
Read 25 items
> encuesta
[1] 3 4 1 1 3 4 3 3 1 3 2 1 2 1 2 3 2 3 1 1 1 1 4 3 1
> par(mfrow=c(1,3)) #Imprime gráficas en 1 renglón 3 cols
> barplot(encuesta) # Esto no es correcto!
> barplot(table(encuesta), # Histograma de frecuencias, se usa table()
+ xlab="Título del eje x (Opcional)", ylab="Título del eje y (Opcional)")
> barplot(table(encuesta)/length(encuesta), # Histograma de frecuencias relativas
+ xlab="Título del eje x (Opcional)", ylab="Título del eje y (Opcional)")
R input-output
En la gura 1 se muestra el resultado de estos comandos.
posibles respuestas de una variable categórica. Esta gráca , así como la gráca de barras es ampliamente
La manera de crear una gráca de pay en R es más o menos similar a la manera de crearuna gráca de barras, pero
en este caso se utiliza la función pie(), utiliza argumentos similares para cambiar colores y agregar nombres.
Por ejemplo, se tiene una encuesta con 5 posibles respuestas A, B, C, D y E, codicadas, respectivamente como
4 2 3 2 1 2 3 3 3 3 4 3 5 3 3 2 2 4 3 2
12
4.2 Datos de rango continuo 4 TABLAS Y GRÁFICAS
Encuesta
1 A
5 E
C
3
D
4
Figura 2: En el primer diagrama se muestran los nombres de la codicación, en la segunda se corrige este detalle
1 6 9 3 1
> pie(T, main="Encuesta") # Agregando, además el título del gráfico
R input-output
En la gura 2 se muestran las grácas resultantes de estos comandos.
Ahora se consideran las representaciones de conjuntos de datos que contienen medidas numéricas en una
escala virtualmente continua. Por supuesto, las medidas que se registran de un experimento siempre estarán
redondeadas en alguna medida. En contraste con el caso discreto, el conjunto de datos que se obtienen en este tipo
de fenómenos puede contener muchos distintos valores, por lo que los diagramas y tablas vistos anteriormente
En esta sección, dado a la brevedad del curso, se hablará únicamente del histograma de frecuencias relativas.
4.2.1. Histograma
Un histograma es la representación visual de la distribución de un conjunto de datos. Es decir, se intenta
tener una idea acerca de cómo se comportan pensando en una función de densidad empírica. El histograma
tiene algunas similitudes con la gráca de barras, en el sentido que tambipen utiliza barras para indicar una
frecuencia, pero a diferencia del diagrama de barras, cada barra en el histograma representa la frecuencia de un
contiguos disjuntos que contengan a todo el rango de la muestra. Después se cuenta el número de observaciones
que caen en los intervalos seleccionados. Finalmente, se dibuja una barra sobre el intervalo de tal manera que
Cuando se elabora un histograma, se toma una desición acerca de cómo se va a dividir el rango de la muestra en
intervalos y cuán altas se dibujarán las barras, dado que únicamente tienen que estar la proporción correcta. R
tiene varios métodos para la selección de estos intervalos (Sturges, Scott y FreedmanDiaconis). Las dos maneras
de establecer la altura de las barras es l frecuencia absoluta del intervalo o aquella que haga al área de la barra
igual a la frecuencia relativa del intervalo. Ba jo este último método, el área total de las barras sumará 1, lo cual
En la función hist(), la longitud de los intervalos está controlada por el parámetro breaks=. Este puede ser
especicado por el nombre un algoritmo que los genere, el número de intervalos deseados o la localización de
exacta de los extremos de los intervalos deseados (breaks). Por ejemplo, se tienen los siguientes datos:
R input-output
> datos
[1] 0.232 0.624 -0.236 -0.798 0.358 -1.088 -0.106 0.273 -0.708 0.474 0.562 0.672
[13] 0.605 -1.779 -0.123 -1.789 0.761 -2.288 1.032 0.490 -0.498 -0.259 -0.426 1.012
[25] 0.008 0.655 -2.599 -0.649 1.062 -2.753 0.668 -0.093 0.175 -0.207 1.632 -0.871
13
4.2 Datos de rango continuo 4 TABLAS Y GRÁFICAS
12
Histograma 1 Histograma 2
12
Frequency
Frequency
0 2 4 6 8
0 2 4 6 8
−3 −2 −1 0 1 2 −3 −2 −1 0 1 2
datos datos
Histograma 3 Histograma 4
10 15 20
Frequency
Frequency
8
6
4
5
2
0
0
−2 −1 0 1 −3 −2 −1 0 1 2
datos datos
Histograma 1 Histograma 5
12
0.4
Frequency
Density
8
0.2
4
0.0
0
−3 −2 −1 0 1 2 −3 −2 −1 0 1 2
datos datos
[37] 0.972 1.465 -1.742 0.420 1.140 0.436 -0.015 0.998 -0.931 0.588 -1.296 0.369
[49] 0.233 0.140
R input-output
breaks
Se harán varios histogramas de estos datos para ilustrar el uso del parámetro
R input-output
> par(mfrow=c(2,2)) # Imprime gráficas, 2 renglones, 2 columnas
> hist(datos, main="Histograma 1") # Utilizando los parámetros predeterminados
> hist(datos, breaks=15, main="Histograma 2") # Sugerir 15 breaks (puede no tomarla sug)
> hist(datos,breaks=seq(-2.8,1.7,length=15), main="Histograma 3") # Usa estos breaks
> hist(datos,breaks="Scott", main="Histograma 4")# Utilizar el algoritmo "Scott"
R input-output
Al observar los histogramas resultantes en la gura 3, se puede notar, por ejemplo que el "Histograma 2" hay
menos de 15 breaks a pesar de la sugerencia que se le dió. En el "Histograma 3" se le dió la posición de estos
breaks para obtener exactamente lo que se buscaba. En el "Histograma 4" se da el nombre de uno de los métodos
Puede notarse que los histogramas anteriores se gracaron de tal modo que muestran la frecuencia absoluta de los
intervalos dados, para modicar esto, se utiliza el parámetro probability= que tiene como valor predeterminado
FALSE. Para hacer un histograma de frecuencias relativas se le dará el valor TRUE a este último parámetro, por
ejemplo,
R input-output
> #### Histograma de frecuencias relativas
> par(mfrow=c(1,2)) # Imprime gráficas, 1 renglón, 2 columnas
> hist(datos,main="Histograma 1")
> hist(datos,probability=TRUE,main="Histograma 5")
R input-output
En la gura 4 se muestra el resultado de estos comandos.
14