Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Jose L. Romero P.
Universidad Nacional Abierta
2009
ii
Indice general
Introducci
on
1. Un
1.1.
1.2.
1.3.
1.4.
. .
. .
R
. .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1
1
5
7
22
.
.
.
.
25
25
26
30
34
.
.
.
.
.
.
35
35
36
45
48
62
74
A. Tabla de datos
75
Bibliografa
79
iii
iv
INDICE GENERAL
Introducci
on
El proposito de este texto es principalmente el de servir de gua para la elaboracion de los trabajos practicos correspondientes a las materias de inferencia
estadstica que se cursan en distintas carreras de la Universidad Nacional
Abierta. Como punto de partida se considera los objetivos evaluables correspondientes a estos trabajos practicos, los cuales se transcriben a continuacion
sin indicar las asignaturas en particular en cuyos planes de curso figuran estos:
Realizar un resumen de un conjunto de datos estadsticos, cualitativos
o cuantitativos, para su presentacion y explicacion.
Inferir sobre parametros poblacionales mediante el modelo de regresion
m
ultiple, interpretar los resultados y pronosticar valores de la variable
dependiente. Analizar modelos de regresion lineal, en parametros, para
determinar cual ajusta mejor a un conjunto de datos correspondientes
a dos o mas variables.
Aplicar el contraste 2 en la prueba de bondad de ajuste y en la prueba
de independencia.
Aplicar el analisis de varianza y analizar los diversos modelos de clasificacion.
Al leer entre lneas el enunciado de estos objetivos, se puede entrever que
lo que se busca es que el estudiante sea capaz de explorar un conjunto de
datos correspondientes a un fenomeno real para buscar relaciones entre los
elementos constituyentes de ese fenomeno, responder a ciertas inquietudes o
verificar sus suposiciones sobre dicho fenomeno. En fin, lo que se busca es que
v
vi
INTRODUCCION
vii
y perfiles de hardware distintos) y que su licencia de uso sea lo menos
costosa posible.
Facilidad de uso Cuan facil de usar es un software estadstico? Cuan
alta es la curva de aprendizaje necesario para aprender a manejar el
software con un mnimo de destreza? Como es el sistema de ayuda
al usuario de la aplicacion (manuales, ayuda en lnea u otro tipo de
soporte como foros o canales de chat)?
Se ha escogido, en base a los criterios antes mencionados, el R como el
entorno computacional con el cual se desarrollaran los contenidos y ejemplos
de este texto, las razones de ello se exponen en la primera unidad. En la
primera unidad se indica ademas como conseguir e instalar el R y se da un
peque
no paseo guiado para introducir al estudiante en su uso. En la segunda
unidad se expone la problematica que se abordara como ejemplo en el resto
del texto. Aqu se formulan las interrogantes que motivan el analisis estadstico del problema y se hacen algunas consideraciones generales sobre el tipo
de datos, la muestra, con la que se trabajara , as como otras consideraciones
para motivar el uso de las herramientas que se emplearan posteriormente.
La tercera unidad esta dedicada a la estadstica descriptiva y su aplicacion
a los datos muestrales presentados. La cuarta, quinta y sexta unidad versan
sobre la inferencia estadstica, los modelos de regresion lineal y el ANOVA
respectivamente.
viii
INTRODUCCION
Unidad 1
Un primer encuentro con R
1.1.
Porqu
e el R?
este tipo de programas, se dice que tienen una alta curva de aprendizaje por el
esfuerzo que se debe invertir para aprender a usarlos.
4 Entre estos suplementos est
an el R-Commander y ahora, muy recientemente, uno
llamado a Deducer, el cual esta orientado principalmente para estudiantes de estadstica.
Por lo reciente de este u
ltimo, el autor no ha tenido tiempo de evaluarlo.
EL R?
1.1. PORQUE
datos de alguna forma no usual. Por otro lado, si por ejemplo se realiza un
analisis de regresion en una aplicacion tipo GUI, la salida es un solamente un
extenso informe. En cambio, en una aplicacion como R, que posee un entorno
de programacion orientado a objetos, la salida en tal caso es una instancia de
un objeto de clase regresion, a la cual el programador/usuario puede aplicar
posteriormente otros metodos o invocar otras funciones que admitan como
entrada un objeto de esa clase, tal como realizar un analisis de varianza o de
residuos posterior, graficar o generar informes a la medida, etc.
Desde el punto de vista pedagogico, es mas interesante aprender a trabajar bajo un entorno tipo CLI porque ello obliga al estudiante saber realmente
lo que esta haciendo[5] y le inculca buenos habitos en el analisis de datos. En
contraposicion, un principiante frente a un GUI (como el proverbial mono
con hojilla de alta peligrosidad) puede hacer clic sobre iconos y siempre obtendra resultados, pero estos resultados no siempre seran u
tiles, o siquiera
coherentes.
En definitiva, dada la naturaleza del trabajo del investigador estadstico,
la flexibilidad que se gana al trabajar con una aplicacion estadstica que es a
la vez entorno de programacion es una compensacion justa para tomarse la
molestia de aprender a trabajar con un entorno de programacion, lo cual por
otra parte no es tan difcil, como se vera. Inclusive, a la larga puede resultar
hasta mas facil, como se
nala Crawley [4][11] con respecto a S-PLUS, una
version comercial de R con GUI y consola:
Si le gusta perder el tiempo, puede desplegar men
us y hacer clic
sobre cajas de dialogo cuantas veces quiera. Sin embargo, esto
consume 5 a 10 veces mas tiempo que escribir en la consola de
comandos. La vida es corta. Utilice la consola de comandos.
Mas a
un, como el proyecto R es un entorno de programacion y un software
abierto, se hace posible que colaboradores de este proyecto desarrollen constantemente libreras o paquetes con las funcionalidades mas variadas para el
analisis5 . Como consecuencia, el desarrollo de este software es muy dinamico
5 Ejemplos
y a la vez, por tratarse de un software de codigo abierto, las libreras contribuidas son sometidas a un riguroso escrutinio de parte de los responsables del
proyecto o de cualquier colaborador, lo cual garantiza la optimalidad de su
desempe
no y su conformidad al cuerpo de la teora estadstica/matematica.
El usuario cuenta entonces con un conjunto de herramientas probadas y muy
actualizadas.
Del hecho de que R es un software abierto se deriva otra consecuencia
importante: la licencia bajo la cual se distribuye R (una licencia GNU-GPL)
permite la distribucion e instalacion gratis de este software, amen de su modificacion o adaptacion bajo ciertas condiciones. Esto hace del R un software
muy atractivo para las instituciones educativas, pues contribuye a reducir
los costos operativos incurridos en tener que comprar un n
umero indeterminado de licencias y permite a los estudiantes utilizar el mismo software
que la institucion legalmente sin tener que comprar una licencia para ello.
De su condicion de ser software libre se deriva otra ventaja: el sistema de
ayuda en lnea para R a traves de foros, listas de correos y chats es extenso
y no es exclusivo para aquellos usuarios que pagan la licencia. En la pagina
web oficial del proyecto R, http://cran.r-project.org/, se indica como
suscribirse a una lista de correos (un mailing list) de ayuda para R. Cuando uno se inscribe a una lista de correos, puede hacer preguntas que seran
respondidas (si estan debidamente formuladas) por alguien de la comunidad
de usuarios o por los mismos creadores de R y recibir un correo diario con
el resumen de todas las preguntas y respuestas. Personalmente, esta lista de
correos me ha sido de mucha utilidad para comprender algunos aspectos del
lenguaje, con la ventaja adicional de poder hacer preguntas orientadas mas
al ambito de la teora estadstica, pues los usuarios mas experimentados de
R generalmente la conocen muy bien. Se puede tambien obtener ayuda instantanea a traves del chat. Para esto, debe disponer de un programa cliente
de IRC, el cual, si utiliza el navegador Mozilla Firefox (otro software libre
muy recomendado), se puede descargar como un complemento llamado Chatzilla. Una vez instalado el Chatzilla, este se invoca seleccionandolo a traves
del men
u de Herramientas. Una vez iniciado, se hace clic sobre el servidor
freenode en la lista de servidores disponibles desplegada en la parte inferior
de la consola, luego de lo cual se ingresa el comando /join R en la lnea de
comandos e ingresara al canal de ayuda de R en el servidor freenode de IRC
(irc://freenode/R). Y desde luego, hay una extensa coleccion de manuales
y documentacion disponible gratuitamente a traves de la pagina de la CRAN
antes mencionada.
Todo lo expuesto hasta ahora justifica la eleccion de R en base a los
criterios de versatilidad, disponibilidad y facilidad de uso mencionados en
la introduccion. Para completar esta exposicion de motivos debo mencionar
adicionalmente que el R es un software completamente portable, con versiones para los principales sistemas operativos (Linux, Windows y MacOS). Con
respecto a la potencia y velocidad de su motor numerico, el R tiene un desempe
no semejante, sino superior, a otras aplicaciones numericas como Matlab u
Octave. A traves de paquetes o libreras como snow y snowfall, es posible
aprovechar las capacidades de las nuevas arquitecturas de multiprocesadores
(los denominados procesadores dualcore o quad-core).
1.2.
sera lo m
as conveniente si el hardware y/o el sistema operativo que se esta
usando es poco convencional.
7 Justifico este proceder haciendo otra suposici
on: Los usuarios de sistemas operativos
distintos a Windows generalmente tienen mas pericia informatica, por lo cual no necesitan
tantas indicaciones.
2.9.1.
Y LOS FUNDAMENTOS DE R
1.3. LA PRIMERA SESION
de ayuda que funciona a traves del programa navegador de su computadora, pero para poder utilizar el motor de b
usqueda de este sistema de ayuda,
su computador debe tener habilitado lo que se conoce como maquina Java
virtual. En la pagina http://www.java.com/es/download/manual.jsp se
puede descargar el instalador de la maquina virtual Java para su sistema
operativo o verificar si ya lo tiene a instalado (que es lo recomendado antes
de instalarlo).
1.3.
La primera sesi
on y los fundamentos de
R
Y LOS FUNDAMENTOS DE R
1.3. LA PRIMERA SESION
> 2/(3 + 1)
[1] 0.5
> -2^2
[1] -4
> (-2)^2
[1] 4
En los ejemplos precedentes estamos aparentemente usando al R como
una simple calculadora. En realidad estamos familiarizandonos con uno de
los tipos elementales de datos- el numerico. Observese que al ingresar una
expresion numerica, el interprete de R la eval
ua y devuelve, si puede, un
resultado (mas adelante se aclarara el asunto del uno entre corchetes ([1]).
Notese ademas que valen las reglas de precedencia en el calculo, de modo que
la forma en que se colocan a los parentesis afecta el resultado: primero se
calculan las potenciaciones, divisiones y multiplicaciones antes que la suma,
la resta o el cambio de signo, a menos de que se indique lo contrario con los
parentesis.
> pi
[1] 3.141593
> sqrt(2)
[1] 1.414214
> exp(1)
10
[1] 2.718282
> Inf - 1e+07
[1] Inf
> Inf - Inf
[1] NaN
> 0/0
[1] NaN
En las primeras tres ordenes trabajamos con una constante predefinida
() y con funciones. Las funciones van seguidas de parentesis entre los cuales
colocaremos el o los argumentos y devuelven objetos seg
un estos. En este texto, vamos a trabajar
extensamente con funciones. As, por ejemplo, sqrt(2)
es equivalente a 2 y exp(1) es la exponenciacion de 1. Se puede forzar a
que R genere n
umeros de mayor precision decimal, pero para los fines que
nos proponemos en la gua, esto no sera necesario. Los ejemplos de las ultimas lneas contienen algunos detalles que quizas sean novedosos para los
usuarios de otros lenguajes. Se define a una cantidad llamada infinito que
se corresponde al smbolo matematico . Inf goza de todas las propiedades
del infinito- si le restamos un n
umero muy grande al infinito, por ejemplo,
seguimos teniendo infinito. Otro detalle de interes es el NaN, que obtenemos
cuando una expresion numerica es indeterminada (NaN significa Not a Number ). Esta claro que en la investigacion estadstica se trabaja extensamente
con datos numericos, por lo cual es bueno saber que R cuenta con herramientas para su uso, pero tambien es necesario a veces trabajar con otros tipos de
datos elementales, como lo son las cadenas (secuencias de texto alfa-numerico
o datos tipo string) y los valores logicos, o booleanos.
> "jose"
Y LOS FUNDAMENTOS DE R
1.3. LA PRIMERA SESION
11
[1] "jose"
> paste("Hoy es", date())
[1] "Hoy es Fri Mar 19 11:17:19 2010"
> 2 < 3
[1] TRUE
> 2 + 2 == 4
[1] TRUE
> 2 != 2
[1] FALSE
> (1e+05 < Inf) & (2 != 2)
[1] FALSE
Las primeras dos ordenes trabajan con cadenas, que se indican encerrando
caracteres alfa-numericos entre comillas. La funcion paste toma dos o mas
cadenas y las concatena, como en la segunda orden, donde tambien hacemos
uso de una funcion llamada date() que devuelve la fecha y hora actual
Las siguientes ordenes o trabajan con expresiones logicas. Observese el uso
de operadores relacionales (< es menor que,== igual a, != no igual a, <=
menor o igual que, etc.) y de conectores logicos (& se corresponde a y, | se
corresponde a o, etc.). Para buscar mas informacion sobre esto, ingrese la
orden help(Logic).
12
a <- pi
b <- a >= 3
c <- a <= 4
b
[1] TRUE
> c
10 O
Y LOS FUNDAMENTOS DE R
1.3. LA PRIMERA SESION
13
[1] TRUE
En el ejemplo anterior se puede observar otro detalle: es posible escribir
varias ordenes en una sola lnea separando cada orden mediante un ;. Las
ultimas tres lineas de ordenes se corresponden a la verificacion de 3 4.
Hasta ahora hemos visto tres tipos elementales de datos (el numerico, la cadena y el logico) y la asignacion de valores a variables. No obstante, para ser
realmente u
til, el R debe soportar estructuras de datos mas complejas que
sean aplicables en una gran diversidad de situaciones, particularmente aquellas asociadas a la investigacion estadstica. De hecho, este es el caso, ya que
R es lo que se conoce en computacion como un lenguaje de programacion de
alto nivel. Considerando que la estadstica involucra muestras, se ha pensado
en los objetos tipo vector. Un vector es una coleccion ordenada de datos del
mismo tipo, que se correspondera (aunque no necesariamente), a lo que en
estadstica se llama muestra. Por ejemplo, si seleccionamos 10 estudiantes
de una universidad al azar y registramos sus edades, tendramos un vector
de 100 elementos numericos. Para aquellos que han trabajado con otros lenguajes de programacion, esto podra sonar similar al tipo de datos arreglo.
Sin embargo, los vectores tienen caractersticas y operaciones definidas sobre ellos de mas alto nivel. Por ejemplo, en PASCAL, los arreglos deben ser
declarados previamente especificando la cantidad maxima de elementos (su
dimension). En R, un vector puede crecer en tama
no dinamicamente (concatenandole mas elementos) o decrecer (eliminando elementos) sin necesidad de
fijar su dimension. Por otra parte, la indexacion (referencia a alg
un elemento
identificando su orden en el vector) es de mas alto nivel en R y permite por
ejemplo extraer aquellos elementos del vector-muestra de 10 edades que sean
mayores que 21.
> edades <- c(17, 19, 18, 20, 24, 18, 17, 22, 25, 23)
> edades
[1] 17 19 18 20 24 18 17 22 25 23
> mean(edades)
[1] 20.3
14
> sum(edades)/length(edades)
[1] 20.3
> var(edades)
[1] 8.9
> sd(edades)
[1] 2.983287
> (edades - mean(edades))^2
[1] 10.89
1.69
5.29
0.09 13.69
5.29 10.89
2.89 22.09
7.29
Y LOS FUNDAMENTOS DE R
1.3. LA PRIMERA SESION
15
Xi X
2
Sn1
=
2
i=1
n1
16
La razon por la cual aparece un [1] en las lineas de salida correspondientes a expresiones escalares11 es que estas expresiones son en realidad vectores
con un solo elemento (numerico, cadena o logico). De modo tal que los vectores generalizan estas clases de datos. Otro punto es que en R existen lo que se
llaman secuencias, de las cuales las expresiones 4:8 y 1:50 son ejemplos. Las
secuencias son en realidad vectores tambien, solo que se caracterizan porque
sus elementos son generados automaticamente de acuerdo a cierto orden
o esquema. En R, las a secuencias se generan con : como vimos arriba o,
de manera mas general, mediante la funcion seq, la cual puede buscar en la
ayuda para consultar sobre su o sintaxis. Continuando con la indexacion de
elementos de vectores, consideremos o los ejemplos siguientes:
> edades[4:8]
[1] 20 24 18 17 22
> edades[c(1, 4:8)]
[1] 17 20 24 18 17 22
> edades[-c(1, 4:8)]
[1] 19 18 25 23
> edades[edades >= 21]
[1] 24 22 25 23
> which(edades >= 21)
[1]
11 Aqu
l
ogico).
9 10
escalar denota algunas de las tres clases mas elementales (numerico, cadena o
Y LOS FUNDAMENTOS DE R
1.3. LA PRIMERA SESION
17
En la expresion entre corchetes podemos colocar expresiones mas generales. Concretamente, podemos colocar vectores de ndices o vectores logicos.
De este modo edades[4:8] devuelve los elementos del 4to al 8avo de ese vector y edades[c(1,4:8)] es similar pero adicionalmente le antepone el primer
elemento. Pudiesemos estar interesados mas bien en excluir ciertos elementos
del vector. Esto se hace anteponiendo un signo menos (-) a la expresion o
entre corchetes: edades[-c(1,4:8)] devuelve todos los elementos del vector
edades menos el primero y aquellos entre el cuarto y el octavo lugar inclusive.
Si queremos seleccionar elementos individuales seg
un cierta condicion logica
insertamos una expresion logica entre corchetes. As, edades[edades>=21]
devuelve todas las edades de la muestra mayores o iguales a 21. Por u
ltimo,
la funcion which devuelve los ndices de los elementos que cumplen cierta
condicion logica.
Es de notar la manera elegante y sucinta en que se realiza en R la indexacion de vectores (arreglos) que en otros lenguajes de programacion requerira
de estructuras iterativas mas complejas. Los vectores son el fuerte de este
lenguaje y utilizar el tipo de constructos vistos arriba es mas eficiente (en
terminos del tiempo requerido para tales computos) que recorrer un vector
iterativamente mediante un for por ejemplo. A este modo de hacer las cosas
se le conoce en el argot de R como vectorizacion y al final, uno se acostumbra a trabajar de manera vectorizada. Quizas este pensando cual es la
consecuencia practica de todo esto. Piense entonces como hara si estuviese
interesado en calcular la media o construir un histograma de frecuencias para
cierto subconjunto de la muestra y considere cuan engorroso sera hacer esto
en un programa como Excel. Por otro lado, R esta dise
nado para trabajar
con vectores de miles o millones de elementos y este tipo de operaciones vectorizadas son casi instantaneas. Intente trabajar con muestras as de grande
en Excel y entendera a que me refiero.
La u
ltima estructura de datos (o clase de objetos) importante en R que
vamos a ver aqu es la hoja de datos, o data frame. Existe otra clase de objetos, la lista, que es la mas general de todas pero cuya discusion vamos a
omitir aqu por no ser relevante al tipo de problemas estadsticos con los que
estaremos trabajando. La hoja de datos es un agregado de vectores, todos
de igual longitud pero no necesariamente del mismo tipo (logico, numerico
o de cadenas). Puede conceptuarse como una tabla de datos, tal como la
que tendramos si tuviesemos una muestra de 10 individuos en la cual pa-
18
sexo <- c("M", "M", "F", "F", "F", "M", "F", "M",
"M", "F")
fumador <- c(FALSE, TRUE, FALSE, FALSE, TRUE, FALSE,
FALSE, TRUE, TRUE, FALSE)
muestra <- data.frame(edad = edades, s = sexo, fuma = fumador)
muestra
edad
1
17
2
19
3
18
4
20
5
24
6
18
7
17
8
22
9
25
10
23
s
M
M
F
F
F
M
F
M
M
F
fuma
FALSE
TRUE
FALSE
FALSE
TRUE
FALSE
FALSE
TRUE
TRUE
FALSE
El identificador muestra denota un objeto tipo data frame (hoja de datos), el cual se construye con la funcion homonima data.frame. Esta funcion
toma como argumentos una secuencia de vectores, no todos del mismo tipo
escalar. En la lnea de orden correspondiente en el ejemplo anterior, las partes
edad=edades, s=sexo y fuma=fumador indican que se estan nombrando los
campos (o variables) de cada renglon. As, la hoja de datos muestra contiene
tres variables cuyos identificadores - edad, s y fuma - se corresponden a los
vectores indicados a la izquierda de cada igualdad. Cabe se
nalar que existen
Y LOS FUNDAMENTOS DE R
1.3. LA PRIMERA SESION
19
20
[1] TRUE
A veces, puede resultar engorroso prefijar una hoja de datos (en nuestros
ejemplos, mediante el muestra$) cada vez que nos referimos a una variable
de esa hoja de datos. Para estos fines de abreviar la escritura de expresiones,
utilizamos la instruccion attach(...). Esta instruccion le indica al interprete
R que en lo sucesivo, nos vamos a referir a las variables componentes de la
hoja de datos cuyo identificador se encierra entre los parentesis, pero se debe
evitar utilizar attach si hemos definido otros vectores u hojas de datos con
variables que tengan los mismos identificadores, a fin de no crear situaciones
ambiguas. A continuacion se muestra el uso de attach:
> attach(muestra)
> edad
[1] 17 19 18 20 24 18 17 22 25 23
> s
[1] M M F F F M F M M F
Levels: F M
> muestra[[1]]
[1] 17 19 18 20 24 18 17 22 25 23
Notese que en la ultima linea de orden, muestra[[1]] es equivalente a
edad o (una vez que se ha ingresado la instruccion attach(muestra)). Esto
es porque la variable edad es la primera columna de la hoja de datos. Se
sigue entonces que muestra[[2]] y muestra[[3]] seran las variables s y
fuma respectivamente (pruebelo). Hemos visto como designamos a variables
enteras (o columnas) de una hoja de datos, pero como hacemos referencia a
los elementos, renglones o filas individuales de una hoja de datos?. Como haramos si quisieramos por ejemplo extraer de la muestra todos los individuos
de sexo masculino? El siguiente ejemplo indica como:
Y LOS FUNDAMENTOS DE R
1.3. LA PRIMERA SESION
21
1
2
6
8
9
edad
17
19
18
22
25
s fuma
M FALSE
M TRUE
M FALSE
M TRUE
M TRUE
Cabe se
nalar que mediante un vector de indexacion (el s=="M") se ha
seleccionado los individuos n
umero 1, 2, 6, 8 y 9 de la muestra, quienes son
todos de sexo masculino La expresion muestra[s=="M",] retorna un objeto
tipo hoja de datos o que es en realidad un subconjunto de la muestra. A esta
hoja de datos podemos darle un tratamiento propio de esta clase de objetos.
As, podemos por ejemplo promediar las edades de los hombres en la muestra,
o promediar las edades de los fumadores de la muestra:
> mean(muestra[s == "M", ]$edad)
[1] 20.2
> mean(muestra[fuma == TRUE, ]$edad)
[1] 22.5
Si queremos hacer las cosas de un modo mas sofisticado, podemos usar la
funcion tapply(var,fact,fun), la cual aplica una funcion (aqu denotada
por fun) a una variable var de una hoja de datos separando los elementos
de esa variable en la aplicacion de la funcion seg
un los distintos niveles del
factor fact. Observe el ejemplo abajo:
> tapply(edad, s, mean)
F
M
20.4 20.2
22
1.4.
Preguntas de la Unidad
23
4. Que es un vector en R?
5. Que utilidad tiene el vector como clase de objeto para la manipulacion
y analisis de datos estadsticos?
6. Cuales instrucciones o funciones de R conoce Ud. para construir vectores?
7. Supongase que a y b identifican a dos vectores de igual dimension con
elementos escalares de tipo numerico. Es valida en R la expresion a+b?
Que interpretacion tiene esta expresion? Que ocurre si a y b son de
dimensiones distintas?
8. Si se eval
ua en la consola de R una expresion escalar numerica como
2+3, que significado tiene el [1] a la izquierda del resultado (5)?
9. Luego de realizar la siguiente asignacion: x <- c(TRUE,4,.abc"), cual
es el valor de la variable identificada por x? Como explica Ud. esto?
10. Mediante cual funcion de R podemos obtener los ndices de los elementos de un vector que cumplen con cierta condicion logica?
11. En base al vector fumador definido en el ejemplo de la pagina 18, elabore
un script para calcular la proporcion total de fumadores de la muestra.
12. Que se entiende por vectorizacion en R?
13. Que es una hoja de datos en R y cual es su utilidad para el analisis
estadstico?
14. Si a es una hoja de datos y b es el identificador de una de sus variables,
que clase de objeto es a$b?
15. En base a la hoja de datos muestra utilizada en varios ejemplos de
esta unidad, elabore un script para calcular la proporcion de hombres
fumadores con respecto al total de hombres de la muestra y calcular,
de manera similar, la proporcion de mujeres fumadoras. En base a esta
muestra, cual grupo considera Ud. que tiene mayor propension a ser
de fumadores?
24
Unidad 2
Sobre los datos y la muestra
2.1.
En esta gua trabajaremos con una muestra (ver Apendice A) correspondiente a los datos de 121 estudiantes inscritos en las escuelas de Matematicas
y Computacion de la Facultad de Ciencias de cierta universidad. Dicha muestra se toma para acometer un estudio sobre los factores que inciden en el bajo
rendimiento academico de los estudiantes y para tal fn, se recabo para cada
estudiante informacion referente a la edad, ingresos economicos, sexo, lugar
de proveniencia, nota en el examen de ingreso y, por supuesto, datos referentes al rendimiento academico del estudiante durante su primer a
no en
la universidad, que es lo que precisamente preocupa a las autoridades. La
descripcion detallada de estas variables se da a continuacion, indicando los
nombres de cada variable a los cuales nos referiremos en lo subsecuente y que
por razones tipograficas, se han abreviado al maximo posible. Estas abreviaturas seran usadas luego como identificadores en el codigo R para referirnos
a las variables.
E Es la escuela en la que cursa estudios el estudiante, de acuerdo a la siguiente
25
26
2.2.
Antes de pasar a explicar como cargar estos datos en R para aplicarle los
analisis estadsticos, es oportuno hacer algunas observaciones sobre las variables de la muestra y delucidar los objetivos de la investigacion. En primer
27
lugar, la muestra son los 121 renglones de las 13 variables descritas anteriormente, correspondientes a los estudiantes que cursaron estudios de primer a
no
en las carreras de Matematicas y Computacion, en un determinado periodo
acadmemico. Esperamos, en la medida en que la muestra sea un subconjunto de la poblacion lo suficientemente representativo, que las conclusiones de
nuestro estudio sean generalizables a las promociones futuras de estudiantes
(la poblacion considerada in abstracto), pues a partir de estas concluciones se
tomaran decisiones que afectaran el desempe
no de los estudiantes del primer
a
no de la carrera en periodos academicos futuros. Mediante las herramientas
de la Estadstica Descriptiva (codigo de Asignatura 745) vamos a explorar
la data para poder formular explicaciones plausibles (aunque en este nivel
no comprobables a
un) sobre los factores que inciden en el bajo rendimiento
academico. Mediante las tecnicas de la Inferencia Estadstica (asignaturas
738, 746 y 748) podremos ofrecer un basamento cientfico a nuestras conclusiones y recomendaciones. En consecuencia, si la preocupacion primordial es
el bajo rendimiento academico de los estudiantes en la universidad, el estudio estadstico se va centrar principalmente sobre la variable Pa1, pues esta
es la expresion o medida final del rendimiento academico. Interesa entonces
analizar el grado de interdependencia y el tipo de relacion que hay entre la
variable Pa1 y las demas.
Al leer la descripcion de las variables antecedente, y sin haber analizado o
siquiera visto la muestra, se hace evidente que Pa1 esta fuertemente relacionada con las variables Psm1 y Psm2. La razon de ello es porque el promedio
de notas del primer a
no se calcula a partir de los promedios de notas del primer y segundo semestre. De ah podemos preveer que estas u
ltimas variables
aportaran muy poca informacion para nuestro estudio y seran de escasa o
nula utilidad para explicar el bajo rendimiento academico. Lo mismo podramos decir sobre Us1, Us2 y Ua1, pues a medida en que el promedio de notas
es mayor, la cantidad de unidades de credito aprobadas aumenta, aunque la
relacion entre Pa1 y aquellas tres variables probablemente sea de menor grado (y no es tan obvia) que la existente entre Pa1 y las variables Psm1 y Psm2.
Sin embargo, parece que por los momentos es bastante adecuado considerar
a las variables Pa1, Ua1, Psm1, Psm2, Us1 y Us2 como aspectos similares del
mismo fenomeno del rendimiento academico.
Para buscar las causas que expliquen el bajo rendimiento estudiantl tendremos que considerar las otras variables que fueron incluidas en la muestra
28
29
30
2.3.
31
la lectura de datos muestrales es una parte crucial de cualquier estudio estadstico, R dispone de otras maneras para leer esos datos si se encuentran
bien sea en una hoja de calculo, una base de datos o un archivo plano de
texto. En esta gua optaremos por trabajar con estos u
ltimos- los archivos
planos de texto.
Un formato (abierto) muy com
un para archivos de tablas de datos es el
formato CSV (de sus siglas en ingles: Comma Separated Values). El formato
CSV es un estandar abierto facilmente trabajable desde casi cualquier aplicacion. Por ser un archivo plano de texto, se puede trabajar con el desde
cualquier editor de texto como el Block de Notas. Todas las aplicaciones de
hojas de calculo y de base de datos tambien pueden exportar datos a este
formato. Las aplicaciones de estadstica como SPSS, Minitab y R pueden
trabajar con este formato tambien. Como dato importante, debido a que la
salida de la mayora de los programas de reconocimiento de caracteres es en
formato texto, es un proceso bastante sencillo leer datos desde una fuente
inmpresa o archivo de imagen grafica y pasarlos a un archivo con formato
CSV. En el formato CSV, las columnas (o variables) se separan por comas
y las filas (que representan los elementos de la muestra) van separadas por
saltos de lnea. Cuando el dato en un campo contiene comas o saltos de lnea, el campo se encierra entre comillas. El ; se puede usar como caracter
serpadador sobre todo si el separador de decimales numerico es un coma.
Podemos indicar que la primera fila del archivo sea el header o encabezado,
es decir, aquella que contiene los nombres de las variables, siempre separados
32
"N";"E";"Nota";"Us1";"Us2";"Ingr";"C";"O";"S";"Ed"
1;1;12,66;80;55;2200;1;1;0;16
2;1;13,58;20;55;5800;0;1;0;19
3;1;13,49;20;27;2300;1;1;0;18
4;1;16,21;50;27;1700;1;1;0;20
Figura 2.2: Ejemplo de un archivo de datos CSV
Es importante notar que todas las filas deben contener la misma cantidad de variables (o separadores), lo cual se hace automaticamente cuando
exportamos los datos a un archivo CSV desde cualquier aplicacion de hoja
de calculos o base de datos. En este caso, debemos indicarle al programa
en el momento de exportar que los campos van separados por un ;, porque
nuestra muestra contiene n
umeros con decimales, que en hispanoamerica se
indican mediante la coma. Tambien debemos indicar que los campos de texto
van delimitados por comillas. Desde el R, el comando para leer datos en un
archivo CSV es read.csv2, que es una variante del comando read.csv para
paises donde el punto decimal es una coma y los campos se delimitan por
; (punto y coma). El comando read.csv2 es en realidad una funcion que
devuelve los datos leidos desde un archivo a una variable tipo data frame y
su sintaxis es como se detalla a continuacion:
33
34
2.4.
Preguntas de la Unidad
Unidad 3
Estadstica Descriptiva
Univariante
1
3.1.
Exploraci
on de datos
El proposito de la estadstica descriptiva, en cuanto al conjunto de tecnicas o metodos, es el de resumir los datos para facilitar su analisis posterior.
Al tener los datos resumidos graficamente o mediante las medidas numericas denominadas como estadsticas descriptivas 2 , surgen las interrogantes
mencionadas en la unidad 1 (Ver pagina 2). Este proceso de formular interrogantes con respecto a los datos para extraer informacion u
til de ellos se
3
conoce como exploracion de datos o minera de datos . De tal modo, otro
1 El
termino univariante se refiere a una sola variable. Por lo tanto, aqu nos ocuparemos del conjunto de tecnicas para analizar cada variable por separado
2 El t
ermino estadsticas descriptivas se refiere tanto al conjunto de herramientas para
resumir los datos como a las medidas numericas calculadas a partir de la muestra que
cumplen igual prop
osito.
3 Este u
ltimo termino no es en realidad el mas adecuado en este contexto. La minera de
datos se refiere a conjuntos muy grandes de datos donde el proceso de encontrar relaciones
35
36
objetivo importante de la estadstica descriptiva es apoyar el proceso de exploracion de datos, para lo cual uno se vale de medidas numericas o graficas
que resuman los mismos.
No obstante, en todo esto hay que tener en cuenta que la intuicion, la creatividad y sobre todo la curiosidad, son las cualidades maestras que guan este
proceso. Por otro lado, no debemos olvidar que las interrogantes y posibles
respuestas a estas (hipotesis) que surgen como producto de la exploracion de
datos, son, en el mejor de los casos, especulaciones sin ninguna validez cientfica. Por ejemplo, una grafica de barras construida a partir de una muestra no
es una prueba indiscutible de que la distribucion poblacional sea realmente
como aparenta seg
un la grafica. Otro ejemplo sera si calculamos a partir de
nuestra muestra de 121 estudiantes la nota promedio del primer a
no para los
alumnos de computacion y de matematicas separadamente y al ver que la
media de notas de los estudiantes de computacion supera a la de los estudiantes de matematica, nos apresurasemos a concluir que la media de notas
de los estudiantes de computacion es realmente superior a la de los estudiantes de matematicas. Este u
ltimo sera un ejemplo de una especulacion sin
validez. La razon de ello es porque trabajamos con muestras aleatorias y al
ser estas subconjuntos parciales de la poblacion seleccionadas al azar, parte
de su variabilidad se debera a las leyes del azar y la otra parte, a diferencias
significativas entre las poblaciones. Es la inferencia estadstica la que se ocupa de validar (o invalidar) cientficamente las suposiciones que formulamos
en la exploracion de datos. Todo esto se resume en la siguiente maxima, algo
jocosa, que seguramente los policas entenderan:
El trabajo del investigador estadstico consiste en hacer que los
datos hablen solos, pero no hay que torturarlos demasiado.
3.2.
Medidas de dispersi
on y de tendencia
central
Y DE TENDENCIA CENTRAL
3.2. MEDIDAS DE DISPERSION
37
Median
12.50
Max.
17.88
Como se puede observar, summary(...) devuelve un cuadro con los valores mnimos y maximos de la variable, el primer y tercer cuartl (el 25 % de
los valores de la variable son menores o iguales a 10.43 y el 75 % de los valores
de Pa1 son menores o iguales a 14.00), la mediana (Median en la salida de
R, percentil 50 o P50 ) y la media aritmetica (Mean o X) de la muestra, las
cuales para la variable Pa1 son iguales a 12.50 y 12.16 respectivamente.
Tanto la media como la mediana son medidas de tendencia central aplicables a esta variable (que es de escala proporcional): no existe alguna razon
a priori para considerar alguna de estas dos como la medida de tendencia
central para esta variable. Aquellos que han estudiado algo de inferencia estadstica saben que la media aritmetica es el mejor estimador para la esperanza
poblacional y esta u
ltima figura como parametro en muchsimas distribuciones de probabilidad. Por otro lado la interpretacion de media aritmetica como
4 En
lo sucesivo, cada vez que se inicie una sesion de R para practicar sobre estos datos,
se debe repetir el procedimiento de carga de datos antes descrito.
38
concepto de dato atpico lo definiremos con mas rigor posteriormente. Por ahora,
como vamos a referirnos a estos valores bajos como extremos. Diremos extremos porque
son lo suficientemente alejados de la media/mediana como para llamar nuestra atencion.
6 Esta descripci
on de la funcion hist es parcial. Solo se mencionan los argumentos y aspectos pertinentes a la tarea de construir la tabla de frecuencias deseada. Nota: "Sturges"
y TRUE son los respectivos argumentos por defecto para los parametros breaks y plot. En
una secci
on posterior (en esta misma unidad), discutiremos un poco mas en detalle sobre
Y DE TENDENCIA CENTRAL
3.2. MEDIDAS DE DISPERSION
hist(x,breaks="Sturges", freq=TRUE, plot=TRUE)
39
40
Vamos a invocar la funcion hist sobre los datos y asignarsela a una variable temporal a partir de la cual construiremos la tabla de frecuencias. Como
valor del parametro plot, indicamos FALSE porque no queremos graficar el
histograma por ahora. Omitimos intencionalmente el parametro breaks porque usaremos la regla de Sturges (valor del parametro por defecto). Luego de
la asignacion de la variable temporal (hist1) en este caso), le indicamos al
interprete R que visualice su contenido para ver que clase de objeto genera
la funcion hist:
> hist1 <- hist(Pa1, plot = FALSE)
> hist1
$breaks
[1] 4 6
8 10 12 14 16 18
$counts
[1] 1 9 18 25 39 21
$intensities
[1] 0.004132231 0.037190083 0.074380165 0.103305785 0.161157025
[6] 0.086776860 0.033057851
$density
[1] 0.004132231 0.037190083 0.074380165 0.103305785 0.161157025
[6] 0.086776860 0.033057851
$mids
[1] 5
9 11 13 15 17
$xname
[1] "Pa1"
$equidist
[1] TRUE
attr(,"class")
[1] "histogram"
Y DE TENDENCIA CENTRAL
3.2. MEDIDAS DE DISPERSION
41
Como podemos ver, los objetos generados por la funcion hist tienen varios
atributos. Cada uno de estos atributos es una parte del objeto que contiene
informacion sobre como construir el histograma, pero nosotros no estamos
interesados en todos los atributos, sino en los que detallamos a continuacion.
El atributo $breaks es un vector numerico indicando los n + 1 lmites de las
n clases. El atributo $mids es un vector numerico que contiene los n puntos
medios, o representantes de clase, de las n clases. El atributo $counts contiene
las frecuencias absolutas o cantidad de valores observados en la muestra para
los n intervalos de clase. Observamos que seg
un la regla de Sturges, la tabla
de frecuencias resultante consta de 7 intervalos de clase. Podemos acceder
a estos resultados agregando $breaks, $mids o $counts al identificador del
objeto de clase histograma, como se muestra en el ejemplo a continuacion:
> hist1$breaks
[1]
8 10 12 14 16 18
> hist1$mids
[1]
9 11 13 15 17
> hist1$counts
[1]
9 18 25 39 21
42
+
x_i = hist1$mids, sup = hist1$breaks[2:(n + 1)],
+
fa_i = hist1$counts)
> tabla.Pa1
1
2
3
4
5
6
7
Al ver la tabla de frecuencias, observamos que el intervalo menor contiene 1 solo valor de la muestra, que es justamente el valor mnimo de la
variable Pa1, o sea 5. Intuitivamente, consideraremos a este elemento de la
muestra como extremo, en virtud de su valor inusualmente bajo para Pa1.
Prosiguiendo, mencionamos el uso de la funcion hist para construir tablas
de frecuencias porque esto abarca un aspecto importante de la estadstica
descriptiva: el trabajar con datos agrupados. Cuando se habla de estadsticas
basadas en datos agrupados, nos referimos a aquellas que se calculan mediante los representantes de clase y las frecuencias relativas a partir de una
tabla de frecuencias como la que acabamos de construir. A continuacion se
ira ampliando progresivamente esta tabla para poder calcular la media y la
desviacion estandar de Pa1 para datos agrupados.
>
>
>
>
1
2
3
4
Y DE TENDENCIA CENTRAL
3.2. MEDIDAS DE DISPERSION
5
6
7
12
14
16
13
15
17
14
16
18
39 0.322314050 4.19008264
21 0.173553719 2.60330579
8 0.066115702 1.12396694
43
54.4710744
39.0495868
19.1074380
12.09091
> cat("Desviaci
on est
andard de Pa1 para datos agrupados: ",
+
sqrt(sum(x_i2.x.fr_i) - (sum(x_i.x.fr_i)^2)),
+
"\n")
Desviaci
on est
andard de Pa1 para datos agrupados:
2.70903
Sera instructivo comparar las medidas de tendencia central y de dispersion entre los datos agrupados y los no agrupados, pero primero tendramos
que calcular la desviacion estandar de Pa1 para datos no agrupados, la cual
no fue determinada mediante la instruccion summary(Pa1). Esto se hace muy
facilmente por medio de la funcion sd:
> sd(Pa1)
[1] 2.781712
En consecuencia, tenemos los siguientes resultados para Pa1:
Media
Datos no
agrupados
12.16
Datos
agrupados 12.09091
Desviacion
estandar
2.781712
2.70903
44
Siempre sera mejor calcular estas estadsticas para datos no agrupados, pues al agruparlos se pierde informacion y por lo tanto, se pierde
precision.
En algunas ocasiones solo se dispone de datos agrupados. Por ejemplo,
la data de los censos es agrupada, pues sera poco viable trabajar con
listados de millones de observaciones. En estos casos, la u
nica manera
de calcular estadisticas es a traves de datos agrupados.
Antes de proceder al tema de la atipicidad, mencionaremos algunos aspectos sobre las medidas de tendencia central y de dispersion para variables
de escala ordinal, lo cual no habamos hecho porque para estos datos en particular no tenamos ninguna variable de esa escala. No obstante, para fines
de dilucidar lo que habra de hacerse en tal caso, retomamos un poco el tema
a partir de lo expuesto en la unidad anterior, donde se mencionaba que la
moda y la mediana son medidas de tendencia adecuadas para una variable
de escala ordinal. Los valores de una escala ordinal no son proporcionales
entre s 7 y por lo tanto la media aritmetica no es una medida de tendencia
central adecuada, pues su calculo asume implcitamente la proporcionalidad,
por tratarse de un promedio. Pero, que hay con las medidas de dispersion?
La varianza tambien es un promedio: es el promedio de las desviaciones cuadraticas de la media. Es por ello que para el caso de las variables de escala
ordinal, se sugieren otras medidas de dispersion.
Una medida de dispersion mas factible para variables ordinales es el rango,
definido este como la diferencia entre el mayor y menor valor de la muestra.
Otra medida de dispersion factible sera el rango intercuarlico, denotado
como IQR por sus siglas en ingles, el cual es la diferencia entre el tercer y
primer cuartl:
IQR = Q3 Q1
7 Sup
ongase
45
3.3.
En la seccion anterior hemos mencionado que la presencia de datos extremos en una muestra pudiese afectar la media aritmetica. Entendemos como
dato extremo a aquel que es lo suficientemente alejado de la tendencia central
de la variable, aquel que es inusualmente bajo o alto. Pareciera seg
un esto
que estamos usando el termino dato extremo como sinonimo de dato atpico, pero nosotros le atribuiremos un sentido mas lato a la palabra atpico
que a la palabra extremo y para ilustrar, consideremos un ejemplo. Supongase que entre un grupo de corredores que compitieron en un maraton hay
una anciana octogenaria que termino la carrera en 3.5 horas. Considerando
su tiempo en el maraton como una variable aislada de las otras, difcilmente
diramos que 3.5 horas es un tiempo extremo. Sin embargo, considerando las
46
47
Q1 <- summary(Pa1)[2]
Q3 <- summary(Pa1)[5]
IQR1.5 <- (Q3 - Q1) * 1.5
IQR3 <- (Q3 - Q1) * 3
moderados <- paste(" Datos aislados moderados: ",
Pa1[((Pa1 <= Q1 - IQR1.5) & (Pa1 > Q1 - IQR3)) |
((Pa1 >= Q3 + IQR1.5) & (Pa1 < Q3 + IQR3))],
"\n")
extremos <- paste(" Datos aislados extremos: ",
Pa1[(Pa1 <= Q1 - IQR3) | (Pa1 >= Q3 + IQR3)])
cat("Datos aislados para Pa1", "\n", moderados, extremos)
Observese como se determinan el primer y tercer cuartl a partir de la informacion dada por summary(Pa1). Esta expresiondevuelveun vector cuyos
segundo y quinto componentes se corresponden al primer y tercer cuartl respectivamente. El rango intercuartlico se calcula a partir de la diferencia entre
Q1 y Q3, multiplicandose este rango intercuartlico por 1, 5 y 3 para obtener
las respectivas distancias para datos moderados y extremos. De la salida de
este codigo se evidencia que Pa1 tiene un solo valor aislado moderado, que
es igual a 5. Es decir, ese valor es considerado como un promedio de primer
a
no anormalmente bajo.
Todava falta por ilustrar como interpretar toda esta informacion, pero
eso lo dejaremos para la u
ltima seccion de esta unidad. En la siguiente unidad estudiaremos como producir res
umenes graficos en R para variables de
distintos tipos de escala. En particular, estudiaremos la construccion de los
denominados diagramas de caja, que sirven justamente para verificar graficamente cuestiones lo relativo a los valores aislados de una variable.
48
3.4.
Gr
aficas estadsticas en R
Es menester ahora hacer algunas consideraciones sobre las formas de presentar un resumen grafico de la data, de modo que quien lea un estudio estadstico pueda captar rapidamente las tendencias y caractersticas principales
de la misma. Cuando tratamos con datos de escala ordinal o de intervalos,
sin lugar a dudas una de las graficas mas importantes empleadas es el histograma de frecuencias. El histograma de frecuencias sirve para visualizar la
distribucion de frecuencias (relativa o absoluta) de una variable, lo cual es
especialmente u
til para el analisis exploratorio de datos.
Para elaborar un histograma de frecuencias, se debe separar la data en
clases (o intervalos de clase) seg
un el procedimiento expuesto anteriormente
para elaborar las tablas de frecuencia (datos agrupados). Para definir cada
intervalo de clase, debemos especificar su lmite inferior y superior- la frecuencia absoluta asociada a cada intervalo de clase sera la cuenta de los datos que
se encuentren entre esos dos lmites. A fin de determinar correctamente las
frecuencias absolutas, es necesario que se especifiquen los intervalos de clase
de modo que cada dato pertenezca a uno y solo un intervalo de clase (para
que ese dato no sea contado mas de una vez). Por esto u
ltimo, el menor de los
limites inferiores y el mayor de los lmites superiores se deben corresponder
al elemento menor y el elemento mayor de la data, respectivamente.
El punto medio entre el lmite inferior y superior de un intervalo de clase
se conoce como la marca de clase o representante de clase; la amplitud de
un intervalo de clase es la diferencia entre el lmite superior y el inferior. La
percepcion correcta de un histograma de frecuencias depende de que todos
los intervalos de clase sean de la misma amplitud, mas concretamente, la
amplitud (A) de todos los intervalos debe ser igual al rango (R) de la data
dividida entre el n
umero de clases (N):
A=
R x(n) x(1)
=
N
N
3.4. GRAFICAS
ESTADISTICAS EN R
49
Velleman (1976): N = [2 n]
Sturges (1926): N = [1 + log2 n]
De estas tres reglas empricas, la de Sturges arroja menos intervalos de
clase y por lo tanto, una mayor amplitud de cada intervalo. Los valores atpicos (o extremos) pueden agrandar mucho el rango, haciendo los intervalos de
clase a
un mas amplios. En estos casos puede ser mas conveniente usar reglas
que tomen en cuenta el rango intercuartlico de los datos (una medida mas
robusta de dispersion), tales como la regla de Scott (1979) o la de Friedman
y Diaconis (1981), las cuales se dan como opcion del parametro breaks de
la funcion hist.
Todo lo expuesto hasta ahora sirve como marco teorico de como se construyen los histogramas. Sin embargo, como uno de los objetivos de usar una
aplicacion estadstica es el de simplificar las cosas (no teniendo que lidiar con
la seleccion del n
umero de clases adecuado, ni con la clasificacion a mano de
cada dato en un intervalo de clase), para la mayora de los casos, si queremos
graficar un histograma, bastara con la instruccion hist de R sin otro parametro que el vector de la muestra9 . As, utilizamos esta funcion especificando
como u
nico parametro el vector de datos Pa1 para generar su histograma de
frecuencias:
> hist(Pa1)
Desde la consola de R observara un histograma como el de la Figura 3.2,
creado en otra ventana. Podemos observar que seg
un la regla de Sturges, el
9 En
50
3.4. GRAFICAS
ESTADISTICAS EN R
51
voque comer torta). No obstante, los diagramas de torta no son bien vistos
universalmente, por lo menos en el mundo de la estadstica. A continuacion
citamos a algunos expertos:
Las graficas de torta presentan severos problemas de percepcion. Experimentos en percepcion grafica han demostrado que
comparado con las graficas de puntos (dot charts), aquellas transmiten la informacion de manera mucho menos confiable. Pero si
desea exhibir alguna data y comunicar la informacion no es tan
importante, entonces una grafica de torta bastara.
Becker, R., Cleveland, W. (1996). The Splus Trellis GRaphics
User Manual. Pagina 50.
Una tabla es casi siempre mejor que una est
upida grafica de
tortas. Lo u
nico peor que una grafica de tortas es varias de ellas,
pues entonces el espectador debe comparar cantidades ubicadas en
el espacio de manera desordenada, tanto intra o entre tortas ...
Dada su baja densidad de data e incapacidad de ordenar cantidades a lo largo de la dimension visual, las graficas de torta nunca
deberan usarse.
Tufte, E. (1983). The Visual Display of Quantitative
information. Pagina 178.
Alguien quiere torta de postre? Si se esta preguntando quienes son estos
especialistas que en terminos tan amables se refieren a las graficas de tortas,
la fuente consultada [6] 10 indica que Bill Cleveland es autoridad mundial en
como se extrae la informacion a partir de graficas y que Ed Tufte, quien fue
Profesor de Estadsticas, Ciencias Polticas y Dise
no Grafico en la Universidad de Yale, ha escrito algunos de los libros mas vendidos sobre el despliegue
de informacion. En el mismo material consultado del Profesor Ihaka encontramos muchos mas comentarios negativos sobre las graficas de tortas, como
por ejemplo el de un especialista en semiotica que afirma que las graficas
10 La
52
3.4. GRAFICAS
ESTADISTICAS EN R
53
54
12 Aqu
solo
3.4. GRAFICAS
ESTADISTICAS EN R
55
x Es un vector de valores numericos que representan las frecuencias de cada clase de la variable cuya grafica de tortas se
quiere obtener. Esta se dibuja de tal modo que las areas de
los segmentos circulares de cada clase son proporcionales a
sus respectivas frecuencias.
labels Es un vector de caracteres alfanumericos, indicando el
nombre de cada clase. Por defecto, es igual a los nombres
con los que se designa cada categora de la variable nominal,
o sea, names(x).
col Es un vector de caracteres indicando los colores respectivos
de cada categora (ejemplo, "black", "green", etc.). Por
defecto, pie utiliza un esquema de colores pasteles.
main Un valor de caracter indicando el ttulo de la grafica. Por
defecto, es nulo.
Podramos construir graficas de torta para cualquiera de las variables categoricas de datos. Sin embargo, si incluimos el identificador de la variable
categorica como parametro de la instruccion pie(. . .) directamente (ejemplo:
pie(S)), no obtendremos la grafica deseada. Antes de proceder, es preciso
explicar lo que en R se conoce como factor. Un factor no es mas que el nombre
en R para una variable cualitativa o categorica- los valores que asume esta
variable se conocen como niveles (en R, levels). En nuestra data por ejemplo,
la variable categorica sexo (datos$S) asume dos valores: 0 y 1. Los valores
numericos, 0 y 1, representan los dos generos posibles: masculino y femenino
respectivamente. Para efectos de emplear tecnicas cuantitativas como el analisis de regresion, por ejemplo, convendra dejar los niveles de esta variable
como n
umeros. Sin embargo, para efectos de la estadstica descriptiva, se
quisiera identificar estos niveles mediante etiquetas de caracteres. En R, esto
es posible mediante la funcion factor, como se muestra a continuacion:
> factor(S, labels = c("Masculino", "Femenino"))
[1] Masculino Masculino Masculino Masculino Masculino
[6] Masculino Femenino Masculino Masculino Masculino
56
Masculino
Masculino
Masculino
Masculino
Femenino
Femenino
Femenino
Masculino
Masculino
Masculino
Masculino
Masculino
Masculino
Femenino
Masculino
Masculino
Masculino
Masculino
Femenino
Femenino
Femenino
Masculino
Masculino
Masculino
Femenino
Masculino
Masculino
Masculino
Masculino
Masculino
Femenino
Femenino
Masculino
Masculino
Masculino
Masculino
Masculino
Femenino
Masculino
Masculino
Masculino
Femenino
Masculino
Masculino
Como podemos observar, el resultado consta de las mismas 121 observaciones para la variable sexo, con los niveles Masculino y Femenino donde
haya un 0 o 1 en la variable S, respectivamente. El orden de los elementos
del vector de caracteres usado como parametro de label es importante, pues
se corresponde al orden de los niveles numericos tal como se presentan en la
muestra. A
un as, todava no podemos utilizar este vector de factores como
entrada para el argumento x de pie - para ello, necesitamos alguna forma de
resumir las observaciones de ese factor a fn de tener las frecuencias absolutas (una cuenta) de cada uno de los niveles del factor. Esto u
ltimo se realiza
mediante la funcion table, como se muestra a continuacion:
> sexo <- table(factor(S, labels = c("Masculino", "Femenino")))
> sexo
3.4. GRAFICAS
ESTADISTICAS EN R
Masculino
92
57
Femenino
29
58
> sum(sexo)
[1] 121
> round(sexo/sum(sexo) * 100)
Masculino
76
Femenino
24
> names(sexo)
[1] "Masculino" "Femenino"
> etiquetas <- paste(names(sexo), "\n", round(sexo/sum(sexo) *
+
100), "%")
> etiquetas
[1] "Masculino \n 76 %" "Femenino \n 24 %"
Notese que la funcion sum, que devuelve la suma de todos los componentes de un vector, devuelve aqu la suma de todas las frecuencias de clase
contenidas en la tabla sexo. La funcion round no hace mas que redondear
un n
umero real al entero mas proximo. Aplicandola aqu, round devuelve el
vector de las frecuencias relativas de clase, expresadas estas en porcentajes.
La expresion names(sexo) devuelve un vector de cadenas de caracteres con
los nombres (etiquetas) que le hemos asignado a cada nivel respectivo del factor. Finalmente, creamos un vector donde concatenamos (mediante la funcion
paste) cada nombre de clase con su respectivo porcentaje y se lo asignamos
al identificador etiquetas. Dentro de la expresion paste(. . .), el parametro
"\n" sirve para indicar que, al construir el diagrama de torta, el nombre de
cada clase sera seguido en la lnea de abajo por su respectivo porcentaje. Con
esto estamos listos para crear un diagrama de torta mas ilustrativo:
3.4. GRAFICAS
ESTADISTICAS EN R
59
>
+
>
+
+
+
+
>
>
>
>
60
3.4. GRAFICAS
ESTADISTICAS EN R
61
> boxplot(Pa1)
62
3.5.
la observaci
on asociada a este valor atpico volveremnos mas tarde cuando tengamos m
as elementos de an
alisis.
DE DATOS63
3.5. ... Y DE VUELTA NUEVAMENTE A LA EXPLORACION
podran tener un efecto (positivo o negativo) sobre el promedio academico
del primer a
no:
Las variables socioeconomicas del estudiante cuyos indicadores en este
caso son Ingr y C (ingresos familiares y tipo de colegio, p
ublico o privado, donde curso el bachillerato, respectivamente). Es el alto ingreso
familiar un factor determinante para el exito academico en el primer
a
no de la carrera? Son los estudiantes egresados de colegios privados
mejor preparados para proseguir con los estudios de tercer nivel en esta
universidad?
Las variables demograficas del estudiante dadas por el sexo (S), la edad
(Ed) y el lugar de origen (O - si es o no del interior del pas). Son los
estudiantes de mayor edad, que en cierto grado esta relacionada con
la madurez, mejor dispuestos para los estudios universitarios? O por el
contrario, es la juventud una condicion mas favorable? Existe alg
un
tipo de sesgo o discriminacion por genero en estas carreras universitarias? Es el lugar de origen un factor determinante? - el provenir del
interior y tener que ocupar una residencia estudiantil lejos de su familia
pudiese afectar negativamente el promedio de notas del estudiante.
Otras variables academicas no directamente relacionadas con Pa1, representadas aqu por Nota - la nota obtenida en el examen de ingreso
de la facultad y por E - la escuela de la facultad a la que esta adscrito
el estudiante. Es la nota en el examen de ingresos un buen predictor del exito academico en el primer a
no? Tienen los estudiantes de
computacion de mayor promedio de notas que los estudiantes de matematicas?
En la actualidad se habla mucho de la exclusion social en la educacion
universitaria en nuestro pas, lo cual pareciera paradojico en un pas donde
hay muchas universidades p
ublicas. En el caso que nos ocupa, comenzamos
nuestro analisis exploratorio haciendo un resumen y un histograma del indicador de ingresos familiares:
En la figura 3.10 observamos algo curioso - el histograma de los ingresos
familiares presenta dos picos (es bimodal). Esto podra sugerir que hay dos
tipos de estudiantes, en cuanto al nivel de ingresos familiares bajo o alto
64
> summary(Ingr)
Min. 1st Qu.
1200
2500
Median
5400
Max.
8400
> hist(Ingr)
de cada uno. Expresandolo de una manera mas tecnica - parece que tenemos
estudiantes de dos subpoblaciones en la muestra, cada subpoblacion con unas
caractersticas marcadas en cuanto al ingreso familiar. De manera intuitiva (y
un tanto arbitraria) establecemos el siguiente criterio para discriminar entre
las dos subpoblaciones: consideraremos ingresos bajos a aquellos inferiores a
3000 e ingresos altos aquellos superiores a 3000. Observando en el histograma
que el primer pico se presenta en la segunda clase (cuyo lmite superior es
3000) y que la tercera clase tiene una frecuencia menor que la segunda la
fundamentacion de dicho criterio.
Procedemos ahora a crear una nueva variable tipo factor que indique si el
respectivo estudiante es de bajo o alto ingreso familiar (ver codigo y grafica
en la figura 3.11). La primera lnea del codigo anterior produce una nueva
variable tipo factor correspondiente al tipo de ingreso familiar. Para ello, la
DE DATOS65
3.5. ... Y DE VUELTA NUEVAMENTE A LA EXPLORACION
> ingreso <- factor(ifelse(Ingr <= 3000, "bajo", "alto"))
> tapply(Pa1, ingreso, summary)
$alto
Min. 1st Qu.
6.20
10.46
Median
12.43
Max.
17.43
$bajo
Min. 1st Qu.
5.00
10.34
Median
12.84
Max.
17.88
expresion ifelse(. . .) dentro de factor devuelve un vector tan grande como el vector numerico Ingr indicando mediante cadenas de caracteres si el
ingreso familiar es bajo (se cumple la condicion Ingr3000) o alto en caso
contrario. La segunda lnea aplica la funcion summary ya vista anteriormente
a la variable Pa1, seg
un el tipo de ingreso familiar. La tercera lnea de codigo ilustra otro uso de la funcion boxplot: se producen dos diagramas de
66
caja para la variable Pa1, uno al lado del otro, discriminando los valores de
dicha variable seg
un corresponden a estudiantes de ingresos bajos o altos,
produciendo la grafica de la figura 3.11.
Curiosamente, y al contrario de lo que suponamos al principio, los estudiantes de bajos ingresos tienen un promedio y una mediana de notas del
primer a
no un poquito mas altas que los estudiantes de altos ingresos. Cuan
significativa es la diferencia entre las medias de Pa1 para cada uno de los dos
grupos de ingresos es algo que no podemos establecer a
un. En todo caso, la
evidencia emprica parece sugerir que no es cierto que los estudiantes de mayores ingresos familiares sean los que tengan mayor promedio de notas en el
primer a
no de la carrera. Otra caracterstica interesante es que los estudiantes de bajos ingresos tienen mayor dispersion de la variable Pa1; inclusive, el
promedios de notas mas alto y el mas bajo corresponden ambos a estudiantes
de bajos ingresos. Otro elemento de interes para el analisis es el siguiente:
> sum(Ingr <= 3000)
[1] 38
Apenas 38 de los 121 estudiantes de la muestra son de bajos ingresoses decir, por cada estudiante de bajos ingresos hay aproximadamente 3 de
altos ingresos. Claramente, en el ambito nacional esta relacion se invierte- en
nuestro pas son mas numerosas las personas de bajos ingresos. Sin embargo,
aparentemente los estudiantes de bajos ingresos obtienen, en promedio, calificaciones levemente mas altas que los de altos ingresos, lo cual sugiere que
el tener bajos ingresos familiares no es un factor adverso al buen desempe
no
academico en esa universidad. Porque entonces son relativamente escasos
los estudiantes de bajos recursos economicos en esa universidad? Sera la
causa de ello el mecanismo de admision aplicado (la prueba interna)? Sera
que los estudiantes de bajos recursos economicos tienen la sensacion de que
la universidad no es para ellos y sencillamente no aspiran a ingresar a ella,
a
un cuando la evidencia emprica demuestra que su bajo nivel de ingresos no
representa una desventaja en su desempe
no academico? Desgraciadamente,
no tenemos a la mano suficiente data para dilucidar esta u
ltima interrogante.
No obstante, podemos construir un diagrama de cajas similar al anterior para
ver la relacion entre las notas del examen de admision de los estudiantes de
bajos y altos recursos economicos (figura 3.12):
DE DATOS67
3.5. ... Y DE VUELTA NUEVAMENTE A LA EXPLORACION
> boxplot(Nota ~ ingreso, ylab = "Nota en examen de admisi
on",
+
xlab = "Nivel de ingresos")
68
DE DATOS69
3.5. ... Y DE VUELTA NUEVAMENTE A LA EXPLORACION
> summary(Ed)
Min. 1st Qu.
15.00
17.00
Median
17.00
Max.
26.00
> hist(Ed)
Seg
un la grafica de la figura 3.15, las personas de mayor edad tienen
promedios de notas menores. La diferencia es mas o menos marcada, pues
la mediana de los promedios de notas de los estudiantes de mayor edad es
aproximadamente 2 puntos menor que la de los promedios de los estudiantes
mas jovenes. Ademas, los promedios de notas mnimos y maximos para cada
grupo son ambos mayores para el grupo de estudiantes mas jovenes. Una
vez mas, en este punto no estamos en condiciones de afirmar si esta diferencia es significativa, pero lo que estamos observando nos sugiere la siguiente
pregunta: Si los estudiantes de mayor edad tienen un menor rendimiento
academico, se debe esto a que generalmente las personas mayores trabajan
tambien? Desafortunadamente, no tenemos suficiente data para investigar
sobre esto.
70
DE DATOS71
3.5. ... Y DE VUELTA NUEVAMENTE A LA EXPLORACION
> boxplot(Pa1 ~ factor(S, labels = c("Masculino", "Femenino")),
+
ylab = "Promedio del 1er a~
no", xlab = "Sexo")
72
DE DATOS73
3.5. ... Y DE VUELTA NUEVAMENTE A LA EXPLORACION
> summary(Nota)
Min. 1st Qu.
10.93
12.21
Median
13.29
Max.
18.67
74
3.6.
Problemas propuestos
(Por elaborar)
Ap
endice A
Tabla de datos
N
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
E
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
Nota
12,66
13,58
13,49
16,21
18,42
18,01
14,87
15,52
16,37
14,6
13,97
13,87
13,27
17,75
12,77
15,04
13,48
13,03
13,81
15,69
Us1
80
20
20
50
80
100
50
80
70
50
80
70
100
60
50
80
50
80
80
70
Us2
55
55
27
27
27
100
0
95
45
0
77
73
95
64
27
0
0
73
55
45
Ingr
2200
5800
2300
1700
6000
2500
1700
1900
7300
2300
5000
2100
4900
1600
4900
6500
6000
6500
4300
2800
C O
1 1
0 1
1 1
1 1
0 1
1 1
1 1
1 1
0 1
1 1
0 1
1 0
0 1
1 0
0 0
0 1
0 1
0 1
0 1
1 0
75
S
0
0
0
0
0
0
1
0
0
0
1
0
0
0
0
0
0
0
0
0
Ed
16
19
18
20
25
15
17
17
20
17
17
18
18
26
17
17
19
17
17
19
Psm1
13
9,5
6,5
13,33
13
18,25
11
14
14,33
8,33
12,67
13
14,5
15,5
12
11,33
9,67
15,33
12,5
12
Psm2
7,25
7,67
6,33
15
8,5
17,5
7
12,25
10,33
4,66
8
15,75
13,67
15,67
7,5
3
5
14,67
10,5
12,33
Pa1
9,71
8,4
6,4
13,75
10,75
17,88
9,67
13
12,33
6,5
7
14,57
14,14
15,6
9
9,25
7,75
15
11,17
12,2
Ua1
67
38
24
38
52
100
24
88
57
24
79
71
98
62
38
38
24
76
67
57
APENDICE
A. TABLA DE DATOS
76
N
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
E
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
Ingr
6000
5400
2200
6900
7000
6300
6300
4800
2200
6600
5000
6000
5300
5500
5200
5400
5500
1700
6700
7300
6400
2400
7600
6800
5900
6100
5600
4900
3300
6500
6000
5000
7400
6100
5700
5700
7300
C
0
0
1
0
0
0
0
0
1
0
0
0
0
0
0
0
0
1
0
0
0
1
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
O
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
1
1
1
1
0
1
1
1
0
1
1
1
1
0
1
1
S
0
0
0
0
1
0
1
0
0
0
0
0
0
1
0
0
1
1
1
0
0
1
1
1
0
0
0
0
0
0
1
0
0
0
1
0
0
Ed
19
18
17
18
16
16
18
20
17
17
16
17
17
18
18
20
21
21
17
17
18
17
18
16
18
17
17
16
20
23
18
18
17
18
18
22
20
Psm1
8,5
14,33
14,75
7
15,25
13
13,5
13,5
16
11
7,75
14,5
13,67
12,33
13
10,5
11,67
13,75
13
10
15,5
14
14,25
14,5
14
10
13
12,67
12,33
17,75
17,25
15
14
13,5
10,5
16,25
15,5
Psm2
7
13
11,5
9,25
14,25
11,25
7,5
9,5
13,5
15,5
11,5
13,5
12,67
11,75
8,75
12
11
8,75
12,67
7
13,75
10,75
10,75
13,25
12,75
12
10
13,33
12,5
16,75
16,75
13,25
12,33
10,75
10
13
11,75
Pa1
7,5
13,57
13,13
8,13
14,75
12,13
10,5
11,5
14,75
13,25
9,63
14
13,17
12
10,57
11,25
11,28
11,25
12,86
8,8
14,63
12,14
12,5
13,88
13,17
11
11,5
13
12,43
17,25
17
14
13,17
11,67
10,33
14,63
13,63
Ua1
24
88
98
43
100
100
38
86
100
86
67
100
76
76
67
88
76
79
88
62
100
67
90
100
76
67
76
76
90
100
100
88
76
67
38
100
100
77
N
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
E
1
1
1
1
1
1
1
1
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
Nota Us1
13,32 50
15,56 50
16,23 50
17,51 30
14,03 100
14,95 80
16,53 100
14,54 70
13,59 50
11,54 71
12,13 100
11,64 43
12,17 100
11,36 100
15,06 100
11,27 71
11,41 14
11,25 43
13,85 100
11,41 14
12,03 43
10,93 100
11,49 43
11,4 100
12,49 100
11,23 100
12,21 57
12,64 57
11,73 43
11,4 43
13,92 100
12,14 100
12,81 71
12,95 100
11,23 43
13,15 100
12,77 71
Us2
0
27
100
55
73
91
100
0
27
71
43
0
57
81
71
29
0
0
71
86
0
0
0
29
0
0
0
0
57
57
0
95
0
71
86
52
71
Ingr
6400
6800
5100
5800
7200
5900
2000
5000
6300
8200
2400
5400
1200
3400
2600
2000
1900
6600
5700
4000
3300
8400
5300
5600
6700
7000
5900
1900
1700
6500
2900
2400
5600
6700
2100
5700
1900
C
0
0
0
0
0
0
1
0
0
0
1
0
1
1
1
1
1
0
0
0
1
0
0
0
0
0
0
1
1
0
1
1
0
0
1
0
1
O
1
1
1
1
0
1
1
1
1
1
1
1
1
1
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
1
1
1
1
1
1
S
0
0
1
0
0
1
0
0
0
1
0
0
0
0
1
0
0
0
0
1
0
1
0
1
0
0
0
0
0
0
0
0
1
0
0
0
0
Ed
18
18
17
19
18
17
20
18
17
16
17
17
17
17
17
23
23
18
17
19
17
16
18
17
18
17
22
19
16
16
18
19
17
17
17
16
17
Psm1
9
13
10,67
10
12,67
15,67
13,75
9,75
9
15,67
13,25
11
12,75
14
12,25
13
13
11,67
12,25
11
10,67
14
13,33
12,75
12,5
11,25
14
6,5
12,5
16,33
17,25
14
14,33
12,25
11,5
14,25
15
Psm2
2
6,33
13,25
10,75
10,33
15
13,25
7
6,5
13,76
8
11
15,77
13,73
8,5
9,18
4,67
8,48
8,91
10,05
5,96
14
13,33
10,36
12,5
8,86
1,91
7,77
6,58
15,7
17,25
12,33
14,33
12,86
10,55
12,37
10,23
Pa1
6,2
9
12,83
10,43
11,5
15,33
13,5
8,57
8
14,67
10,5
11
14,33
13,86
10,29
11
8,64
10
10,5
10,5
8,2
14
13,33
11,5
12,5
10
7,67
7,17
9,4
16
17,25
13,13
14,33
12,57
11
13,27
12,5
Ua1
24
38
76
43
86
86
100
33
38
71
71
21
79
90
86
50
7
21
86
50
21
50
21
64
50
50
29
29
50
50
50
98
36
86
64
76
71
APENDICE
A. TABLA DE DATOS
78
N
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
E
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
Nota
11,87
15,02
11,5
11,64
15,73
11,25
12,82
13,27
12,82
11,54
12,4
13,16
11,87
12,03
12,18
12,79
12,65
11,47
12,25
11,07
11,43
14,89
11,84
12,88
12,75
12,54
13,58
Us1
100
100
100
71
71
100
100
100
100
100
100
57
100
100
100
100
100
100
71
100
29
100
100
14
71
71
100
Us2
71
95
81
0
0
57
57
81
71
43
81
0
57
0
95
81
0
57
0
0
0
95
43
0
57
57
95
Ingr
5300
5000
8200
2200
2700
6500
6700
3000
5300
2000
5800
7300
2100
7300
2800
6200
4200
2900
1800
5500
2200
7300
1300
6900
1900
5300
1700
C
0
0
0
1
1
0
0
1
0
1
0
0
1
0
1
0
0
1
1
0
1
0
1
0
1
0
1
O
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
1
1
1
1
0
1
1
1
S
0
1
0
0
0
0
0
0
0
1
0
0
0
0
1
1
1
1
0
1
0
1
0
0
0
0
0
Ed
19
16
17
18
16
17
17
17
17
19
16
17
18
17
17
16
16
16
19
17
19
17
17
17
17
16
16
Psm1
13,5
16,75
14,75
14,67
16
13
14,5
16,75
16,5
14,33
13
10,33
12,75
13,75
17,5
12,75
12,25
14,75
13
13,75
5
15,75
14,5
8,67
12
14,33
16
Psm2
8,73
17,7
14,41
14,67
16
13,95
14,5
16,68
18,27
11,52
15,54
7,31
12,91
13,75
17,26
12,75
12,25
16,18
6,51
13,75
5
15,99
12,46
8,67
10,09
13,7
15,76
Pa1
11
17,25
14,57
14,67
16
13,5
14,5
16,71
17,43
12,86
14,33
8,75
12,83
13,75
17,38
12,75
12,25
15,5
9,6
13,75
5
15,88
13,43
8,67
11
14
15,88
Ua1
86
98
90
36
36
79
79
90
86
71
90
29
79
50
98
90
50
79
36
50
14
98
71
7
64
64
98
Bibliografa
[1] Understanding Pie Charts.
techniques/pie-charts.
79