Documentos de Académico
Documentos de Profesional
Documentos de Cultura
2
I
ÍNDICE
ÍNDICE ................................................................................... II
AGRADECIMIENTO............................................................... IV
PREFACIO ............................................................................. VI
1. CAPÍTULO 1: PRELIMINARES ESTADÍSTICOS ............. 1
1.1. BREVE HISTORIA DE LA ESTADÍSTICA................................................. 2
1.2. DEFINICIÓN Y CLASIFICACIÓN DE LA ESTADÍSTICA .............................. 3
1.3. CONCEPTOS PRELIMINARES .............................................................. 4
2. CAPÍTULO 2: FUNDAMENTOS DE R ............................. 8
2.1. ¿QUÉ ES R?..................................................................................... 8
2.2. R CONSOLE ..................................................................................... 9
2.3. RSTUDIO ....................................................................................... 11
2.4. LOS COMANDOS EN R......................................................................14
2.4.1. Argumento de los Comandos: ............................................................... 16
2.4.2. Visualización de los valores de los comandos ...................................... 22
2.5. LOS PAQUETES EN R ...................................................................... 24
2.6. INGRESANDO INFORMACIÓN EN R ................................................... 28
2.6.1. Variables .............................................................................................. 28
2.6.2. Vectores ................................................................................................ 29
2.6.3. Matrices................................................................................................ 32
2.6.4. Operaciones Básicas con Matrices y/o vectores.................................... 37
2.6.5. Ingresando una matriz de datos .......................................................... 39
2.6.6. Importando una matriz de datos desde otro tipo de archivo ............... 43
2.6.7. Matrices de Datos en R ......................................................................... 49
3. CAPÍTULO 3: FUNDAMENTOS DE MATLAB ................ 51
3.1. ¿QUÉ ES MATLAB?........................................................................ 51
3.2. EL ENTORNO DE MATLAB ............................................................. 52
3.3. LOS COMANDOS EN MATLAB......................................................... 54
3.4. INGRESANDO INFORMACIÓN EN MATLAB ....................................... 59
3.4.1. Variables ...............................................................................................59
3.4.2. Vectores ................................................................................................ 60
II
3.4.3. Operaciones Básicas con Vectores........................................................ 63
3.4.4. Matrices.................................................................................................65
3.4.5. Operaciones con matrices .....................................................................67
3.4.6. Importando una matriz de datos desde otro tipo de archivo ................67
4. CAPÍTULO 4: ANÁLISIS DE FRECUENCIAS Y
REPRESENTACIÓN GRÁFICA DE DATOS .............................. 75
4.1. VARIABLES Y DATOS....................................................................... 75
4.1.1. Clasificación de los datos....................................................................... 75
4.2. ANÁLISIS UNIVARIADO DE FRECUENCIAS ......................................... 79
4.2.1. Tablas de Frecuencias .......................................................................... 80
4.2.2. Análisis de frecuencias para datos simples o sin agrupar .................... 81
4.2.3. Gráficas para representar frecuencias de datos simples: .................... 83
4.2.4. Análisis de Frecuencias para datos agrupados .................................... 94
4.2.5. Gráficas para representar frecuencias de datos agrupados ............... 101
4.3. ANÁLISIS BIVARIADO DE FRECUENCIAS .......................................... 109
4.3.1. Tablas de Contingencia ....................................................................... 109
5. CAPÍTULO 5: DESCRIPCIÓN NUMÉRICA DE DATOS 114
5.1. DESCRIPCIÓN NUMÉRICA DE DATOS UNIVARIADOS.......................... 114
5.1.1. Medidas de Tendencia Central ............................................................ 114
5.1.2. Medidas de Dispersión ........................................................................ 123
5.1.3. Medidas de Posición ............................................................................ 133
5.2. DESCRIPCIÓN NUMÉRICA DE DATOS BIVARIADOS ............................142
5.2.1. Covarianza .......................................................................................... 143
5.2.2. Correlación .......................................................................................... 146
III
AGRADECIMIENTO
<<Porque todo, absolutamente todo en el cielo y en la tierra, visible e
invisible… todo comenzó con Él y para los propósitos de Él>>
Colosenses 1:16
IV
V
PREFACIO
EL PROPÓSITO DE ESTE LIBRO
El presente libro se convierte en un texto de ayuda para realizar un curso a nivel
superior de Estadística Descriptiva, además sirve como un referente práctico para
que el lector aprenda a manejar los software R y MATLAB, y de sus primeros pasos
utilizando estos paquetes, lo cual se constituye en una base para que luego pueda
realizar cálculos y gráficas en ramas más específicas o avanzadas dentro del
análisis estadístico. No es la intención profundizar en aspectos estadísticos
teóricos, ni tampoco en aspectos de programación avanzada mediante los software
descritos, sino más bien enfocarnos en definir, calcular (mediante el software) e
interpretar medidas y gráficos estadísticos que nos ayudan a realizar una
descripción de un conjunto de datos.
VI
VII
1. CAPÍTULO 1:
PRELIMINARES ESTADÍSTICOS
La estadística es una ciencia, nace de la necesidad que tiene el hombre de
comprender el mundo que nos rodea, su diario vivir, los hechos, sucesos o
procesos que marcan la historia y el desarrollo de la humanidad. La estadística
está plenamente involucrada con el proceso de planificación y toma de decisiones
en todos los ámbitos del quehacer cotidiano, sin ella no sabríamos de dónde
venimos, ni hacia dónde vamos. Cuando una persona, familia, empresa, estado o
cualquier otro tipo de organización no posee un registro acerca de las cosas que ha
hecho, está haciendo y de las que pretende hacer, solo será como un ciego que no
mira hacia dónde se encamina su quehacer diario, carecerá de un objetivo
definido, caerá en activismo y no será capaz de ser un aporte en el área que se esté
desarrollando.
Solo imaginemos a un atleta profesional en cuyo entrenamiento no se registre
constantemente sus marcas personales, su tiempo de dedicación, la cantidad de
nutrientes que debe consumir en su dieta, etc… Si no se lo hace sin duda su
entrenador no tendría idea del atleta que está formando, no sabría cuáles son los
aspectos físicos o biológicos que debe mejorar en él, ni siquiera tendría idea si
antes de la competencia tiene o no la posibilidad de ganar o perder frente a sus
adversarios, ya que no tendría ninguna medida que le permita evaluar y mucho
menos comparar el rendimiento de dicho atleta, su entrenamiento estaría vacío y
caminaría con gran probabilidad hacia un fracaso en su carrera como deportista.
O tal vez imaginemos a una nación sin estadísticas, un país donde no se registren
los hechos que sucede en la vida de una población. Qué decisiones o políticas
públicas acerca de educación sexual y planificación familiar para los habitantes se
podrían establecer sino sabemos cuál es la tasa de natalidad, o el índice de
embarazo adolescente. Cuál debería ser el presupuesto adecuado para salud sino
se conoce indicadores estadísticos de morbilidad, o tasas de mortalidad en la
población. Cómo asignar un presupuesto o establecer políticas públicas para la
1
educación sino conocemos indicadores estadísticos que nos muestren cuál es la
tasa de analfabetismo, abandono escolar, demanda educativa, etc… Cómo podría
una nación presupuestar en un futuro la justa distribución de su riqueza si no
cuenta con estadísticas que le indiquen cuál será el tamaño futuro de su población.
O tan solo imaginemos nuestra propia vida, qué pasaría si en el quehacer diario
no tendríamos una noción o un registro del tiempo, recursos, o dinero que
constantemente estamos utilizando ni de las cosas que estamos produciendo ya
sea en nuestro trabajo, hogar o demás lugares que nos desempeñamos. No
tendríamos ni sentido ni noción de las cosas que hacemos o dejamos de hacer.
Sin duda se nos hace difícil encontrar alguna actividad dentro de cualquier
entorno en la cual no esté presente algún tipo de información o registro. Cuando
esta información es debidamente procesada se convierte en estadísticas útiles para
el desarrollo y mejora continua.
Es por eso que antes de empezar con la teoría estadística propiamente dicha,
resulta interesante conocer brevemente algunos preliminares que nos ayudarán
de cierta manera a entender mejor a la razón de ser de esta ciencia.
2
La cultura egipcia (3050 A.C.), donde continuamente, incluso antes
de la construcción de las pirámides se analizaban datos acerca de la
población, tal fue así que cuando los judíos fueron esclavos en Egipto, el
faraón supo que el número de egipcios era inferior al número de judíos, y
ordenó mandó a matar a todos los primogénitos varones recién nacidos de
este pueblo.
La cultura Babilónica (3000 AC), donde se han encontrado restos de
tablas de arcilla, que se evidenció servían para recopilar datos de la
producción y el comercio que se realizaba
La cultura China, donde en los años 2200 A.C. el emperador Tao ordenó
se censara todo el pueblo.
La cultura Romana, donde en los años 500 A.C. existía un funcionario
del estado conocido con el nombre de “censor”, el cual controlaba el
número de habitantes y la distribución de la población en el territorio
Por los años 1500 D.C. se registró en Inglaterra y Francia, los
bautismos, fallecimientos y matrimonios de la población, tales hechos se
publicaban semanalmente y continuó siendo una costumbre durante
mucho tiempo
Durante los siglos XVII y XVIII, grandes matemáticos como Bernoulli,
Lagrange, Laplace entre otros, desarrollaron la denominada teoría de la
probabilidad, la cuál años más tarde sería el sustento de la mayoría de
teorías estadísticas hasta ahora existentes y que dieron origen a las
múltiples aplicaciones de esta ciencia.
3
Estadística.- Se puede definir a la estadística como la ciencia encargada de
recolectar, analizar e interpretar la información, para aportar en el proceso de
toma de decisiones de una forma más efectiva
Además la estadística constituye una herramienta fundamental en la investigación
científica, busca explicar las relaciones y las dependencias que existen entre
fenómenos, ya sea que estos ocurran de manera aleatoria o condicional.
A la estadística para su comprensión se la puede clasificar en dos grandes grupos
que son:
La estadística Descriptiva.- Que se encarga de describir (ya sea gráfica o
numéricamente) la información obtenida, de tal manera que se la pueda resumir
y observar con la mayor claridad y exactitud posible
La Estadística Inferencial.- Que se encarga de realizar modelos que permitan
inferir y/o predecir parámetros de una población, a partir de la información
proporcionada por una muestra representativa. A la estadística inferencial para
distinguirla de acuerdo al tipo de información que utiliza en la muestra se la puede
clasificar en estadística paramétrica o no paramétrica
Figura 1.1
Estadística
Descriptiva Inferencial
No
Paramétrica
Paramétrica
1.3.Conceptos Preliminares
Población.- Es el conjunto formado por N individuos, que son todos
aquellos sobre los cuales se desea realizar el estudio, normalmente es
4
demasiado grande para poder estudiarlo en su totalidad, por lo que se
extrae un subconjunto (muestra), para en base a ella realizar inferencias
Muestra.- Es un subconjunto de la población, formado por n individuos,
a los cuales es posible acceder para realizar mediciones
Figura 1.2
Población
N Muestra
individuos
n
Individuos
5
Figura 1.3
Población
Parámetro Muestra
θ
Estadístico
Variables
Cualitativas Cuantitativas
6
Experimento.- Es todo proceso a través del cual conseguimos un dato o
información
Censo.- Es el proceso mediante el cual se recogen datos o información de
interés sobre el total de una población.
Encuesta.- Es el proceso mediante el cual se recogen datos o información
de interés sobre la muestra representativa que se eligió mediante el
proceso de muestreo.
Figura 1.5
Población
Muestra
Censo
Encuesta
7
2. CAPÍTULO 2:
FUNDAMENTOS DE R
2.1.¿Qué es R?
R es un lenguaje de programación, principalmente encaminado a desarrollar
análisis estadístico de la información, sea esta cuantitativa o cualitativa, y su
respectiva representación gráfica en los casos que sea posible. Fue iniciado en 1995
por Robert Gentleman y Ross Ihaka (de sus nombres deriva el nombre de “R”) del
Statistics Department “University of Auckland”
8
(Figura 2.1)
Figura 2.1
2.2. R Console
Es el lugar donde se desarrollará todo el trabajo “WorkSpace”, desde esta
consola el usuario podrá escribir todas las entradas que sean de interés, y así
mismo podrá visualizar todas las salidas que puedan producir dichas entradas. Sin
duda al escribir en la consola de R podemos hacer uso de la variedad de objetos
que posee este software. Con el afán de que el lector pueda visualizar muy
ligeramente este proceso, haremos una operación muy sencilla que consiste en
encontrar la media de un grupo de datos utilizando la función mean(). No es de
interés aún saber cómo ingresar datos y obtener resultados, más bien los
siguientes son tan solo ejemplos con el afán de visualizar la escritura en R Console:
Al ingresar los datos [3 5 6 7 12 4 11 7] de la siguiente forma
9
[1] 6.875
Otro ejemplo de interés podría ser generar seiscientos números aleatorios que
sigan una distribución de poissón con parámetro λ = 7, tal proceso se muestra en
la figura 2.3 a través del comando rpois(600,7):
Figura 2.3
10
Gráfica 2.1
Histogram of rpois(600, 7)
150
100
Frequency
50
0
0 5 10 15 20
rpois(600, 7)
En fin, podríamos ejecutar un sin número de objetos que nos ayudaría a resolver
diferente necesidades. Sin embargo resulta interesante saber que existe una
interfaz basada en el lenguaje R, en la cual podemos elaborar las mismas tareas
realizadas en la consola, pero con la diferencia que el proceso se encuentra mejor
organizado, es más amigable con el usuario, se puede observar todo el
procedimiento con sus distintos resultados (numéricos y gráficos), se puede
observar todo el historial de comandos ejecutados, etc… todo esto en diferentes
ventanas dentro de una misma área de trabajo, o lo que es conocido dentro de este
software como “R-Project”. Esta interfaz es conocida con el nombre RStudio, y
la cual se constituye en el centro de interés para el soporte de cálculos y gráficos
estadísticos desarrollados en el presente libro.
2.3. RStudio
El RStudio no es un lenguaje de programación, sino más bien se lo puede
considerar como una interfaz que está basada en el lenguaje R, del cual acabamos
de hablar.
Explicando un tanto mejor lo dicho, esto es similar a lo que ocurre con Microsoft
Excel, y el lenguaje de programación C. La mayoría de personas estamos
acostumbrados a aprovechar de todas las ventajas y facilidades (funciones,
11
gráficas, formatos, condicionantes, filtros etc…) que existe al momento de trabajar
con la hoja de cálculo, sin embargo no hay que olvidar que todas estas bondades
están programadas internamente en el lenguaje de programación “C”, por lo que
en realidad el Excel no es un lenguaje donde podamos programar, sino más bien,
este es considerado como una interfaz que se basa en “C”. Es similar lo que ocurre
con el lenguaje de programación orientado a objetos “R”, y la interfaz gráfica
basada en “R” que se denomina “RStudio”.
El entorno del RStudio es el que se muestra a continuación en la Figura 2.4:
Figura 2.4
1
Correr (Run) un comando significa ejecutarlo una vez que se lo ha escrito, para hacer esto
debemos seleccionar la parte del script que queramos correr y aplastar el botón Run o a su vez
(CTRL+R). Por cuestiones pedagógicas escribiremos el comando en la ventana 1, y visualizaremos
su respuesta después de correrlo en la ventana 3
12
en esta ventana un conjunto de datos creados o exportados, si el usuario
así se lo ordena al programa.
(2) En la parte superior derecha donde entre otras cosas, podemos
observar el historial “History” de todos los procesos, objetos, funciones,
etc…que han sido utilizados y ejecutados ( Run (CTRL +R)), aun cuando
estos hayan sido borrados o modificados desde el Script. Así también se
puede observar desde “Enviroment” la lista de variables que han sido
ejecutadas correctamente, y además podemos importar desde un
directorio de nuestro computador una base de datos.
(3) En la parte inferior izquierda tenemos la “R Console”, de la cual ya
hemos hablado, pero que dentro de R Studio es conveniente que el uso esté
dirigido únicamente para observar todos los resultados provenientes de
los cálculos y de los objetos ejecutados desde el Script, esto debido a que
de esta forma el trabajo será más organizado.
(4) Finalmente, la parte inferior derecha, donde entre otras cosas nos
ayuda a observar: los archivos “Files” dentro de nuestro computador
desde los cuales estamos ejecutando y guardando nuestro trabajo, los
gráficos “Plots” que hemos realizado desde el Script, los paquetes
“Packages” que están instalados en R, los cuales al ser activados sirven
para que se pueda hacer uso de los comandos que poseen dichos paquetes,
que por lo general ayudan a procesar información para resolver un
problema específico, y la ayuda “help”, la cual nos muestra información
acerca de un objeto (comando o función) que se está utilizando, y cuyo
funcionamiento no queda claro para el usuario.
Así, para el ejemplo acerca de generar seiscientos números aleatorios que sigan
una distribución de poissón con parámetro λ = 7 y visualizar en un histograma su
distribución de probabilidad, la apariencia que tendría este pequeño ejercicio en
RStudio sería:
13
Figura 2.5
Y claramente podemos observar como después de escribir los comandos para este
pequeño ejercicio en la ventana 1, se puede visualizar en la ventana 3 los
resultados, es decir los 600 números aleatorios, y en la ventana 4 la gráfica
(histograma)
En adelante se escribirá únicamente el o los comandos y códigos que deben ir en
la ventana 1, y el lector deberá saber que sus resultados numéricos se muestran en
las ventanas correspondientes
Al momento de escribir un código podemos escribir luego del signo “#” cualquier
comentario, y al momento de mandar a correr el programa dichos comentarios no
serán tomados en cuenta, y no afectarán en el proceso de cálculo
x <- rpois(600,7) # Genera 600 números aleatorios que siguen una distribución de
Poisson con media lambda igual a 7
x # Muestra los 600 números
hist(x) # Grafica el histograma para los datos de x
14
numéricos o gráficos que se necesita. De esta forma existen comandos que
necesitan de argumentos (datos de entrada), para poder mostrar los diferentes
resultados (datos de salida), que son necesarios al momento de resolver un
problema
Si alguien estuviera interesado en conocer el código con el que se encuentra
elaborado un comando específico solo tiene que seleccionar dicho comando y
aplastar la tecla “F2” en su teclado, y automáticamente aparecerá una pestaña en
la ventana 1 denominada “Source Viewer”, donde podrá apreciar el código con
el que está programado dicho comando. Por ejemplo existe un comando en R que
sirve para realizar la prueba de normalidad de “Shapiro Wilks”, shapiro.test( ), el
cual arrojará un estadístico de prueba con su respectivo valor P, el mismo que nos
ayudará a tomar una decisión respecto a la hipótesis de si un grupo de datos viene
o no de una población normal
> shapiro.test(x)
Shapiro-Wilk normality test
data: x
W = 0.9845, p-value = 0.2935
Sin lugar a duda debemos suponer que estos valores son calculados a partir de
ecuaciones y procedimientos matemáticos, los cuales para ser ejecutados dentro
de R (o cualquier otro lenguaje de programación) deben ser previamente escritos
como un algoritmo, este algoritmo es el que se mostrará al aplastar la tecla F2,
luego de seleccionar el comando (sin incluir los paréntesis), y es el que se muestra
a continuación:
15
Figura 2.6
16
Por lo general suele suceder que no sabemos cómo ingresar en el comando toda la
información que desearíamos para que este pueda entender precisamente lo que
deseamos calcular, en este caso al seleccionar el comando y aplastar la tecla “F1”,
en la ventana 4, dentro de la pestaña “help” aparecerá la ayuda que se necesita
acerca de todos los argumentos (obligatorios y no obligatorios) que nos permite
ingresar el comando. Para explicar el uso que se le debe dar a esta ayuda lo
ilustraremos con el siguiente ejemplo:
Supongamos que deseamos dibujar una función cuadrática “2x 2 – 1”, para lo cual
utilizamos el comando “plot( )”, sin embargo, no conocemos cómo ingresar los
datos de entrada, por lo que seleccionamos el comando sin los paréntesis y
aplastamos la tecla F1 (otro modo de solicitar la ayuda es escribiendo el nombre
del comando en la parte superior derecha de la pestaña help), y entonces se
mostrará la siguiente información respecto a los argumentos:
17
Arguments
the coordinates of points in the plot. Alternatively, a single plotting structure, function or any Robject
with a plot method can be provided.
y the y coordinates of points in the plot, optional if x is an appropriate structure.
... Arguments to be passed to methods, such as graphical parameters (see par). Many methods will accept
the following arguments:
type
All other types give a warning or an error; using, e.g., type = "punkte" being equivalent
to type = "p" for S compatibility. Note that some methods, e.g.plot.factor, do not accept this.
main
sub
xlab
ylab
asp
Donde podemos observar que la ayuda sugiere que todos los argumentos posibles
en la funciónthe y/x aspect ratio, see plot.window.
son: “x”, “y”, “type”, “main”, “sub”, “xlab”, “ylab” y “asp”; sin embargo
el único obligatorio es el argumento “x”, el cual al estar solo es el rango de la
función que toma valores en el eje de las y, por lo que bien se podría asignar un
18
vector “x” cualesquiera y graficarlo con este comando, en este caso generaremos
un vector de una secuencia desde -10 hasta 10:
Figura 2.7
19
Figura 2.8
20
Figura 2.9
21
Figura 2.10
22
distribución normal2 , donde el único argumento que necesita este comando es un
vector que contenga los datos a ser probados, entonces cuando buscamos la ayuda
acerca de este comando, se muestra la siguiente información respecto a los
valores:
Value
p.value an approximate p-value for the test. This is said in Royston (1995) to
be adequate forp.value < 0.1.
method the character string "Shapiro-Wilk normality test".
Si corremos este comando, sin tomar en cuenta ningún valor, sino únicamente el
comando con su argumento, observamos los siguientes resultados:
> a<-c(2,4,6,5,7,8,5,6,8,4)
> shapiro.test(a)
data: a
W = 0.9526, p-value = 0.6992
2
No es de interés en el presente capítulo hablar o explicar a detalle esta prueba estadística, lo
único que nos interesa es tratar de explicar el correcto uso en general de los comandos, a partir
de este comando específico
23
> a<-c(2,4,6,5,7,8,5,6,8,4)
> shapiro.test(a) $ statistic
W
0.9525893
> a<-c(2,4,6,5,7,8,5,6,8,4)
> shapiro.test(a)$ p.value
[1] 0.6991811
> a<-c(2,4,6,5,7,8,5,6,8,4)
> shapiro.test(a)$ method
[1] "Shapiro-Wilk normality test"
24
Figura 2.11
25
Figura 2.12
Si el usuario no activase el paquete, cuando corra los comandos que este posee, R
le dará el aviso que no ha podido encontrar dicho comando.
26
Es importante tener en cuenta que una vez que usted activa un comando y lo
utiliza, y luego de cerrar su sesión de RStudio regresa después de un tiempo para
intentar utilizarlo, usted debe volverlo a activar.
Algunos pocos ejemplos de paquetes existentes en R y que son de gran utilidad
son:
Rcmdr o también conocido como R Comander, que sirve para realizar
algunos gráficos y cálculos estadísticos sin necesidad de escribir en un
script ningún comando o función, sino que más bien tan solo ingresando
una matriz de datos, lo único que debemos hacer es seleccionar el cálculo
que queremos que se realice e inmediatamente los resultados aparecerán.
ggplot2, que es un paquete que contiene comandos que nos ayudará a
realizar gráficas complejas con varias capas para que sea más fácil de
interpretar y mejore la estética y didáctica de la presentación
rgl, que nos ayuda a realizar gráficos interactivos y figuras geométricas en
3D
qcc, que es un paquete que nos brinda comandos para realizar gráficos para
el control estadístico de la calidad, como diagramas de Pareto cartas de
control, de atributos… etc
SQLdf, que nos permite cargar bases de datos pero además realizar
consultas
foreing, que nos permitirá importar desde otros paquetes estadísticos una
base de datos que se encuentre ya realizada
aspect, que nos facilita comandos para realizar análisis multivariante de la
información
En fin, hasta la actualidad existen 6097 paquetes disponibles, para cada uno
de los cuales existe un manual de referencia en formato .pdf, y un grupo de
investigadores los cuales año tras año siguen realizando sus aportes (paquetes),
con el fin de enriquecer esta librería. Para cada uno de estos paquetes se podría
elaborar un libro tan solo para ver la relación entre las diversas técnicas
estadísticas existentes, y el soporte para cálculos y gráficas que tiene cada librería
con respecto a las técnicas, de hecho existen ya algunos libros basados en los
27
paquetes existentes. Es interesante hacer notar que cada uno de estos paquetes
son diseñados para resolver problemas que en su gran mayoría tienen que ver con
el análisis de la información, por lo que se podría decir que este software es
netamente estadístico.
La lista de todos los paquetes, así como la explicación respectiva acerca de su
funcionamiento se puede encontrar en la siguiente dirección http://cran.r-
project.org/web/packages/index.html
Para obtener ayuda acerca del paquete que queremos utilizar, basta con hacer clic
sobre el nombre de dicho paquete e inmediatamente en la pestaña “help”
aparecerá toda la ayuda disponible
> 2 -> x
> x <- 2
> x <- 2
>x
28
Y así para hacer por ejemplo una suma entre 2 variables x e y, o cualquier
operación matemática posible podríamos asignar:
> x <- 2
> y <- 5
> suma <- x + y
> suma
2.6.2.Vectores
Se trata de la estructura de datos más sencilla, puesto que es una matriz de
dimensión “1 x p”, si lo quisiéramos ver como un vector fila, o una matriz “p x 1”,
si se tratara de un vector columna. Existen varias formas en R de crear un vector,
las más comunes son:
Con la función “c( )”, que en realidad se usa para concatenar objetos pero
que es muy útil al momento de proporcionar un vector. Así por ejemplo,
podríamos crear un vector que contenga los números “3 5 6 7 8 3 4”,
mediante
> x[5]
[1] 8
Así mismo, en otra variable podríamos asignar un vector, pero ahora con
elementos no numéricos, como se muestra a continuación:
29
> y <- c("Pablo","Anita","Rosita","Paco","Carmen","Josué","Isaac")
>y
[1] "Pablo" "Anita" "Rosita" "Paco" "Carmen" "Josué" "David"
> y[2]
[1] "Anita"
> seq(1,9)
[1] 1 2 3 4 5 6 7 8 9
> seq(7,21,by=2)
[1] 7 9 11 13 15 17 19 21
> seq(5,1,by=-0.5)
[1] 5.0 4.5 4.0 3.5 3.0 2.5 2.0 1.5 1.0
30
En todos estos casos, note que no hemos asignado ninguna variable a los
vectores, esto hará que los comandos se ejecuten automáticamente sin
necesidad de mandarlos a correr, esto podría parecer más práctico, pero
cuando se escribe un código grande es recomendable asignar variables a
todos los vectores que estemos creando. Una desventaja por ejemplo es que
no podemos encontrar un elemento de un vector si lo necesitamos, en
cambio sí para crear la última secuencia se le hubiese asignado una
variable, sería fácil por ejemplo encontrar su sexto elemento que es “-2”
> numeric(5)
[1] 0 0 0 0 0
Con la función rep( ), que crea un vector con un mismo número, tantas
veces como se lo indique en su argumento. Por ejemplo si quisiéramos
crear un vector que repita el número siete 12 veces, escribimos:
> rep(7,12)
[1] 7 7 7 7 7 7 7 7 7 7 7 7
Estas funciones que se han mostrado para crear vectores, están en su forma más
simple, es decir poniendo el argumento básico, sin embargo al pedir ayuda sobre
31
cada función podemos observar los diferentes argumentos que nos es posible
introducir en cada una de ellas, así como las distintas opciones de valores que nos
es posible visualizar, tal como se indicó en el apartado 1.4.
2.6.3.Matrices
Una matriz es un arreglo bidimensional de nxp elementos dentro de un conjunto
ordenado, donde n representa el número de filas y p el número de columnas.
Existen varias formas de crear matrices en R, sin embargo la más común es
utilizando la función “matrix( )”. Los argumentos que contiene esta función son:
“data”, “nrow”, “ncol”, “byrow” y “dimnames”, la forma de utilizar estos
argumentos para crear matrices se explica a continuación:
data en este argumento se colocarán todos los elementos que queremos
que sean parte de la matriz, para hacerlo podemos utilizar cualquiera de
las formas que hemos aprendido para crear un vector. Cuando utilizamos
únicamente el argumento “data”, por defecto la matriz se crea con una sola
columna y el número de filas igual al número de datos ingresados.
32
se encuentren repartidos por columnas, el argumento nrow, nos ayudará a
definir lo dicho:
Para este ejemplo por defecto se crean 5 columnas, para que de esta forma
se completen todos los datos que ingresamos, y de esta manera se crea una
matriz 2 x 5.
ncol Como podemos observar cuando definimos un número de filas, el
número de columnas que se forman por defecto son todas las necesarias
para que se puedan visualizar el número faltante de elementos ingresados,
sin embargo si quisiéramos restringir el número de columnas para que
sean por ejemplo solo 3, y de esta forma se ingresen solo los primeros
números correspondientes, entonces utilizamos el argumento “ncol”
Sin embargo nótese que existe un mensaje de advertencia escrito con rojo,
esto no quiere decir que hayamos utilizado mal el comando, solo nos
advierte que el número de datos ingresados que para nuestro caso son 10,
no es un múltiplo o submúltiplo del número de columnas indicadas, por
tal motivo para nuestro ejemplo en particular existen elementos que
ingresamos pero que al momento de formar la matriz no son tomados en
33
cuenta. El número de columnas perfectas para que se tome en cuenta todos
los elementos ingresados en nuestro ejemplo serían 5.
Si ingresáramos por ejemplo 6 columnas, nótese que los elementos se
agotarían, entonces lo que por defecto hace R, es volver a tomar los
primeros valores hasta que la matriz sea completada. Obviamente este
mensaje de advertencia nuevamente aparecerá de color rojo
byrow Note que siempre que usted crea una matriz, por defecto los datos
ingresados se ordenan por columnas.
Cuando al argumento byrow se le asigna un valor lógico verdadero, es decir
byrow = TRUE, estamos diciendo que los elementos se ingresen
ordenadamente en la matriz por filas.
34
> p <- matrix(data = c(2,7,8,4,7,1,6,8,1,5), nrow=2, ncol=5, byrow=FALSE)
>p
[,1] [,2] [,3] [,4] [,5]
[1,] 2 8 7 6 1
[2,] 7 4 1 8 5
>p
col1 col2 col3 col4 col5
fila1 2 8 7 6 1
fila2 7 4 1 8 5
> dim(p)
[1] 2 5
35
> x <- c(3,5,7,3,4,8)
> dim(x)<-c(2,3)
>x
[,1] [,2] [,3]
[1,] 3 7 4
[2,] 5 3 8
Para filtrar un elemento de una matriz tan solo hay que escribir el nombre
de la matriz seguido de corchetes, dentro de los cuales escribimos el par ordenado
que queremos localizar, y de esta forma el resultado nos arrojará el valor que se
encuentra en la coordenada ingresada. Por ejemplo para nuestra matriz x anterior
el par ordenado (2,3), está ocupado por el elemento 8:
>x
[,1] [,2] [,3]
[1,] 3 7 4
[2,] 5 3 8
> x[2,3]
[1] 8
Si lo que deseamos es filtrar toda una fila, lo que haremos es escribir dentro del
corchete el número de la fila que queremos filtrar en la posición correspondiente
a filas y dejamos en blanco la posición correspondiente a columnas. Por ejemplo
si en la matriz x queremos filtrar la 2º fila escribimos
> x[2,]
[1] 5 3 8
> x[ ,1]
[1] 3 5
36
Para filtrar por ejemplo la 1º y 3º columna a la vez, escribimos:
> x[ ,c(1,3)]
[,1] [,2]
[1,] 3 4
[2,] 5 8
37
var(x) Calcula la varianza de todos los valores de la matriz
round(x,n) Devuelve los valores de la matriz x, redondeados cada uno
en n cifras decimales
rev(x) Invierte el orden de los elementos de la matriz x
sort(x) Ordena los elementos de la matriz x de manera ascendente
rev(sort(x)) Ordena los elementos de la matriz x de manera descendente
cumsum(x) Calcula la suma acumulada de los elementos de la matriz x
cumprod(x) Calcula el producto acumulado de los elementos de la
matriz x
t(x) Devuelve la transpuesta de la matriz x
diag(x) Devuelve la diagonal principal de la matriz x
solve(x) Calcula la inversa de la matriz x
eigen(x) Calcula los autovalores y autovectores de la matriz x
sen(x) Calcula el seno de cada uno de los elementos de la matriz x
cos(x) Calcula el coseno de cada uno de los elementos de la matriz x
sin(x) Calcula el seno de cada uno de los elementos de la matriz x (se
puede calcular también el coseno y tangente con cos( )y tan( )
respectivamente)
asin(x) Calcula el arcoseno de cada uno de los elementos de la matriz x
(se puede calcular también el arcocoseno y arcotangente con acos( )y atan(
) respectivamente)
sqrt(x) Calcula la raíz cuadrada de cada uno de los elementos de la
matriz x
Ingresar cada una de las variables (x, y, z,…) como si fueran un vector. Se
debe tener muy en cuenta que como todas las variables van a ser medidas
sobre un mismo número de individuos, el número de datos que ingresemos
en cada variable debe ser el mismo
Escribir la función data.frame(x, y, z,…), en cuyo argumento se debe
escribir el nombre asignado a cada una de las variables de interés. Es de
39
gran utilidad asignar algún nombre a la matriz que se formará a través de
data.frame( ), en nuestro caso se llamará “datos”
40
Si queremos observar la matriz de datos, en una forma más ordenada como
la tenemos en la tabla 1.1, tan solo debemos escribir el comando View( ),
en cuyo argumento se debe escribir el nombre que se le asignó a la matriz
de datos creada
Si queremos filtrar una variable en particular de la matriz de datos
debemos escribir el nombre que asignamos a la matriz de datos, seguido
del símbolo $, y a continuación el nombre de la variable que deseo filtrar,
y adicional a esto podremos visualizar los niveles de esta variable. Por
ejemplo si queremos filtrar la variable sexo con sus dos niveles (hombre y
mujer);
> datos$sexo
[1] hombre hombre mujer hombre mujer mujer mujer mujer hombre hombre
Levels: hombre mujer
> datos[datos$sexo=="hombre",]
Lo que estoy dando, es una instrucción que indica que se filtre todas
aquellas filas donde la variable sexo sea hombre en todas las columnas
Tablas de frecuencias
Para conocer el número de veces (frecuencia), con la que se repite una
información, utilizamos el comando table( ), en cuyo argumento se escribe el
nombre de la base de datos, seguido del símbolo “$”, y el nombre de la variable
que deseo se calcule la frecuencia. Si quisiera por ejemplo saber con qué frecuencia
ocurren tipos de parto de la matriz de datos que le denominamos “datos”:
41
> table(datos$parto)
cesárea normal
5 5
Lo cual nos indica que de los 10 partos que hubo, 5 fueron por cesárea, y 5 por
parto normal.
Además podríamos realizar una tabla de frecuencias cruzadas entre dos variables,
tan solo aumentando un segundo argumento que sería el nombre de la segunda
variable de interés. Por ejemplo para conocer el tipo de parto que se produjo según
si el recién nacido fue hombre o mujer.
> table(datos$parto,datos$sexo)
hombre mujer
cesárea 3 2
normal 2 3
> edit(datos)
42
Figura 2.14
> getwd()
[1] "D:/Documents"
Por lo tanto siempre que quiera importar un documento, en el formato que sea,
debo guardar este archivo en la carpeta que está indicada. Si quisiéramos cambiar
de ubicación para guardar archivos debemos utilizar el comando setwd( ), en cuyo
argumento se debe escribir el directorio en el que deseo guardar los archivos. Por
ejemplo:
43
> setwd(C:/Usuarios/Pablo Flores/Mis documentos)
44
a <- read.table("Datos_Poblacion.txt", header = F,col.names=c("cantón","edad","sexo","habitantes"))
View(a)
Entonces luego de asignar a la matriz la letra “a”, con el comando View(a) puedo
visualizar la matriz de datos importada
Tabla 2.2
a <- read.csv(“Nombre_del_Archivo.csv”)
45
Importando Desde Un Archivo De Spss .sav
Necesitamos instalar y activar previamente los paquetes “foreign”, y “Hmisc”.
Luego de guardar en el directorio adecuado el archivo (Nombre_Archivo.sav),
utilizamos el comando “spss.get( )”, en cuyo argumento colocamos el nombre
del archivo entre comillas, y si queremos que se use los valores de las etiquetas el
valor lógico verdadero en el argumento use.value.labels
>spss.get("Nombre_del_Archivo.sav",use.value.labels=TRUE)
system.file("mat-files", package="R.matlab")
[1] "C:/Program Files/R/R-3.1.2/library/R.matlab/mat-files"
46
> Nombre <- file.path(path, "Nombre_Archivo.mat")
> Nombre
[1] "C:/Program Files/R/R-3.1.2/library/R.matlab/mat-files/Nombre_Archivo.mat"
Ejemplo 2.1:
Se crea en MATLAB un archivo con el nombre “ejemplo.mat”, el cual tiene tres
matrices con los nombres X, Y, Z:
11
1 3 5 21 1 2
𝑋=4 6 7 𝑌 = 31 𝑍=0 1
8 10 11 41 3 5
51
Importe este archivo desde MATLAB a R, en una variable denominada datos, y a
continuación visualice las tres matrices en mención
Solución:
El código para realizar esta operación es el siguiente
47
> library(R.matlab) ## Activamos la librería R.matlab
> directorio <- system.file("mat-files", package="R.matlab") ## Llamamos el directorio donde está
guardado el archivo ejemplo.mat
> nombre <- file.path(directorio, "ejemplo.mat") ## LLamamos al archivo por su nombre
> datos <- readMat(nombre) ## Leemos el archivo (lo importamos)
> datos ##Imprimimos los datos importados
$X
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 4 6 7
[3,] 8 10 11
$Y
[,1]
[1,] 11
[2,] 21
[3,] 31
[4,] 41
[5,] 51
$Z
[,1] [,2]
[1,] 1 2
[2,] 0 1
[3,] 3 5
attr(,"header")
attr(,"header")$description
[1] "MATLAB 5.0 MAT-file, Platform: PCWIN, Created on: Wed May 13 09:27:48 2015
"
attr(,"header")$version
[1] "5"
attr(,"header")$endian
[1] "little"
48
> X <- datos$X
>X
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 4 6 7
[3,] 8 10 11
>data( )
49
ChickWeight Weight versus age of chicks on
different diets
DNase Elisa assay of DNase
EuStockMarkets Daily Closing Prices of Major
European Stock
Indices, 1991-1998
En realidad son muchos más las bases de datos existentes, tan solo se muestral una pequeña parte
de la lista
Para visualizar alguna matriz de datos basta con escribir el nombre de dicha matriz
y mandarla a correr, inmediatamente aparecerán los datos que forman parte de la
misma. Por ejemplo existe una matriz de datos llamada “chickwts”, la cual consta
de 2 variables (peso y tipo de alimentación) medidas sobre 71 pollos. Para
visualizar esta matriz de datos únicamente escribimos chickwts, e
inmediatamente se despliega la siguiente matriz:
Tabla 2.3
En realidad son 71 individuos pero por cuestión de espacio solo se muestran los 1a primeros
50
3. CAPÍTULO 3:
FUNDAMENTOS DE MATLAB
3.1.¿Qué es MATLAB?
MATLAB, proviene de las siglas “Matrix Laboratory”, y se lo puede catalogar como
un programa interactivo, el cual posee múltiples aplicaciones para desarrollar
algoritmos matemáticos los cuales dan solución principalmente a problemas de
ingeniería.
Al igual que R, nosotros podemos obtener una gran ventaja del software MATLAB
en lo que análisis de datos se refiere, puesto que dentro de su parte programable
también funciona con objetos que ya están definidos, y los cuales pueden ser
manipulados o concatenados mediante operadores (aritméticos, lógicos, y/o
comparativos), lo que nos ayudará a crear un programa completo que resuelva
necesidades específicas. Por tanto a MATLAB, también lo veremos como un
lenguaje de programación orientado a objetos, sin embargo cabe aclarar que el
objetivo de este libro no es programar en el software, sino más bien utilizar los
objetos que existen por defecto para que sean un soporte al momento de realizar
un análisis estadístico (numérico y/o gráfico) de datos. MATLAB funciona
interactuando directamente con el usuario a través de comandos, los más básicos
para el manejo cotidiano del software son:
clear Borrará la lista de variables con las que se haya estado
trabajando sin que el usuario pueda dejar de visualizarlos
clc Limpiará por completo la pantalla
exit Saldrá del programa
format long Mostrará los números en formato largo (15 decimales)
format short Mostrará los números en formato corto (4 decimales),
este formato utiliza el software por defecto
format rat Muestra los números como fraciones
format bank Muestra los números como cantidades de dinero con 22
decimales
format short e Muestra los números en notación científica
51
who Muestra las variables que se están utilizando
pwd Muestra el directorio del computador donde se está almacenando
todo el trabajo realizado
date Muestra la fecha
clock Muestra la hora
52
(1) La ventana “Comand Window”, que es la ventana donde el usuario
puede interactuar con el programa, es decir se escriben los comandos
y además se muestran los diferentes resultados, a excepción de los
gráficos, puesto que estos aparecen en una ventana individual, en la
cual se los puede editar.
Es importante conocer que al escribir una instrucción en esta ventana,
basta con aplastar la tecla “Enter”, para que dicha instrucción se
ejecute o corra, sin embargo si quisiéramos que la instrucción se
ejecute internamente pero no se muestre en la pantalla, antes de
aplastar “Enter” debemos escribir la simbología punto y coma ( ; )
seguido de la instrucción. Por ejemplo tal vez si generamos un vector
con mil o más números para luego sacar su media, resultará fastidioso
que todos esos números se muestren, ya que lo que verdaderamente
nos interesa es su valor promedio, y por ello tapamos el vector con el
símbolo “;” y no hacemos lo mismo con el comando que mostrará la
media
>> x = 0:0.5:500;
>> mean(x)
ans =
250
53
Cuando queremos hacer algún comentario acerca de lo que estamos haciendo, se
utiliza el símbolo de porcentaje “%”, y a continuación se escribe dicho comentario
con color verde, caso contrario el software producirá un error ya que lo
interpretará como un objeto y no como un comentario
ans =
250 % Respuesta de la operación
54
>> help
HELP topics:
Sin lugar a duda los comandos que utilizaremos con mayor frecuencia en este texto
son los que pertenecen al tópico “stats”. Para conocer cuáles son los comandos
dentro de este o cualquier otro tópico, debemos ejecutar el comando help seguido
del nombre del tópico, para nuestro caso por ejemplo al interesarnos conocer los
comandos existentes en el tópico “stats” debemos escribir el comando “help
stats” y se desplegará la lista de comandos existentes en distintos campos de la
estadística
55
>> help stats
Statistics Toolbox
Version 8.2 (R2013a) 13-Feb-2013
Distributions.
Parameter estimation.
betafit - Beta parameter estimation.
binofit - Binomial parameter estimation.
dfittool - Distribution fitting tool.
evfit - Extreme value parameter estimation.
expfit - Exponential parameter estimation.
fitdist - Distribution fitting.
gamfit - Gamma parameter estimation.
gevfit - Generalized extreme value parameter estimation.
gmdistribution - Gaussian mixture model estimation.
gpfit - Generalized Pareto parameter estimation.
lognfit - Lognormal parameter estimation.
makedist - Make probability distribution.
mle - Maximum likelihood estimation (MLE).
mlecov - Asymptotic covariance matrix of MLE.
nbinfit - Negative binomial parameter estimation.
normfit - Normal parameter estimation.
paretotails - Empirical cdf with generalized Pareto tails.
poissfit - Poisson parameter estimation.
raylfit - Rayleigh parameter estimation.
unifit - Uniform parameter estimation.
wblfit - Weibull parameter estimation.
57
además también se puede apreciar las definiciones matemáticas estadísticas de la
función.
En MATLAB para separar los argumentos de un comando utilizamos el símbolo
de coma “,”.
Por ejemplo, dentro del campo de las funciones de distribución de probabilidad3,
encontramos el comando “normpdf”, el cual nos ayuda a estudiar la distribución
de probabilidad de una variable aleatoria normal o también llamad Gaussiana.
Para saber cómo funciona este comando entonces ejecutaremos “help normpdf”
Como podemos apreciar la ayuda nos dice que este comando calculará la función
de densidad de probabilidad de un punto en una distribución normal con media
MU y desviación estándar SIGMA, para lo cual los argumentos necesarios son: el
valor o valores de los puntos que se desea calcular sus respectivas probabilidades,
el valor de MU y el de SIGMA, pero que cuando no se ingrese los valores de MU y
SIGMA, por defecto el software ingresará 0 y 1 respectivamente en estos
argumentos, además nos muestra un documento donde se explica la función
normal “doc normpdf”, así como una lista de otros comandos referentes a la
función de probabilidad normal.
3
Este tema se lo aborda con mayor amplitud en …….
58
Supongamos entonces que queremos conocer la densidad de probabilidad que
tiene el punto 63, en una variable que sigue una distribución normal con media
MU = 54 y desviación estándar SIGMA = 16
>> normpdf(63,54,16)
ans =
0.0213
>> a = 7
a=
Para ingresar un objeto no numérico como por ejemplo el nombre de una persona
debemos escribirlos dentro de los caracteres de comillas simples ‘ ’.
>> b = ‘Pablo’
b=
Pablo
59
>> x = 3
x=
3
>> y = 4
y=
4
>> R = x + y
R=
7
>> x = 3;
>> y = 4;
>> R = x + y
R=
7
Note que se muestran los valores únicamente de la variable R, que es la que nos
interesa visualizar, y ya no se muestran los valores de los sumandos, pero si se
guardan dentro de la memoria.
3.4.2.Vectores
Existen diversas formas de ingresar un vector en MATLAB, pero las más comunes
son las que se presentan a continuación:
Generando un vector cuyos elementos son una secuencia numérica
aritmética. Para esto tan solo asignamos a una variable tres números
separados por el símbolo de dos puntos “:”, el primero es el número con el
que empieza la secuencia; el segundo es el número que va a indicar el
patrón que se va a ir sumando o restando progresivamente, y el tercero es
el número con el cual se termina la secuencia. Por ejemplo supongamos
60
que vamos genera un vector cuyos componentes son la secuencia de
números que empiezan en 20 y terminan en -20, pero van decreciendo de
5 en 5.
>> x = 20:-5:-20
x=
>> x = -5:5
x=
-5 -4 -3 -2 -1 0 1 2 3 4 5
>> x = [7,3,5,4,6,1]
x=
7 3 5 4 6 1
>> x = [7 3 5 4 6 1]
x=
7 3 5 4 6 1
61
vector seguido del o los elementos que quisiéramos agregar, por ejemplo si
al vector x anterior queremos añadir los elementos 2 y 8, escribimos:
>> x = [x,2,8]
x=
7 3 5 4 6 1 2 8
>> x(3)
ans =
>> x(3) = [ ]
x=
7 3 4 6 1 2 8
62
>> x = [7;3;5;4;6;1]
x=
7
3
5
4
6
1
n=
63
cumprod(x) Calcula el producto acumulado de los elementos del vector
x
sqrt(x) Calcula la raíz cuadrada de cada uno de los elementos del vector
x
sin(x) Calcula el seno de cada uno de los elementos del vector x
cos(x) Calcula el coseno de cada uno de los elementos del vector x
tan(x) Calcula la tangente de cada uno de los elementos del vector x
mean(x) Calcula la media de los elementos del vector x
median(x) Calcula la mediana de los elementos del vector x
var(x) Calcula la varianza de los elementos del vector x
std(x) Calcula la desviación estándar de los elementos del vector x
round(x) Redondea los elementos del vector x al entero más próximo
roundn(x,-n) Redondea los elementos del vector x a tantas cifras
decimales como se indica en n
sort(x) Ordena los elementos del vector x en forma ascendente
dsort(x) Ordena los elementos del vector x en forma descendente
x’ Calcula la transpuesta de un vector
k*x Multiplica cada uno de los elementos del vector x por una constante
k
x.^n Calcula la n – ésima potencia de cada uno de los elemento del
vector x
Es muy importante tener en cuenta el uso del punto en este tipo de
operaciones, ya que si no se lo pusiera el software entendería que se quiere
sacar la n – ésima potencia de la matriz, la cual es una operación que no
existe
x + y Suma los elementos del vector x con sus correspondientes del
vector y, siempre que estos tengan la misma dimensión
x – y Resta los elementos del vector y de sus correspondientes del vector
x, siempre y cuando estos tengan la misma dimensión
64
x. * y Multiplica los elementos del vector x, con los correspondientes
elementos del vector y, siempre y cuando estos tengan la misma dimensión
x./y Divide los elementos del vector x para sus correspondientes
elementos del vector y
3.4.4. Matrices
En realidad todo la información que se ingresa en MATLAB, el software lo
interpreta como una matriz, de hecho cuando ingresamos un vector en realidad
estamos ingresando una matriz de dimensión “1 x p”, o “p x 1” según sea el caso, e
inclusive si ingresamos un solo número o carácter, lo que estamos haciendo es
ingresando una matriz de dimensión “1 x 1”
Las formas más comunes para ingresar matrices se presentan a continuación:
Directamente dentro de corchetes, separando el número de filas mediante
el símbolo punto y coma, y el número de elementos dentro de cada fila con
el símbolo de coma
>> X = [2,3,4;7,3,1]
X=
2 3 4
7 3 1
>> X = ones(2,3)
X=
1 1 1
1 1 1
65
Con el comando “zeros( )” en cuyo argumento se escriben el número de
filas seguido del número de columnas, y que produce una matriz de unos
con tantas filas y columnas como se hayan indicado
>> X = zeros(2,3)
X=
0 0 0
0 0 0
Con el comando “eye( )” el cual crea una matriz cuadrada identidad cuya
dimensión igual a la que se indica en su argumento
>> X = eye(3)
X=
1 0 0
0 1 0
0 0 1
Con el comando “magic( )”, el cual crea una matriz cuadrada cuya
dimensión se la indica en el argumento del comando, y cuyos elementos
están formados por los números que empiezan desde el 1 hasta el cuadrado
del argumento ingresado distribuidos de forma aleatoria
>> X = magic(4)
X=
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
66
X = rand(3,5)
X=
67
Figura 3.2
A partir de esta opción podemos importar textos tanto con formato .txt como con
formato .xlsx. Por ejemplo vamos a importar los datos de la tabla 1.1 referentes a
los 10 niños a los cuales se les midió, su peso, talla, sexo y tipo de parto que se
registraron al nacer.
El primer paso será seleccionar el documento desde el directorio en el que se
encuentra dentro de su computador. A continuación aparecerá un cuadro de
diálogo donde se muestra además la matriz de datos a importarse
Figura 3.3
Al dar click sobre el botón verde los datos se importarán al workspace del software
variable por variable
68
Figura 3.4
Si usted desea observar una variable en especial tan solo debe escribir el nombre
de dicha variable en el comand window, y aparecerá el vector columna con los
datos de la variable en mención:
>> Sexo
Sexo =
'hombre'
'hombre'
'mujer'
'hombre'
'mujer'
'mujer'
'mujer'
'mujer'
'hombre'
'hombre'
69
>> X = [Nio,Peso,Talla]
X=
El defecto al ocupar esta opción es que solo se puede mostrar en una misma matriz
variables del mismo tipo, es decir no se podría mostrar las variables cuantitativas
y cualitativas a la vez
Además usted tiene la siguiente opcion para importar datos desde excel:
Desde Excel podemos importar los datos utilizando el comando “xlsread(
)”, cuyo argumento es el nombre del archivo, pero siempre debemos cuidar
que dicho archivo se encuentre en la carpeta del directorio en el cual está
trabajando el software.
Para saber cuál es el directorio, este se lo puede observar bajo la barra de
herramientas en la parte superior izquierda o a su vez mediante el comando pwd
>> pwd
ans =
C:\Program Files\MATLAB\R2013a\bin
Al visualizar los datos usted notará que solo se ha importado las variables de tipo
cuantitativas
Para importar una matriz de datos desde R a MATLAB, se recomienda copiar dicha
matriz a un archivo de testo o de Excel y a continuación el procedimiento que ya
se indicó
70
Importando desde un archivo de R
En realidad no existe forma de importar directamente desde MATLAB un archivo
o una base de datos creado en R a este software, sin embargo desde R se puede
exportar datos al software MATLAB, con lo cual al final haremos lo mismo.
El requisito necesario es tener activado el paquete “R.matlab”, ya que
aprovecharemos el comando “writeMat( )” que es parte de este paquete. El
procedimiento a seguir se detalla a continuación:
En R, creamos una variable con los datos que deseamos exportar
datos <- matriz de datos
A continuación pegamos la variable creada en una directorio, mediante el
comando “paste( )”, en cuyo primer argumento escribimos el nombre del
directorio donde se pegará el archivo, el cual puede ser un directorio
temporal o ficticio, esto se lo consigue con el comando “tempfile( )”;
seguido de una coma, en el segundo argumento escribimos entre comillas
dobles la extensión del archivo, que en nuestro caso será “.mat”
filename <- paste(tempfile(), ".mat")
Utilizamos el comando “writeMat( )”, en cuyo primer argumento
escribimos el nombre de la variable asignada al directorio en que se pegó
la base de datos (realizado en el paso 2), y en el segundo argumento
escribimos un nombre asignado a los datos que queremos exportar
writeMat(filename, datos=datos)
Finalmente imprimimos el directorio (puede ser temporal), creado en el
paso 2, el cual lo tenemos que pegar en cualquier buscador de alguna
carpeta en nuestro computador, y automáticamente se abrirá MATLAB
con el archivo exportado.
Hay que tener muy en cuenta que el directorio que arroja R, tiene
separadores de raya oblicua doble, y por lo general las computadoras
admiten estos separadores pero en simples, por lo que antes de buscar este
directorio debemos borrar una raya oblicua:
Por ejemplo:
R dará esta dirección
71
“C:\\Users \\AppData\\Local\\Temp\\RtmpwpmriB\\file11401f1839f7 .mat”
Una vez que estén los datos en MATLAB, el usuario solo tndrá que mandar a
llamar dicha información. Para explicar de mejor manera lo dicho se plantea el
siguiente ejemplo
Ejemplo 3.1.
En R Studio, existe una base llamada “BOD”, la cual contiene información de 2
variables: “time” y “demand” medidas en 6 individuos. Exporte a MATLAB esta
matriz de datos
Solución:
Escribimos el siguiente código desde R:
72
Automáticamente se abrirá el siguiente cuadro de diálogo:
Al aplastar “Finish”, desde MATLAB, es necesario tan solo mandar a llamar con el
nombre a nuestra matriz (en nuestro caso el nombre es “datos”):
>> datos
datos =
Como puede notar aparecen las dos variables que son parte de nuestra matriz de
datos exportada. Si queremos visualizar alguna de ellas, por ejemplo demand:
>> datos.demand
ans =
8.3000
10.3000
19.0000
16.0000
15.6000
19.8000
73
>> datos = [datos.Time,datos.demand]
datos =
1.0000 8.3000
2.0000 10.3000
3.0000 19.0000
4.0000 16.0000
5.0000 15.6000
7.0000 19.8000
74
4. CAPÍTULO 4:
ANÁLISIS DE FRECUENCIAS Y
REPRESENTACIÓN GRÁFICA DE DATOS
4.1. Variables y Datos
Recordemos que la estadística descriptiva se encarga de describir (ya sea gráfica o
numéricamente) los datos obtenidos, de tal forma que se puedan resumir y
observar con la mayor claridad y exactitud posible. Por tanto la materia prima, o
la razón de ser de la estadística descriptiva son los datos, sin ellos sería imposible
realizar cualquier tipo de estudio estadístico, es entonces esencial conocer más
acerca de ellos:
75
Datos de tipo discretos.- Son valores numéricos que pueden contarse
en el campo de los números enteros. Por ejemplo la edad en años puede
ser 0, 1, 2 , 3, 10, 50, 60, etc…
Datos de tipo continuo.- Son aquellos cuyos valores se encuentran
dentro de una escala continua o de un intervalo. Por ejemplo la estatura
medida en centímetros, el peso medido en gramos, etc…
Además, a los datos cuantitativos se los puede clasificar de acuerdo al nivel de
medición que presenten, en este sentido entonces pueden ser de intervalo o de
razón:
Se denominan datos de intervalo cuando dentro de la escala en que se
están recogiendo los datos, el número cero no representa la ausencia de la
propiedad que se está midiendo. Por ejemplo si se está midiendo la
temperatura de una ciudad en grados Fahrenheit, cero grados Fahrenheit
(0ºF), no representa la ausencia de temperatura, sino más bien es un valor
de referencia para saber cuan frio o caliente se encuentra la ciudad
Se denominan datos de razón cuando dentro de la escala en que se están
recogiendo los datos, el número cero si representa la ausencia de la
propiedad que se está midiendo. Por ejemplo, si estamos midiendo la
distancia que existe entre dos puntos determinados en centímetros, cero
centímetros (0 cm), representa la ausencia de distancia entre estos dos
puntos y en este caso lo que está ocurriendo es que los puntos se
encuentran en la misma posición. Otro ejemplo podría ser los datos que se
recogen del gasto diario en dólares que una persona hace en su vida
cotidiana, $0 representa que en ese día la persona no gastó nada, es decir
representa la ausencia de gastos
Datos de tipo cualitativo.- Son valores que no representan una cantidad sino
más bien una cualidad o un atributo de las unidades de análisis, por ejemplo la
información recolectada en las variables sexo, nacionalidad, etc… Estos datos se
pueden clasificar de acuerdo a sus categorías en nominales u ordinales:
76
Los datos nominales son aquellos donde las categorías posibles de las
variables son nombres o etiquetas usados para diferenciar un individuo de
otro, no poseen ningún tipo de jerarquía ni ordenación. Por ejemplo los
datos respecto al color de ojos de un grupo de estudiantes universitarios,
pueden tener categorías como “negros”, “café”, “verdes”, “celestes”; note
que las categorías no representan un orden alguno sino tan solo un
nombre, una identificación.
Los datos ordinales son aquellos cuyas categorías posibles representan
un orden de jerarquía. Por ejemplo los datos respecto a las calificaciones
obtenidas en las categorías de “Sobresaliente”, “Bueno”, “Regular” y
“Pésimo” muestran que aquellos estudiantes pertenecientes a la categoría
“Sobresaliente”, son los más destacados de la clase, mientras que los que
pertenecen a la categoría “Pésimo”, son aquellos con el menor rendimiento
académico
4
La manera en cómo se crea esta base de datos la analizamos ya en el capítulo 2
77
observaciones y mediciones que se hacen a estos 10 individuos en las distintas 3
variables. Si por ejemplo queremos saber qué tipo de datos son los que se
encuentran en la variable “peso”, el comando “mode( )”, del software R nos
ayuda:
> datos
peso talla sexo
1 3.6 46.5 hombre
2 3.2 44.1 hombre
3 2.8 48.1 mujer
4 3.6 46.4 hombre
5 2.7 41.1 mujer
6 2.8 41.8 mujer
7 2.7 41.0 mujer
8 3.0 42.3 mujer
9 3.1 42.5 hombre
10 3.4 43.1 hombre
mode(y) # Con el comando "mode" determinamos que tipo de datos tiene la variable filtrada
[1] "numeric"
Con lo que podemos concluir que los datos referidos a la variable “peso” son de
tipo numérico.
Probemos ahora a ver qué tipo de datos son los que se encuentran en la variable
“sexo”:
y <- datos$sexo
[1] hombre hombre mujer hombre mujer mujer mujer mujer hombre hombre
Levels: hombre mujer
mode(y)
[1] "character"
Podemos así observar que la variable “sexo”, contiene datos de tipo cualitativo
(character), pero además cuando se filtra la variable nos permite observar las
categorías que tiene la variable (hombre, mujer)
78
4.2. Análisis Univariado de Frecuencias
Cuando manejamos datos de una variable y queremos resumirlos, una manera de
hacerlo es describir con qué frecuencia estos ocurren. Se trata de determinar cuan
repetitivos (en valor absoluto y porcentaje) son los distintos valores o categorías
que toma dicha variable, tal vez este análisis sea sencillo e incluso innecesario
mientras tengamos poca cantidad de información a analizar, pero mientras más
grande sea el conjunto de datos con el que estemos trabajando más importante
será tener un resumen de esta información, la cual nos muestre cuáles son los
datos que están apareciendo en el conjunto y con qué frecuencia lo hacen. Para
realizar una tabla donde se pueda observar un análisis de frecuencia de la
información es necesario tener en cuenta los siguientes conceptos preliminares:
Frecuencia absoluta.- En un conjunto de N datos, se denomina
frecuencia absoluta ni del i-ésimo dato, al número total de veces que se
repite dicho dato. Si existen un total de h datos distintos en todo el
conjunto, se cumple:
ℎ
∑ 𝑛𝑖 = 𝑁
𝑖=1
79
ℎ
∑ 𝑓𝑖 = 1
𝑖=1
80
4.2.2.Análisis de frecuencias para datos simples o sin
agrupar
Cuando existen pocos datos, o por lo general cuando estos provienen de una
variable discreta, se detalla la frecuencia de cada uno. Ya que no existen muchos
datos distintos, la información no se amontona y es fácil resumir uno a uno estos
datos en una tabla de análisis de frecuencia.
Ejemplo 4.1.
En la base de datos de R, existe una matriz llamada “mtcars” (tal como se indicó
para visualizarla basta con escribir el nombre y mandar a correr), que reúne la
información referente a 32 tipos de automóviles de los cuales se miden 11
características, entre ellas se mide la variable <<Número de carburadores>>,
denominada “carb”. Filtrando esta variable halle las frecuencias absolutas y
relativas.
Solución:
R nos proporciona el comando table( ), para calcular las frecuencias
absolutas, mediante el cual podemos ver cuantos datos existen en la
variable, y la frecuencia de cada uno, así como también el comando
prop.table( ), con el cual calculamos las frecuencias relativas, además
podemos utilizar el comando cumsum( ) para calcular las frecuencias
absolutas acumuladas y relativas acumuladas
81
> x <- mtcars$carb
> x # variable Nº de carburadores
[1] 4 4 1 1 2 1 4 2 2 4 4 3 3 3 4 4 4 1 2 1 1 2 2 4 2 1 2 2 4 6 8 2
> fa<-table(x) # frecuencia absoluta de x
> fa
x
1 2 3 4 6 8
7 10 3 10 1 1
> fr<-prop.table(fa) # frecuencia relativa de x
> fr
x
1 2 3 4 6 8
0.21875 0.31250 0.09375 0.31250 0.03125 0.03125
> faa <- cumsum(fa) # frecuencia absoluta acumulada de x
> faa
1 2 3 4 6 8
7 17 20 30 31 32
> fra <- cumsum(fr) # frecuencia relativa acumulada de x
> fra
1 2 3 4 6 8
0.21875 0.53125 0.62500 0.93750 0.96875 1.00000
82
>> x = [4, 4, 1, 1, 2, 1, 4, 2, 2, 4, 4, 3, 3, 3, 4, 4, 4, 1, 2, 1, 1, 2, 2, 4, 2, 1, 2, 2, 4, 6, 8, 2];
>> f = tabulate(x)
Value Count Percent
1 7 21.88%
2 10 31.25%
3 3 9.38%
4 10 31.25%
5 0 0.00%
6 1 3.13%
7 0 0.00%
8 1 3.13%
>> cumsum(f)
ans =
1.0000 7.0000 21.8750
3.0000 17.0000 53.1250
6.0000 20.0000 62.5000
10.0000 30.0000 93.7500
15.0000 30.0000 93.7500
21.0000 31.0000 96.8750
28.0000 31.0000 96.8750
36.0000 32.0000 100.0000
Gráfica De Pastel
Se trata de un gráfico circular subdividido en tantas partes como el número de
datos distintos o categorías de la variable existan, donde cada subdivisión
representa la frecuencia absoluta o relativa que tienen estas categorías, dando al
final la suma de todo el pastel el número total de datos o el 100% de las
subdivisiones según corresponda
En R utilizamos el comando pie( )
83
> x <- mtcars$carb
> fa <- table(x)
> pie(fa, main = "Gráfica de pastel de las frecuencias absolutas fa", labels = c("1 carb.","2
carb.","3 carb.","4 carb.","6 carb.","8 carb."))
> library("plotrix")
> pie3D(fa, main = "Gráfica de pastel de las frecuencias", labels = c("1 carb.","2 carb.","3
carb.","4 carb.","6 carb.","8 carb."))
84
En MATLAB el comando también es pie( ). Note que en este software
dado que el resultado de tabulate( ) es una matriz, antes de utilizar el
comando debemos filtrar la 2º columna y a continuación dibujar el
diagrama de pastel
fa =
7 10 3 10 0 1 0 1
>> pie (fa)
85
Gráfica 4.3 Salida En MATLAB De Un Diagrama De Pastel
31%
31%
9%
fa =
7 10 3 10 0 1 0 1
>> pie3(fa)
86
Gráfica 4.4 Salida En MATLAB De Un Diagrama De Pastel en 3D
3%
3% 1 carb
31%
2 carb
22% 3 carb
4 carb
6 carb
8 carb
9%
31%
Gráfica De Barras
Es una gráfica donde en el eje de las “x”, se ubican cada una de las distintas
categorías, o distintos datos que tiene una variable; para cada una de estas
categorías se levanta una barra sobre el eje de las “y”, tan alta como su respectiva
frecuencia absoluta o relativa:
En R el comando para graficar un diagrama de barras es barplot( ), cuyo
argumento principal es el vector con los datos. El siguiente comando
grafica un diagrama de barras incluyendo el título, aunque es importante
recordar que hay muchos más argumentos que se pueden modificar como
las etiquetas para los ejes, el color de las barras, el ancho de las barras, el
espacio entre barra y barra, etc…
87
x <- mtcars$carb
fa<-table(x)
barplot(fa, main = "Gráfica de barras de las frecuencias absolutas")
88
Gráfica 4.6 Salida en MATLAB de un diagrama de barras
10
0
1 2 3 4 5 6 7 8
Ejemplo 4.2.
En la base de datos de R existe una matriz de datos llamada <<chickwts>>, de las
siglas “Chicken Weights by Feed Type”, donde se miden dos variables: “Weight”
que es una variable numérica que nos proporciona el peso de 71 pollos; y “feed”
que es una variable categórica que proporciona el tipo de alimento suministrado a
estos animales. Después de filtrar la variable “feed”, halle una tabla de frecuencia
para resumir esta información, grafique la frecuencia absoluta en un diagrama de
barras y la frecuencia relativa en un diagrama de pastel
Solución:
En R:
89
> datos <- chickwts$feed
> datos
> x <- table(datos)
> y <- cumsum(x)
> z <- prop.table(x)
> t <- cumsum(z)
> s <- data.frame(x,y,z,t)
## Hasta aquí el data frame “s” muestra ya los resultados pero en una forma desordenada,
a continuación lo que haremos es únicamente ordenar en una tabla
Todos los comandos utilizados en este código han sido ya analizados, a excepción
de names( ), que lo que hace es arrojar los nombres de las variables que se
encuentran en un data.frame, para lo cual solo necesita como argumento el
nombre del data.frame.
De la misma forma, el comando gsub( ) puede resultar nuevo para el lector, éste
se encarga de cambiar los nombres a las columnas de un data.frame, para lo cual
los argumentos principales son el antiguo nombre, el nuevo nombre, y el comando
names( ), cuyo argumento debe ser el nombre de la matriz de datos que se desea
cambiar sus rótulos en las columnas
90
Gráfica 4.7 Gráfica de Barras en R para las frecuencias absolutas del ejercicio 4.2
Gráfica 4.8 Gráfica de Pastel en R para las frecuencias relativas del ejercicio 4.2
En MATLAB:
Lo que haremos en primer lugar es copiar la matriz de datos “chickwts” a un
documento de testo, para a partir de esto importar dicha matriz al software, tal
91
como ya se lo indicó en el capítulo 3. A continuación el código nos ayudará a
determinar el resultado para el ejemplo 4.2.
10
22
36
48
59
71
>> f.rel = [x{:,3}]; %Filtramos la 3º columna que en nuestro caso es la frecuencia relativa
>> frec_rel_ac = cumsum(f.rel)' % Esto nos permite calcular la frecuencia relativa acumulada
frec_rel_ac =
14.0845
30.9859
50.7042
67.6056
83.0986
100.0000
>> bar(f.abs)
92
Gráfica 4.9: Gráfica de Barras en MATLAB para las frecuencias absolutas del ejercicio 4.2
12
10
0
horsebean linseed soybean sunflower meatmeal casein
Gráfica 4.10 Gráfica de Pastel en MATLAB para las frecuencias relativas del ejercicio 4.2
17% horsebean
linseed
soybean
15%
sunflower
14% meatmeal
casein
17%
17%
20%
93
“hojas” los restantes. Este gráfico sirve cuando por lo menos se cuenta con dos
dígitos por dato, por ejemplo si tenemos el dato 47, el tallo sería el dígito 4 y la
hoja el dígito 7; o si por ejemplo tenemos el dato 325, el tallo sería 32 y la hoja 5.
Ejemplo 4.3.
En R existe una base de datos llamada “attitude”, en donde se encuentra la
variable “rating”, la cual tiene los siguientes datos: 43, 63, 71, 61, 81, 43, 58, 71,
72, 67, 64, 67, 69, 68, 77, 81, 74, 65, 65, 50, 50, 64, 53, 40, 63, 66, 78, 48, 85, 82.
Dibuje un Diagrama de Tallo y Hojas para resumir esta información.
Solución
En R tenemos el comando “stem( )”, el cual nos ayuda a graficar este diagrama,
cuyos argumentos más importantes son x en donde se debe indicar los datos de
los cuales deseo realizar el diagrama; y scale que debe indicar cuantos dígitos
deseamos tenga el tallo del diagrama, que para nuestro caso es 1
4 | 033
4|8
5 | 003
5|8
6 | 13344
6 | 5567789
7 | 1124
7 | 78
8 | 112
8|5
94
La tabla de frecuencias cuando agrupamos los datos es la misma que se presentó
en la sección 4.2.1 con la única diferencia que en la primera columna no se coloca
los datos simples sino los datos agrupados.
La forma de crear los intervalos se detalla a continuación:
a) Determinar el valor máximo y mínimo de los datos y calcular el rango o
amplitud total, que es el valor máximo encontrado en la base de datos
menos el valor mínimo
𝑅 = 𝑥𝑚𝑎𝑥 − 𝑥𝑚𝑖𝑛
b) Determinar el número de intervalos que se desea obtener.- El número de
intervalos suele ser determinado a menudo por conveniencia del analista,
sin embargo se recomienda que no sea menor que 5 ni mayor que 12. Si el
analista no tiene claro el número de intervalos a generar puede aplicar la
regla de Sturges: <<𝑛𝑖 = 1 + 3.32 ∗ log(𝑛)>>, donde n es el número de
datos.
c) Calcular el ancho del intervalo que se obtiene dividiendo el rango para el
número de intervalos
𝑅
𝑎=
𝑛𝑖
Ejemplo 4.4.
En R existe una base de datos llamada “BJSales”, la cual posee 150 datos acerca de
la venta en dólares que ha hecho una tienda en ciertos periodos no especificados.
Los datos son los que se muestran a continuación:
95
200.1 199.5 199.4 198.9 199.0 200.2 198.6 200.0 200.3 201.2 201.6 201.5
201.5 203.5 204.9 207.1 210.5 210.5 209.8 208.8 209.5 213.2 213.7 215.1
218.7 219.8 220.5 223.8 222.8 223.8 221.7 222.3 220.8 219.4 220.1 220.6
218.9 217.8 217.7 215.0 215.3 215.9 216.7 216.7 217.7 218.7 222.9 224.9
222.2 220.7 220.0 218.7 217.0 215.9 215.8 214.1 212.3 213.9 214.6 213.6
212.1 211.4 213.1 212.9 213.3 211.5 212.3 213.0 211.0 210.7 210.1 211.4
210.0 209.7 208.8 208.8 208.8 210.6 211.9 212.8 212.5 214.8 215.3 217.5
218.8 220.7 222.2 226.7 228.4 233.2 235.7 237.1 240.6 243.8 245.3 246.0
246.3 247.7 247.6 247.8 249.4 249.0 249.9 250.5 251.5 249.0 247.6 248.8
250.4 250.7 253.0 253.7 255.0 256.2 256.0 257.4 260.4 260.0 261.3 260.4
261.6 260.8 259.8 259.0 258.9 257.4 257.7 257.9 257.4 257.3 257.6 258.9
257.8 257.7 257.2 257.5 256.8 257.5 257.0 257.6 257.3 257.5 259.6 261.1
262.9 263.3 262.8 261.8 262.2 262.7
Con base a esta información genere una tabla de frecuencias para resumir la
información:
Solución:
Como podemos observar existen muchos datos, los cuales en su gran mayoría se
repiten una sola vez, por lo que hacer un análisis de frecuencia para cada uno de
ellos no resumiría la información, es así que procedemos a agrupar los datos
creando los intervalos de acuerdo a los pasos ya mencionados:
a) Calculamos el rango:
xmax = 198.6
xmin = 263.3
R = 198.6 -263.3 = 64.7
b) Determinamos el número de intervalos
ni = 1+3.32*log(150)
ni = 8.22 ≈ 8
Lo cual me sugiere que lo conveniente es construir 8 intervalos de clase.
Hay que tener muy en cuenta que esta solo es una recomendación y que el
96
analista puede decidir tener el número de intervalos que más le pareciera
conveniente
c) Calculamos el ancho del intervalo:
64.7
𝑎=
8
𝑎 = 7.9 ≈ 8
Lo que me sugiere que el ancho de intervalo es 8
Los intervalos que se forman son por tanto deben ser 8 con un ancho de 8, y
estos son:
198.6 – 206.6
206.7 – 214.7
214.8 – 222.8
222.9 – 230.9
231.0 – 239.0
239.1 – 247.1
247.2 – 255.2
255.3 – 263.3
Con los cuales puedo crear la tabla de frecuencias para datos agrupados:
Frecuencia Frecuencia
Frecuencia absoluta Frecuencia Relativa
absoluta acumulada Relativa acumulada
Datos (fa) (faa) (Fr) (Fra)
198.6 – 206.6 15 15 0,100 0,100
206.7 – 214.7 34 49 0,227 0,327
214.8 – 222.8 34 83 0,227 0,553
222.9 – 230.9 6 89 0,040 0,593
231.0 – 239.0 3 92 0,020 0,613
239.1 – 247.1 5 97 0,033 0,647
247.2 – 255.2 16 113 0,107 0,753
255.3 – 263.3 37 150 0,247 1,000
TOTAL 150 1,000
97
Haciendo el ejercicio en R:
Para obtener resultados acerca de la frecuencia relativa para datos
agrupados utilizaremos el comando “hist( )”, el cual realmente sirve para
crear un histograma, pero internamente lo que hace es agrupar los datos y
crear intervalos de tal forma que sirvan para hacer el gráfico. El comando
posee un argumento denominado <<plot>>, el cual admite valores lógicos,
y al poner en este argumento falso, aparecerán resultados de la frecuencia
relativa de estos datos, específicamente bajo el valor <<$counts>>.
$breaks
[1] 190 200 210 220 230 240 250 260 270
$counts
[1] 6 18 48 17 3 14 32 12
$density
[1] 0.004000000 0.012000000 0.032000000 0.011333333 0.002000000
[6] 0.009333333 0.021333333 0.008000000
$mids
[1] 195 205 215 225 235 245 255 265
$xname
[1] "datos"
$equidist
[1] TRUE
attr(,"class")
[1] "histogram"
98
“190 – 200”, “200 - 210”, “210 - 220”, “220 - 230”, “230 - 240”, “240 -
250”, “250 - 260” y “260 - 270”. Bajo el valor <<$counts>> podemos notar
que las frecuencias relativas en cada uno de estos intervalos son 6, 18, 48,
17, 3, 14, 32, y 12 respectivamente; las cuales no son las mismas que
calculamos manualmente en un inicio, esto lógicamente se debe a que los
intervalos creados por el software no son los mismos que nosotros
habíamos planteado en un comienzo.
Sin embargo bajo el argumento <<breaks>> podemos ingresar un vector
con los intervalos que deseemos, por ejemplo con el intervalo que
originalmente lo hicimos en nuestro ejemplo, y además como solo nos
interesa determinar las frecuencias escribimos:
Con lo cual tal como podemos apreciar tenemos las mismas frecuencias en
los intervalos que planteamos desde un comienzo. Finalmente un código
que serviría para encontrar toda la tabla de frecuencia viene dado por:
99
> datos <- BJsales
> a <- c(198.6,206.6,214.7,222.8,230.9,239,247.1,255.2,263.3)
> Intervalos <- c("198.6-206.6", "206.7-214.7", "214.8-222.8","222.9-230.9",
“231.0-239.0", "239.1-247.1","247.2-255.2","255.3-263.3")
> frec_abs <- hist(datos,breaks = a,plot = F)$counts
> frec_abs_ac <- cumsum(frec_abs)
> frec_rel <- prop.table(frec_abs)
> frec_rel_ac <- cumsum(frec_rel)
> data.frame(Intervalos,frec_abs,frec_abs_ac,frec_rel,frec_rel_ac)
5
Una marca de clase es el punto medio de cada intervalo creado, por ejemplo la marca de clase
para el intervalo [198.6 – 206.6] es 202.6
100
>> datos; %% Exporto los datos desde R
>> mc = [202.6,210.7, 218.8, 226.9, 235, 243.1, 251.2, 259.3]; %% Vector con las marces de clase
>> frec_abs = hist(datos,mc)
frec_abs =
15 34 34 6 3 5 16 37
tabla =
101
Histogramas, Polígono de frecuencias, Diagrama de Pareto y Ojivas.
Histograma
Un histograma es un gráfico de barras, en donde en la escala horizontal se
representan los distintos intervalos creados, en cada uno de los cuales se levantan
barras sin separación verticales tan altas como las frecuencias correspondientes a
cada intervalo, dichas frecuencias están representadas sobre el eje vertical.
Ejemplo 4.4.1
Con los resultados de las frecuencias absolutas para datos agrupados en intervalos
de la matriz de datos BJSales que se realizó en el ejemplo 4.3, realice un
histograma
Solución:
Solución en R:
Para crear el histograma en R, utilizamos el comando “hist( )” como lo hicimos
para calcular las frecuencias de cada intervalo, pero con la diferencia que para
el argumento “plot” asignamos un valor lógico verdadero (True). Como
queremos los mismos intervalos creados y no los que el software calcula por
defecto, escribimos:
102
Gráfica 4.11 Salida en R de un histograma para representar datos agrupados
Solución en MATLAB
En MATLAB utilizamos el comando hist( ), de la misma forma que lo hicimos
para calcular las frecuencias de cada intervalo, pero con la diferencia que no se
debe asignar a ninguna variable el histograma. Como queremos los mismos
intervalos creados y no los que el software calcula por defecto, escribimos:
>> datos;
>> mc = [202.6,210.7, 218.8, 226.9, 235, 243.1, 251.2, 259.3];
>> hist(datos,mc)
103
Gráfica 4.12 Salida en MATLAB de un histograma para representar datos agrupados
Histograma de BJSales
40
35
30
25
20
15
10
0
190 200 210 220 230 240 250 260 270
Polígono de Frecuencia
Es un gráfico que se genera a partir del histograma, se trata de un polígono cuyos
vértices coinciden con la marca de clase de cada intervalo, es decir con el punto
medio de cada barra que tiene el histograma, sirve para detectar el dato promedio
existente en cada intervalo de frecuencia.
Ejemplo 4.4.2
Con los resultados de las frecuencias absolutas para datos agrupados en intervalos
de la matriz de datos BJSales que se realizó en el ejemplo 4.3, realice un polígono
de frecuencias
Solución:
Solución en R:
En R utilizaremos el comando “lines( )”, el cual me permite crear líneas que
unen puntos dentro de un gráfico ya establecido, que en nuestro caso es el
histograma. Los argumentos obligatorios que en este caso debemos poner en
este comando son:
x = que denota los puntos sobre el eje de las “x”, y que para nuestro caso será
el mínimo valor de los intervalos, seguido en orden del valor medio de los
intervalos y el valor máximo
104
y = que denota hasta que altura en el eje de las “y” llega las líneas creadas, en
nuestro caso desde el punto cero hasta la altura de las frecuencias absolutas.
Estos dos primeros argumentos crearan los puntos formados por los pares
ordenados (x,y), que luego serán unidos por líneas:
Solución en MATLAB:
En MATLAB, luego de exportar los datos desde R, procedemos a escribir
el siguiente código:
105
>> plot(mc,h)
>> x=datos; % Datos exportados desde R de BJSales
>> mc = [202.6,210.7, 218.8, 226.9, 235, 243.1, 251.2, 259.3]; % Marcas de clase
>> h = hist(x,mc); % Histograma
>> mc = [195,mc,265]; %Añadimos dos puntos a los extremos
>> h = [0,h,0]; % Agregamos cero a los bordes para que el polígono parta y termine en cero
>> plot(mc,h,'o') % Hacemos un gráfico de puntos
>> hold on % Sobrescribir otro gráfico encima
>> plot(mc,h) % Dibujamos las líneas por encima de los puntos
>> grid on % Dibujamos la cuadrícula
40
35
30
25
20
15
10
0
190 200 210 220 230 240 250 260 270
106
Ojiva
Es un polígono que representa las frecuencias acumuladas absolutas o
relativas. Lo útil de esta gráfica es que nos permite observar cuantos valores se
encuentran por encima o por debajo de dichos valores
Ejemplo 4.4.3
Utilizando la base de datos BJSales cree una Ojiva
Solución:
Solución en R:
En R utilizaremos el comando “ogive.freq()”, que se encuentra dentro de la
librería “agricolae”. Lo único que necesita este comando es tener
previamente construido el histograma de los datos, para a partir de ello
construir la ojiva, tal como se muestra en el siguiente código:
library(agricolae)
datos <- BJsales
h<-hist(datos,plot = T) #histograma
ojiva<-ogive.freq(h,col="red",xlab="Datos", ylab="Frecuencia Relativa Acumulada", main="OJIVA")
Gráfica 4.15 Salida en R de una Ojiva para representar frecuencias relativas acumuladas
107
Solución en MATLAB:
A fin de que la gráfica en MATLAB tenga los mismos intervalos que la
realizada en R, utilizaremos las marcas de clase que por default son
calculadas en este software, con lo cual definiremos el dominio con los
mismos intervalos propuestos, tal como se muestra en el siguiente código:
Gráfica 4.16 Salida en MATLAB de una Ojiva para representar frecuencias relativas acumuladas
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
190 200 210 220 230 240 250 260 270 280
108
Como habíamos mencionado, la ojiva nos ayuda a determinar qué cantidad de
datos se encuentran por encima o por debajo de algún valor específico; así por
ejemplo podemos notar que aproximadamente el 60% de los datos son menores o
se encuentran por debajo de 230; o que el 30% de los datos son mayores o se
encuentran por encima del valor 250.
Donde:
109
fij Representa la frecuencia para la i – ésima categoría de la variable Y, y la j –
ésima categoría de la variable X. O dicho de otra forma el número de individuos
que cumple con la condición Yi y Xj al mismo tiempo.
f.j Representa la sumatoria de la columna j, o dicho de otra forma la frecuencia
de individuos que están en la categoría j de la variable X
fi. Representa la sumatoria de la fila i, o dicho de otra forma la frecuencia de
individuos que están en la categoría i de la variable Y.
f.. Es la sumatoria total por filas y columnas, que para el caso es el número total
de individuos sobre los cuales se está midiendo las dos variables
Rendimiento SEXO
Escolar Masculino Femenino TOTAL
Alto 0 8 8
Bajo 5 16 21
Medio 4 11 15
TOTAL 9 35 44
110
Estudiante Calificación Sexo Estudiante Calificación Sexo
1 Alto MASCULINO 23 Medio MASCULINO
2 Medio FEMENINO 24 Alto MASCULINO
3 Alto MASCULINO 25 Bajo FEMENINO
111
> data <- read.csv(file = "D:/Documents/data.csv",header = T,sep = ";") # importo los
datos desde un archivo .csv
> X <- data$Rendimiento.Académico # Filtro la variable Rendimiento Académico
> Y <- data$Sexo # Filtro la variable Sexo
> t <- table(X,Y) # Construyo la tabla de contingencia
>t # Imprimo la tabla de contingencia
Y
X FEMENINO MASCULINO
Alto 0 8
Bajo 5 16
Medio 4 11
Solución en MATLAB
En MATLAB utilizaremos el comando “crosstab( )”, este nos dará las
frecuencias cruzadas de las variables que ingresemos:
112
>> x = Rendimiento; % Exporto la variable Rendimiento Académico
>> y = Sexo; % Exporto la variable Sexo
>> t = crosstab(x,y) % Creo la tabla de frecuencia
t=
8 0
11 4
16 5
>> x = Rendimiento;
>> y = Sexo;
>> t = crosstab(x,y); % Hasta aquí tenemos la tabla ya obtenida
>> suma = sum(sum(t)) % Suma total de toda la matriz (Total de individuos)
>> sum_col = sum(t,1) % Suma de cada columna que luego se agregará en una 4º fila
de la matriz t
sum_col =
35 9
>> sum_filas = sum(t,2) % Suma de cada fila que luego se agregará en una 3º columna
de la matriz t
sum_filas =
8
15
21
>> t(4,:) = sum_col; % Asignación de la suma de columnas a la 4º fila de la matriz t
>> t(:,3) = [sum_filas;suma]; % Asignación de la suma de filas a la 3º columna de la matriz t
y además el valor de la suma total a la posición correspondiente
(4,3)
t=
8 0 8
11 4 15
16 5 21
35 9 44
113
5. CAPÍTULO 5:
DESCRIPCIÓN NUMÉRICA DE DATOS
Además de realizar un análisis de frecuencia (aprendido en el capítulo 4) que nos
ayude a resumir y presentar visualmente la distribución de los datos, es
importante estudiar algunos estadísticos o medidas estadísticas que son
substanciales al momento de describir un conjunto de datos.
Las distribuciones de frecuencias son importantes al momento de analizar la
información, nos permite tener un panorama general de este conjunto, sin
embargo dejamos a un lado aspectos importantes como la tendencia central, la
variabilidad, la posición, y la manera de medir ciertas relaciones que se puedan
dar entre dos o más variables, especialmente cuando son de tipo cuantitativo; y es
precisamente por eso que se estudian a continuación algunas medidas estadísticas
que nos ayuden a analizar con mayor claridad la información recolectada.
114
las 20 calificaciones que obtuvo durante todo el año en los distintos instrumentos
de evaluación, que al final se resumirá en la calificación promedio obtenida de 8.
Las medidas de tendencia central más utilizadas en estadística son las que se
detallan a continuación:
Media Aritmética
La media o más conocida como promedio de los datos se la representa con la letra
̅ , y se la obtiene sumando los datos existentes, y dividiendo para el número n
"𝑥"
de datos sumados:
∑𝑛𝑖=1 𝑥𝑖
𝑥̅ =
𝑛
La media aritmética tiene la deficiencia de ser sensible a los valores que toma la
variable, así cuando por ejemplo dentro del conjunto de datos se encuentra uno
que sea demasiadamente grande o pequeño, la media se ve seriamente afectada
por ese valor, y pudiera no resumir de manera adecuada el verdadero centro de la
información.
Ejemplo 5.1.
Los siguientes son los valores de las calificaciones sobre 10, obtenidas por un
grupo de 15 estudiantes de estadística:
Estudiante 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Calificación 8.3 8.1 7.7 8.5 9.3 7.8 8.5 7.9 8.2 0.5 8.2 9.1 8.6 9.2 8.0
115
Si nos fijamos en las calificaciones de los 15 estudiantes, la mayoría de estas
(específicamente 14) se encuentran en un intervalo de 7.7 a 9.3, a excepción de la
obtenida por el 10º estudiante que es de 0.5. Esta calificación es lo que en
estadística se conoce como un dato atípico, es decir numéricamente esta
observación es diferente del resto, por lo que al ser la media una medida sensible
a este tipo de datos, la calificación de este 10º estudiante está afectando el valor de
la media, y se recomienda en este caso utilizar otra medida que no sea sensible a
este tipo de valores atípicos, una opción es la mediana que la estudiaremos más
adelante.
Así, si eliminamos este valor atípico y calculamos el promedio o media, vamos a
obtener un valor mucho más real de la tendencia central del grupo de datos, y que
si puede servir como un estadístico que resuma correctamente las calificaciones.
8.3 + 8.1 + 7.7 + 8.5 + 9.3 + 7.8 + 8.5 + 7.9 + 8.2 + 8.2 + 9.1 + 8.6 + 9.2 + 8.0
𝑥̅ =
14
𝑥̅ = 8.4
Con una mayor seguridad podemos decir que en promedio la calificación del grupo
de estudiantes es de 8.4.
En R utilizamos el comando “mean( )” para calcular la media de un grupo
de datos:
>> x = [8.3,8.1,7.7,8.5,9.3,7.8,8.5,7.9,8.2,0.5,8.2,9.1,8.6,9.2,8.0];
>> mean(x)
ans =
7.8600
116
Media Para Datos Agrupados
Para calcular la media de datos agrupados, debemos sumar los productos de las
marcas de clase de intervalo por la frecuencia obtenida en el mismo, y este
resultado dividirlo para el número de datos existentes. Para explicar esto de mejor
manera nos basamos en el siguiente ejemplo:
Ejemplo 5.2.
Luego de hacer un análisis agrupado de frecuencias para los datos de “Bjsales”,
calcule la media
Solución
El proceso de hallar la media se lo resume en la siguiente tabla:
MC f Media
Intervalo (1) (2) (3) = (1)*(2) (4)
190 - 200 195 6 1170 229,87
200 - 210 205 18 3690
210 - 220 215 48 10320
220 - 230 225 17 3825
230 - 240 235 3 705
240 - 250 245 14 3430
250 - 260 255 32 8160
260 - 270 265 12 3180
TOTAL 150 34480
117
> datos <- BJsales # Guardo los datos
> f <- hist(datos,plot = F)$counts # Calculo las frecuencias agrupadas por intervalos
> mc <- hist(datos,plot = F)$mids # Calculo las marcas de clase de los intervalos
formados
> mult <- f*mc # Multiplico la marca de clase por su respectiva frecuencia
> sum_f <- sum(f) # Suma de las frecuencias (Número de datos)
> sum_mult <- sum(mult) # Suma de las multiplicaciones
> media <- sum_mult/sum_f # Finalmente obtengo la media
> media
[1] 229.8667
media =
229.8667
Mediana
Es otra medida estadística que nos ayuda a determinar la tendencia central de un
grupo de datos, a diferencia de la media, este estadístico no es sensible a valores
atípicos que se pudieran presentar.
La mediana se la representa con 𝑥̃, y se define como el valor que ocupa la posición
central de un grupo de datos cuando estos están ordenados. Si el número de datos
n es impar la mediana será exactamente la posición central, es decir
𝑥̃ = 𝑥(𝑛+1)⁄
2
Pero si n es par la mediana es la media aritmética entre los dos valores que ocupan
la posición central, es decir:
118
𝑥𝑛 + 𝑥𝑛+1
2 2
𝑥̃ =
2
Ejemplo 5.3.
Encuentre la mediana de los datos correspondientes a las 15 calificaciones de los
estudiantes de estadística del Ejemplo 5.1. Compare este valor con la media
calculada en el mismo ejemplo, a continuación vuelva a calcular la mediana
eliminando el dato atípico de 0.5
Solución:
Recordemos que los datos eran:
8.3, 8.1, 7.7, 8.5, 9.3, 7.8, 8.5, 7.9, 8.2, 0.5, 8.2, 9.1, 8.6, 9.2, y 8.0
Lo primero que haremos es ordenar los datos:
119
𝑥14 + 𝑥14+1
2 2 𝑥7 + 𝑥8 8.2 + 8.3
𝑥̃ = = = = 8.25
2 2 2
Si recordamos, la media para este grupo de datos era de 8.4, este valor está muy
cerca de la mediana calculada 𝑥̃ = 8.25, con lo cual una vez más corroboramos que
cuando no existen datos atípicos en una muestra la media es un buen indicador
del centro de la información.
En R utilizamos el comando “median( )” para calcular la media de un
grupo de datos:
>> x = [8.3,8.1,7.7,8.5,9.3,7.8,8.5,7.9,8.2,0.5,8.2,9.1,8.6,9.2,8.0];
>> median(x)
ans =
8.2000
Donde:
Li Es el límite inferior del intervalo que contiene el valor medio
a Es el ancho del intervalo que contiene el valor medio
n Es el número de datos (Suma de las frecuencias absolutas)
Fi-1 Es la frecuencia acumulada absoluta del intervalo anterior al que se
120
encuentra el valor medio
fi Es la frecuencia absoluta del intervalo donde se encuentra el valor medio
Para saber cuál es el intervalo donde se encuentra el valor medio debemos dividir
el número de datos para dos (n/2), en el intervalo cuya frecuencia acumulada
contenga dicho valor es aquel que contiene el valor medio.
Ejemplo 5.4.
Para los datos agrupados de la base “BJsales” encuentre la mediana:
Solución:
El procedimiento para hallar la mediana se lo detalla en la siguiente tabla
Intervalo f F
190 - 200 6 6
200 - 210 18 24
210 - 220 48 72
220 - 230 17 89
230 - 240 3 92
240 - 250 14 106
250 - 260 32 138
260 - 270 12 150
Como n/2 = 75, el intervalo que contiene este valor es [220 - 230] (pintado de
rojo), a partir de esto calculamos la mediana con la ecuación propuesta:
150
− 72
𝑥̃ = 220 + 10 [ 2 ]
17
𝑥̃ = 221.765
Se omiten los cálculos en los software R y MATLAB, puesto que son simplemente
la aplicación de la ecuación que se ha aplicado, y el cálculo de las frecuencias
absolutas y acumuladas ya se las explicó en su debido momento.
Moda
La moda es el dato dentro de la muestra que se repite con mayor frecuencia. Se la
utiliza mayormente para variables cualitativas, puesto que para estas no se pueden
hacer cálculos numéricos para determinar la media o la mediana; sin embargo es
121
posible también determinar la moda de una variable cuantitativa aunque no es
muy común hacerlo
Ejemplo 5.5.
Calcule la moda del siguiente grupo de datos cualitativos: “a, e, o, a, i, e, a, u, a, i,
u”
Solución:
En R:
La moda es “a”, puesto que es el dato que se repite con mayor frecuencia, en este
caso se repite 4 veces.
En MATLAB se utiliza directamente el comando “mode( )”, el problema es
que este comando sirve únicamente para datos de tipo cuantitativo; en este
caso lo recomendable es codificar la variable con números y luego asociar
el dato que se repite con mayor frecuencia al código que en un principio se
le asignó a dicho dato.
Para nuestro ejemplo, podemos observar claramente que la variable es
“Las vocales del alfabeto”, por lo que codificaremos de la siguiente manera:
a = 1, e = 2, i = 3, o =4, u=5. De esta forma la moda queda calculada así:
dato =
frecuencia =
122
Este resultado muestra que el dato 1 se repite 4 veces, y es el dato que tiene
una mayor frecuencia. Como el dato 1 se codificó con la letra “a”, entonces
es precisamente ese dato la moda, la cual se repite 4 veces.
Supongamos que existen dos estudiantes, los cuales a lo largo de sus 10 años de
Educación General Básica demostraron siempre ser los mejores, y obtuvieron las
siguientes calificaciones:
Año EGB 1º 2º 3º 4º 5º 6º 7º 8º 9º 10º
Estudiante A 8,7 8,8 8,9 8,3 8,8 8,4 8,5 8,7 8,7 8,6
Estudiante B 10 9,9 10 8,9 8,9 7,9 7,7 7,6 7,7 7,8
Si quisiéramos dar un galardón a uno de ellos: ¿A cuál de los dos estudiantes
escogeríamos? Seguramente lo que primero vendría a nuestra mente es sacar un
promedio de ambos y compararlos:
𝑥̅𝐴 = 8.64
𝑥̅ 𝐵 = 8.64
Sin embargo, al calcular el promedio de calificaciones obtenidas por estos dos
estudiantes, observamos que es exactamente el mismo valor, así que sería
sumamente difícil tomar una decisión acerca de a qué estudiante dar el galardón,
basados en esta medida de tendencia central.
123
En este caso sería muy importante realizar un análisis acerca de la dispersión de
los datos, puesto que si observamos las calificaciones tanto del estudiante “A”
como del estudiante “B”, nos podemos dar cuenta que “A” siempre tuvo sus
calificaciones muy agrupadas alrededor de su calificación promedio, es decir fue
muy constante en su vida estudiantil; mientras que “B” en los primeros años tuvo
muy buenas calificaciones, sin embargo en los últimos estas bajaron
considerablemente, lo cual nos muestra que su constancia no fue tan relevante
como la del estudiante A. Existen medidas estadísticas como la desviación típica,
desviación estándar, varianza y rango que nos ayudan a medir la dispersión de un
grupo de datos.
Al final para dar una solución al problema de los estudiantes, lo que se debería
hacer es calcular una medida que nos ayude a determinar la dispersión de las
calificaciones de cada uno de los dos estudiantes; al final, para este caso será mejor
el estudiante que posea menos dispersión en sus calificaciones. La medida de
dispersión será la desviación estándar (más adelante se mostrará su cálculo).
Desviación estándar para estudiante A = 0.18
Desviación estándar para estudiante B = 0.98
Por lo que decidiremos entonces que el estudiante galardonado sea “A”, es decir el
que tuvo menos dispersión en sus calificaciones, lo que significa que este
estudiante tuvo más uniformidad en sus calificaciones que “B”.
A continuación se muestran las principales medidas de dispersión:
Rango
O también llamado Recorrido, se lo representa con la letra R, y se define como la
diferencia entre el dato mayor y el dato menor. Mientras más grande sea el rango,
mayor será la dispersión de la información recolectada.
𝑅 = 𝑥𝑚𝑎𝑥 − 𝑥𝑚𝑖𝑛
Ejemplo 5.6
Calcule el rango del grupo de datos referente a las calificaciones obtenidas por un
grupo de 15 estudiantes en el ejercicio 5.1.
124
Solución:
En R:
En este software podemos utilizar el comando “range( )”, el cual nos dará
realmente un vector con 2 elementos indicando el valor mínimo y máximo
del conjunto de datos. Sin embargo si queremos el valor del rango como tal
lo que debemos hacer es restar estos dos valores
En MATLAB:
Utilizamos el comando “range( )”, el cual directamente nos proporciona
el valor del rango.
>> x = [8.3,8.1,7.7,8.5,9.3,7.8,8.5,7.9,8.2,0.5,8.2,9.1,8.6,9.2,8.0];
>> range(x)
ans =
8.8000
El rango de 8.8, es un valor grande con relación a los datos, por lo que de acuerdo
a este valor podemos decir que existe una gran dispersión entre la información.
Hay que tener en cuenta que el valor del rango puede ser afectado por los datos
atípicos existentes.
Desviación Típica
La desviación típica mide la distancia existente entre un dato con respecto a la
media del grupo de datos al cual pertenece. Se calcula restando dicho dato menos
la media, mientras más grande sea la desviación típica en valor absoluto, mayor
125
será la distancia o la dispersión de ese dato con respecto a la media aritmética
calculada.
𝐷𝑇 = 𝑥𝑖 − 𝑥̅
Ejemplo 5.7.
Calcule las desviaciones típicas de los datos referentes a las calificaciones
obtenidas por un grupo de 15 estudiantes en el ejercicio 5.1.
Solución:
En R:
126
promedio de las desviaciones típicas; a esta medida estadística de dispersión se la
conoce con el nombre de Desviación Estándar.
La desviación estándar “S” es el promedio o la media aritmética de las
desviaciones típicas
∑𝑛𝑖=1(𝑥𝑖 − 𝑥̅ )
̅̅̅̅ =
𝑆 = 𝐷𝑇
𝑛
Matemáticamente esta ecuación tiene el problema que al sumar todas las
desviaciones típicas estas se anulan, por lo que al calcular la desviación estándar
de cualquier grupo de datos existentes esta medida siempre será igual a cero, y no
sería posible resumir mediante esta forma la dispersión.
Como alternativa a este problema se elevan al cuadrado cada una de las
desviaciones típicas, y estos valores se lo suman. A esta forma de resumir el
cuadrado de las desviaciones típicas se la conoce con el nombre de Varianza, que
matemáticamente es el cuadrado de la desviación estándar.
La Varianza “S2”, es el promedio o la media aritmética de los cuadrados de las
desviaciones típicas
∑𝑛𝑖=1(𝑥𝑖 − 𝑥̅ )2
𝑆2 =
𝑛
Donde:
𝑥𝑖 Representa cada uno de los datos
𝑥̅ Representa la media del grupo de datos
n Número total de datos
𝑆 = √𝑆 2
Pero ¿Cómo podemos interpretar los valores de la varianza o
desviación estándar? Puesto que lo que realmente se está encontrando, es en
127
promedio la distancia de cada uno de los datos con respecto a la media, mientras
más grandes san estas medidas con respecto a los datos de los cuales están siendo
calculadas, mayor será la dispersión de los datos con respecto a la media, y por
ende mayor la irregularidad que presentan.
Cuando la varianza y/o desviación estándar toma valores relativamente muy
pequeños, se puede concluir diciendo que la media es un buen indicador del centro
de la información. Mientras que si estas medidas de dispersión son relativamente
grandes, la media no es un buen indicador del centro de los datos (puesto que esta
medida de tendencia central como habíamos dicho es susceptible a valores
extremos), y sería conveniente utilizar otra medida para resumir la tendencia
central del conjunto, como por ejemplo la mediana.
Ejemplo 5.8
Calcule la varianza y desviación estándar de los datos correspondientes a las
calificaciones obtenidas por un grupo de 15 estudiantes en el ejercicio 5.1. En una
primera parte incluya todos los 15 datos, y luego excluya el atípico x10 = 0.5. Saque
sus conclusiones
Solución:
En R: Utilizaremos los comandos “var( )” y “sd( )” para calcular la
varianza y desviación estándar respectivamente
128
> x <- c(8.3,8.1,7.7,8.5,9.3,7.8,8.5,7.9,8.2,0.5,8.2,9.1,8.6,9.2,8.0) # Ingreso todos los
15 datos
> varianza <- var(x) # Calculo la varianza
> varianza
[1] 4.391143
> desv_est <- sd(x) # Calculo la desviación estándar
> desv_est
[1] 2.095505
129
respecto a los datos, por lo que podemos concluir que existe una
considerable dispersión de los datos con respecto a la media, y no podría
considerarse esta medida como un buen indicador de la tendencia central.
Sin embargo hay que tener mucho cuidado en dar apresuradamente una
conclusión como la dada, puesto esta varianza grande puede ser producto
de un solo dato atípico que se encuentre en el conjunto, tal como sucede en
este caso, donde al retirar dicho dato observamos como las medidas de
dispersión reducen considerablemente (S 2 = 0.2644 y S = 0.5142), por lo
sin este dato, la dispersión es muy pequeña y podemos decir que la media
es un buen indicador del centro de la información.
Desviación Estándar 𝑆 = √𝑆 2
Donde:
m Es el número de intervalos formados
xi Representa las distintas marcas de clase en cada intervalo
𝑥̅ Representa la media de datos agrupados (Cuyo cálculo ya se explicó en el
apartado 5.1.1)
fi Representa la frecuencia absoluta en cada intervalo
n El número total de datos
Ejemplo 5.9.
A partir de la base de datos “BJSales” encuentre la varianza y desviación estándar
agrupando este conjunto de datos.
Solución
130
Previamente conocemos ya por el Ejemplo 5.2, que la media para datos agrupados
en este conjunto es de 229,87; por lo que para calcular la varianza procedemos a
aplicar la ecuación planteada a través del siguiente cuadro:
xi fi (𝒙𝒊 − ̅𝒙)𝟐 ̅)𝟐 ∗ 𝒇𝒊
(𝒙𝒊 − 𝒙
Intervalo (1) (2) (3) (4)
190 - 200 195 6 1215.92 7295.50
200 - 210 205 18 618.52 11133.30
210 - 220 215 48 221.12 10613.61
220 - 230 225 17 23.72 403.19
230 - 240 235 3 26.32 78.95
240 - 250 245 14 228.92 3204.84
250 - 260 255 32 631.52 20208.54
260 - 270 265 12 1234.12 14809.40
TOTAL 150 67747.34
𝑆 = √451.65
𝑆 = 21.25
El valor de la desviación estándar S = 21.25, es un valor relativamente pequeño
con respecto al grupo de datos al que pertenece por lo que podemos concluir que
131
existe poca dispersión en los datos con respecto a la media, y esta es un buen
indicador de la tendencia central o lo que es lo mismo resume de una forma
adecuada a la información.
En R ponemos a consideración el siguiente código que nos ayudará a
calcular la media para datos agrupados:
var =
451.6489
desv =
21.2520
132
5.1.3. Medidas de Posición
Estas medidas permiten conocer posiciones no necesariamente centrales en el
conjunto de datos que los dividen de igual forma. Las medidas de este tipo más
comunes son los Cuartiles, Quintiles y Deciles.
Se puede por ejemplo decir que la mediana a más de ser una medida de tendencia
central es una medida de posición, puesto que divide al conjunto de datos en dos
partes exactamente iguales, ya que por encima de la mediana se ubica
exactamente el 50% de la información y por debajo de ella el otro 50% restante.
Cuartiles
Son valores que dividen a un conjunto de datos en 4 grupos, los cuales poseen la
misma cantidad de información. Existen tres cuartiles que dividen al conjunto de
datos en 4 partes iguales que representan la cuarta parte de la información cada
uno
Hasta 1º Cuartil “Q1” se determina el 25% de la información; hasta el 2º cuartil
“Q2”, que coincide con el valor de la mediana se determina el 50% de la
información; y hasta el 3º cuartil “Q3”, se determina el 75% de la información.
Para calcular los cuartiles debemos ordenar en 1º lugar los datos de menor a
mayor; existen casos donde resulta un poco más sencillo determinar la posición
de cada uno de los cuartiles, ya que podemos observar claramente aquellos tres
datos que dividen en cuatro grupos del mismo tamaño a todo el conjunto. Por
ejemplo con 7 o 15 datos cualesquiera:
133
Sin embargo existen situaciones en las que para dividir al conjunto de datos en
partes iguales, se debe tomar el valor medio entre dos datos. Por ejemplo si
tenemos 8 o 16 datos
Boxplot
Para representar gráficamente los cuartiles existentes en un grupo de datos
utilizamos el llamado “boxplot” o diagrama de cajas, donde las líneas que se
encuentra en la mitad de la caja representa el 2º cuartil (mediana), y las líneas que
son límites de la misma representan el 1º y 3º cuartil respectivamente.
134
Cuando conjunto de datos presenta datos atípicos, el boxplot lo representa como
un punto fuera de la gráfica.
135
Su altura “Height”, y su volumen “Volume”. Encuentre los cuartiles en cada
Variable y grafique el respectivo Boxplot en cada caso:
Solución:
En R: Utilizaremos los comandos “quantile( )” y “boxplot( )” para
determinar los cuartiles y graficar el diagrama de caja respectivamente
136
Estos valores se los puede observar gráficamente en un boxplot. Los
boxplot que R realizó mediante el código propuesto son:
Gráfico 5.1 Salida en R De un Diagrama de Caja
Estos gráficos se los realizó por separado, uno para cada variable, sin
embargo se puede realizar los tres en uno solo
137
Gráfico 5.2 Salida en R de 3 boxplot en un solo gráfico
138
>> datos % Exporto los datos
datos =
cuartiles =
cuartiles =
72 76 80
_________________________________________________________________________________
cuartiles =
cuartiles =
139
De la matriz encontrada, la 1º columna corresponde a los cuartiles 1, 2 y 3
respectivamente de la 1º variable “Girth”; la 2º columna de la variable
“Height”, y la 3º columna de la variable “Volume”
85
80
Values
75
70
65
1
Column Number
140
Gráfico 5.4 Salida en MATLAB de un Boxplot para las tres variables
90
80
70
60
Values
50
40
30
20
10
1 2 3
Column Number
Quintiles y Deciles
Quintil.- Son los 4 valores que dividen a un grupo de datos en cinco partes iguales.
Cada parte representa el 20% de la información.
Deciles.- Son los 9 valores que dividen a un grupo de datos en diez partes iguales.
Cada parte representa el 10% de la información.
Ejemplo 5.11.
Determine los quintiles y deciles de la variable “Height”, en la base de datos “trees”
Solución:
En R utilizaremos el mismo comando que para los cuartiles “quantile( )”,
con la diferencia que haremos uso del argumento <<probs>> el cual nos
permite en un rango de 0 a 1 determinar cuáles son los percentiles que
deseamos calcular. Para nuestro caso específico de los quintiles los
percentiles que se desea son los correspondientes al 20%, 40%, 60% y
141
80%; así mismo en el caso de los deciles tenderemos que indicar los puntos
correspondientes al 10%, 20%, 30%, 40%, 50%, 60%, 70%, 80% y 90%
quintiles =
deciles =
142
la existencia de dos variables necesarias para determinar las relaciones existentes
entre ellas, y la influencia que tiene la una sobre la otra. Básicamente para estudiar
aquello analizaremos dos medidas estadísticas que son la covarianza y el
coeficiente de correlación.
5.2.1. Covarianza
Dadas dos variables estadísticas X e Y, matemáticamente la covarianza “SXY”
existente entre estas dos variables queda definida por:
𝑛
1
𝑆𝑋𝑌 = ∑(𝑥𝑖 − 𝑥̅ )(𝑦𝑖 − 𝑦̅)
𝑛
𝑖=1
Donde:
SXY Representa la Covarianza
n es el número total de datos o individuos
xi son los datos de la primera variable
yi son los datos de la segunda variable
𝑥̅ la media de la primera variable
𝑦̅ la media de la segunda variable
La covarianza mide el tipo de relación conjunta que existe entre las dos variables
en estudio, de esta forma si:
SXY > 0, esto mostrará una relación directamente proporcional entre las
dos variables, es decir que a mayor incremento (o decremento) de la una,
habrá mayor incremento (o decremento) de la otra también. Suelen ser por
ejemplo variables muy comunes que muestran una covarianza positiva
<<Edad de un grupo de niños>> con la <<Estatura de un grupo de
niños>>; en la gran mayoría de casos suele suceder que a mayor edad,
mayor es la estatura correspondiente, o análogamente a menor edad
menor estatura. Sin duda cuando ocurre esto tendremos una covarianza
positiva
SXY < 0, esto mostrará una relación inversamente proporcional entre las
dos variables, es decir que al ir aumentando la una, la otra tomará un
143
sentido contrario, es decir irá disminuyendo. Suelen ser por ejemplo
variables muy comunes que muestran una covarianza negativa <<Edad de
un grupo de personas de 25 a 100 años>> con la <<Fuerza que posee un
grupo de personas de 25 a 100 años>>; en la gran mayoría de los casos
suele suceder (en los individuos pertenecientes a este grupo de edad) que
a mayor edad que tenga una persona menor fuerza posee.
SXY = 0, esto mostrará que no existe ningún tipo de relación entre las dos
variables, es decir estas son independientes, por lo que la una no influye en
nada en la otra. Suelen ser por ejemplo variables muy comunes que
muestran una covarianza nula <<Coeficiente intelectual de una persona>>
con el <<Color de ojos de una persona>>; en la gran mayoría de casos suele
suceder que el coeficiente intelectual que tenga persona no dependa o se
vea influido de su color de ojos
Ejemplo 5.12
En R existe una base de datos denominada “mtcars”, en la cual se recoge
información acerca de 32 automóviles. Se miden 11 características, es decir existen
datos para estos automóviles acerca de 11 variables; 3 de estas variables por
ejemplo son <<mpg>>, que mide las millas por galón de gasolina que consume
cada auto, <<Displacement>> que mide el desplazamiento que cada auto tiene, y
<<hp>> que mide los caballos de fuerza que posee cada auto. Determine a través
de la covarianza el tipo de relación existente entre “mpg - disp” y “disp - hp”.
Solución
En R utilizaremos el comando “cov( )”, cuyos dos argumentos principales
<<x>> e <<y>> son los datos correspondientes a las dos variables que se
desean comparar. Note que existe un argumento denominado
<<method>>, en el cual podemos elegir las opciones pearson, spearman,
o kendall. El que viene por defecto si no especificamos nada en este
argumento es el método de Pearson que es precisamente el que coincide
con la ecuación planteada en este texto, por tanto será el que siempre
144
utilizaremos, y al venir por defecto este método en el comando podemos o
no especificarlo.
ans =
36.324 -633.1
-633.1 15361
ans =
15361 6721.2
6721.2 4700.9
Nota.- Posiblemente los resultados debido a que los números son cifras
grandes, se presenten de la siguiente forma:
145
>> cov(datos.disp,datos.hp)
ans =
1.0e+004 *
1.5361 0.6721
0.6721 0.4701
Del ejercicio lo que nos interesa es conocer el tipo de relación existente entre las
variables. Al respecto y basándonos en la covarianza calculada podemos decir:
- La covarianza entre “mpg” y “disp” de -633.1 nos indica que existe
una relación inversamente proporcional entre estas dos variables, es
decir que mientras las millas por galón registradas por los autos
aumenta, el desplazamiento de los mismos disminuye y viceversa.
- La covarianza entre “disp” y “hp” de -633.1 nos indica que existe una
relación directamente proporcional entre estas dos variables, es decir
que mientras más potencia tenga el automóvil medido en caballos de
fuerza, mayor es el desplazamiento que realizan los autos y viceversa.
5.2.2. Correlación
Si bien es cierto la covarianza nos indica el tipo de relación que existe entre dos
variables, sin embargo nada nos dice acerca de la fuerza de esta relación, es por
eso que se propone un coeficiente de correlación (de Pearson), el cual se encuentra
en un rango de -1 a 1, y que mide la fuerza con la que dos variables se relacionan.
146
Es importante conocer no solo el tipo de relación entre dos variables, puesto que
es posible que dos pares de variables tengan el mismo tipo de relación, pero tal vez
un par se relacione con más o menos fuerza que otro.
147
Si 0.75 < |r | < 1, existe una relación fuerte
Ejemplo 5.13
A partir de la base de datos “mtcars”, encuentre e interprete el coeficiente de
correlación de los mismos pares de variables para los que se encontró la covarianza
en el ejercicio 5.12, es decir “mpg - disp” y “disp - hp”.
Solución
En R utilizamos el comando “cor( )”, cuyos dos argumentos principales
<<x>> e <<y>> son los datos correspondientes a las dos variables que se
desean comparar. El comando <<method>> usa por defecto el coeficiente
de correlación de Pearson, por lo que se puede o no aclarar.
148
>> datos; % Exporto los datos mtcars
>> corrcoef(datos.mpg,datos.disp) % Correlación mpg - disp
ans =
1.0000 -0.8476
-0.8476 1.0000
ans =
1.0000 0.7909
0.7909 1.0000
149