Está en la página 1de 14

PRACTICO 3:

TABLAS DE FRECUENCIA Y REPRESENTACIONES GRÁFICAS

La Estadística Descriptiva es el análisis exploratorio de los datos para describir el


comportamiento de éstos, facilitando tanto la comprensión como su interpretación. Las
formas simples de organizar los datos son por medio de las tablas y gráficos que
permiten detectar tanto las características sobresalientes como las inesperadas.

Objetivos generales:
1. Conocer y trabajar conceptos básicos de la estadística descriptiva.
2. Generar, analizar e interpretar datos representados en una tabla de frecuencia, en
una tabla de contingencia, y en gráficos (histogramas y gráficos de barras).
3. Relacionar la información contenida en la tabla y gráficos con el tipo de variable
que se está describiendo.

TABLAS DE DISTRIBUCIÓN DE FRECUENCIAS

Las tablas de distribución de frecuencias son utilizadas para ordenar y describir un set
de n datos u observaciones numéricas. Básicamente, el conjunto de valores de una
variable y sus respectivas frecuencias (absoluta y relativa) se ordenan en columnas, lo
que finalmente nos permite apreciar cómo se distribuyen los valores de una variable
determinada.

Comenzaremos cargando la base de datos “Llamados.csv” y la almacenaremos en un


objeto llamado “data”, utilizando el siguiente comando:

data=read.csv(file.choose(),header=T,sep=";",stringsAsFactors=T)

El comando read.csv() nos permite cargar un archivo de esta extensión (csv: comma-
separated values). El comando file.choose(), permite buscar el archivo deseado
usando una ventana interactiva. El argumento header es utilizado para indicar si el
archivo tiene “encabezado” (nombre de columna) , especificando TRUE cuando las
columnas tienen nombre y FALSE en caso de que no lo tuviesen. Y el argumento sep nos
permite indicar qué símbolo que separa los valores de nuestra base de datos, en este
caso “ ; ”. El argumento stringsAsFactors permite reconocer cuando los textos de la
base de datos corresponden a factores o grupos distintos (TRUE), o a otro tipo de datos
FALSE (por ejemplo, sólo caracteres).

Podremos obtener un resumen de cada una de las columnas mediante el comando


summary() y también conocer la dimensión de nuestra base de datos mediante el
comando dim():

summary(data)
dim(data)

Adicionalmente podemos extraer información específica, como por ejemplo, filas o


columnas, o valores determinados de acuerdo con sus coordenadas, empleando el
siguiente formato: [n° de fila,n° de columna]. En caso de querer extraer
solamente una fila (un intervalo específico) emplearemos [fila,] (no se especifica
nada en la posición de la columna). Similar comando utilizaremos para columnas
específicas [,columna] (no se especifica nada en la posición de la fila).
Por ejemplo, si quisiéramos obtener solamente el valor de la tercera fila, escribiríamos el
siguiente comando:
data[3,]

O si quisiéramos extraer solamente los valores de la columna “Llamados” escribiríamos el


siguiente comando:
data[,2]

O si quisiéramos sólo la cantidad de llamados de la tercera fila:


data[3,2]

Ejercicio 1: Tabla de Frecuencia

La base de datos cargada corresponde a un estudio que se realizó para evaluar la


cantidad de llamadas ultrasónicas en jerbos jóvenes de Mongolia. Cada animal se aisló
durante un minuto por cada uno de los 14 primeros días de su vida, y se grabaron los
sonidos que produjo. Entonces, este grupo de animales corresponde al grupo
experimental, que es aquel que es expuesto a la condición, variable, o estímulo
experimental. Una variable de interés que se registró fue el número de llamadas emitidas.
Por otra parte, se trabajó también con un grupo control de animales, que son animales
no manipulados en absoluto, y que se estudiaron al quinto día (Tabla 1). El grupo control
es necesario en muchos diseños experimentales, porque permite detectar fuentes de error
asociadas al manejo diario de los animales de experimentación que pueden influenciar su
comportamiento.

Número de llamados
Experimental Control
135 139 130 123 112 112
137 151 151 109 105 121
148 143 139 118 106 100
152 154 151 116 115 115
144 146 137 96 120 112
138 145 156 88 112 122
142 136 138 102 123 128
145 150 144 117 110 124
147 151 142 119 98 109
147 138 155 101 111 90

Debido a que los datos son numéricos y discretos, podemos agruparlos en intervalos
equivalentes para así obtener las frecuencias dentro de cada intervalo. Para determinar el
número de intervalos a considerar en la tabla recurriremos a la regla de Sturges. La regla
de Sturges nos permite obtener el número de intervalos (o número de clases) que
deberíamos utilizar para representar adecuadamente nuestros datos. Se expresa de la
siguiente manera:

k = 1 + 3,3222*log10(N), donde N es el número de datos en la muestra.

Primero trabajaremos sólo con el número de llamadas de la condición “Experimento”, por


lo que debemos aislar estos datos de nuestra base de datos. Para esto seguiremos los
siguientes pasos:
1) Generamos un vector lógico que nos permita trabajar solamente con estos datos:
filtro=data$Condicion=="Experimento"
Con esto, generamos un vector lógico, el que lee cada fila de la columna “Condicion” y
verifica si dice “Experimento”; si es así, lo indica como “TRUE” , y por consiguiente cada
vez que haya otro valor en esta columna obtendremos un valor “FALSE”.

2) Utilizando el vector lógico creado, generamos un nuevo vector con la cantidad de


llamados pero sólo de los datos de experimento.
Exp=data$Numero_de_Llamados[filtro]

Al utilizar “[filtro]“, posterior al nombre de la columna, haremos que nuestro vector


solamente considere los datos con valor “TRUE”, dejando de este modo, sólo los valores
del grupo Experimento

3) Finalmente ordenaremos los datos de forma ascendente mediante el comando


sort().
Experimento=sort(Exp,decreasing=F) # decreasing=FALSE ordena de menor
a mayor, mientras que decreasing=TRUE ordena de mayor a menor.

Luego, calculamos el número de intervalos, recordemos que en este caso N = 30, como
se evidencia en los resultados del comando summary() realizado anteriormente, por lo
que en nuestro caso el cálculo sería:

Aproximamos el valor obtenido a _ intervalos.

Ahora, para determinar la amplitud de los intervalos tomaremos el rango total (valor
máximo – valor mínimo) y lo dividiremos en el número de intervalos obtenidos.
Observaremos los valores máximos y mínimos con los siguientes comandos:
max(Experimento) #permite obtener el valor máximo de una serie de datos
min(Experimento) #permite obtener el valor mínimo de una serie de datos

Luego lo dividiremos por el número de intervalos y obtendremos la amplitud:


(___+___)/___ =

Este valor de amplitud será aproximado al valor siguiente considerando 2 decimales, es


decir a ___ y podemos obtener los intervalos para nuestra muestra. Para obtener el límite
superior de nuestro intervalo (“Ls”) sumaremos ___ al valor mínimo y habremos
determinado un límite abierto. Y en el siguiente intervalo, este valor se considerará
cerrado, como límite inferior (“Li”). Para calcular el nuevo límite superior, debemos
nuevamente adicionar ___ al límite inferior del intervalo en cuestión.
Ahora procederemos a calcular las marcas de clase, que representan el punto medio de
cada intervalo o clase y que se calcula como la semisuma de los límites inferior y superior
Li + L s
( )
2

Ahora complete la siguiente tabla de frecuencias (utilizando calculadora) en base a los


intervalos previamente calculados. (4,34 se suma a todos los intervalos)
Marca de clase (suma de los intervalos y se divide por 2)
Frecuencia absoluta (
Frecuencia absoluta acumulada
Frecuencia relativa (
Frecuencia relativa acumulada (

Frecuencia Frecuencia
Marca de Frecuencia Frecuencia
Intervalo acumulada acumulada
Clase absoluta relativa
absoluta relativa
[130-134,34] 132.17 1 1 0.033 0.033

[134,34-138,68] 136.51 7 8 0.233 0.266

[138.68-143.02] 140.85 5 13 0.167 0.433

[143.02- 147.36] 145.19 7 20 0.233 0.666

[147.36-151.70] 149.53 6 26 0.200 0.866

[151.7- 156.04] 153.87 4 30 0.133 0.999=1

Recuerde que:
- la frecuencia absoluta (ni) representa el número de datos que existen en un intervalo
dado
- la frecuencia acumulada (Ni) representa el número de datos que se acumulan hasta un
intervalo dado
- la frecuencia relativa (fi=ni/N) representa la proporción de datos en un intervalo dado
respecto al total de datos (N)
- la frecuencia relativa acumulada (Fi) es la suma de las frecuencias relativas hasta un
intervalo dado.

Nos quedaría estimar cómo se distribuyen los datos del grupo “control”, pero esta vez
realizaremos nuestra tabla de frecuencia en R, siguiendo la misma secuencia de pasos,
es decir, primero calcularemos el número de intervalos de acuerdo con la regla de
Sturges.
Primero crearemos el vector con los datos del número de llamados para la condición
“Control”, de igual manera que hicimos con los datos de experimento.
CON=data$Condicion=="Control"
Con=data$Llamados[CON]
Control=sort(Con,decreasing=F)

Ahora calcularemos el número de intervalos mediante el comando nclass.Sturges(),


indicando entre paréntesis el nombre del vector de interés.
K<- nclass.Sturges(Control)

Luego, calcularemos la amplitud de cada intervalo, para esto, utilizaremos los comandos
diff() y range(), los que se utilizan para obtener la diferencia entre valores
consecutivos y obtener los valores máximo y mínimo de un vector numérico
respectivamente. Adicionalmente, debemos dividir la amplitud total en el número de
intervalos calculados para obtener la amplitud de cada intervalo.
A<-diff(range(Control))/K

Ahora calcularemos los límites de nuestros intervalos mediante el siguiente comando:


L<-min(Control)-0.01+6.67*(0:K)

## A diferencia de los comandos anteriores, aquí estamos aplicando


una fórmula a una serie de valores (0:K) , resultando en una serie
de nuevos valores. En otras palabras, se aplica la fórmula escrita
a cada valor desde 0 hasta K
Y junto con esto procederemos a calcular las marcas de clases, como la semisuma de los
límites de cada intervalo con el siguiente comando:

marcas<-(L[0:K]+L[1:K+1])/2
##similar al caso anterior, aplicamos la fórmula de la semisuma a
los límites de cada intervalo.

Un paso adicional que debemos realizar en R, es discretizar nuestros datos, para obtener
la frecuencia absoluta posteriormente. Para esto generamos en primera instancia un
vector de caracteres llamado “etiq” (por “etiquetas”), el cual tendrá una extensión igual al
número de intervalos (K)
etiq <- c("A","B","C","D","E","F")

Ahora, debemos asignar a cada uno de nuestros datos originales una estas etiquetas, que
representa el intervalo al que pertenece, con el siguiente comando:
Llamados <- cut(Control,breaks=L,labels=etiq,right=TRUE)
##Este comando divide nuestro vector original, según los limites
calculados, y le asigna la misma etiqueta a cada valor dentro del
intervalo.

Al llamar al objeto Llamados, podemos observar que se asignó una letra a cada valor.
Ahora calcularemos la frecuencia absoluta para cada intervalo:
f_abs <- as.vector(table(Llamados))
##el comando table, genera una tabla para el recuento de cada
etiqueta, mientras que el comando as.vector(), organiza estos
datos como vector

Y a continuación, la frecuencia absoluta acumulada para cada intervalo:


f_abs_acum <- cumsum(table(Llamados))
##el comando cumsum nos permite realizar la suma acumulativa de
los elementos en un objeto
Para calcular tanto la frecuencia relativa como la frecuencia relativa acumulada, se agrega
el comando prop.table(),el que permite expresar las tablas como proporciones, de la
siguiente forma:
f_rel <- as.vector(prop.table(table(Llamados)))
f_rel_acum <- cumsum(prop.table(table(Llamados)))

Finalmente, construiremos nuestra tabla de frecuencias mediante el comando


data.frame(). Este comando, permite agrupar distintos vectores, como columnas
consecutivas, generando de esta manera un objeto de tipo “data frame” o base de datos,
asociando a cada observación (fila) el valor de cada una de las variables.
Es importante que todos los vectores utilizados contengan la misma cantidad de
elementos.

control=data.frame(etiq,marcas,f_abs,f_abs_acum,f_rel,f_rel_acum)

Observaremos nuestra tabla de frecuencias


control
Para poder visualizar en un gráfico la tabla de frecuencia del número de llamados tanto
del control como del grupo experimental debemos realizar un histograma. Un histograma
es un tipo gráfico univariado, que expresa la frecuencia o densidad de cada uno de los
valores (o intervalos) de una variable numérica. Graficar la distribución de ambos grupos
en un mismo histograma, nos permitirá además una perspectiva comparativa de nuestros
datos. Para realizar un histograma debemos utilizar el comando hist().
Comenzaremos realizando el histograma para el grupo experimento con el siguiente
comando:

hist(Experimento,col="red",xlab="Numero de Llamados",
ylab="Frecuencia",main="Histograma Numero de LLamados",
xlim=c(80,160),ylim=c(0,9),breaks=seq(from=min(Experimento),to=max
(Experimento)+0.04,by= 4.34))

##El argumento básico de hist() es un vector (Experimento), con esto, ya


es posible formar un histograma. Adicionalmente el argumento col, nos
permite indicar en que color de relleno de nuestro histograma, el
argumento xlab, ylab y main, permiten rotular el eje x, el eje y el
titulo principal del gráfico respectivamente. Se debe indicar siempre el
texto entre comillas(“”). Los argumentos xlim e ylim, permiten determinar
los valores que presentaran nuestros ejes, en este caso el valor mínimo
y máximo de la variable número de llamado entre ambos grupos para el eje
x, mientras que para el eje y asignaremos un valor mínimo de 0 y el valor
máximo será el máximo de frecuencias absolutas entre ambos grupos. El
argumento breaks nos permite establecer los límites de los intervalos. En
este caso, el comando seq se utiliza para generar una secuencia de
valores que parten en el valor mínimo del vector experimento (“from”),
hasta (“to”) el valor máximo del vector experimento +0.04, e indicando
cada cuanto se genera el siguiente numero de la secuencia (“by”), es
decir by funciona como la amplitud de intervalo.
Ahora para poder graficar el grupo control utilizaremos el siguiente comando:

hist(Control,col="blue",add=T,xlim=c(80,160),breaks=seq(min(Control),max(
Experimento),by= 6.67))

##El argumento add=T, nos permite agregar el histograma de control al


histograma que previamente realizamos.

Histograma Numero de LLamados


8
6
Frecuencia

4
2
0

80 100 120 140 160

Número de Llamados

Figura 1. Histograma con las dos distribuciones de frecuencias (datos control en color
azul; datos experimentales en color rojo).

Como se puede apreciar, en el histograma para los datos control existe una mayor
frecuencia de datos hacia los valores mayores de esta distribución. Sin embargo,
podemos observar que la distribución de la variable “número de llamados” en el
tratamiento experimental se centró en valores mayores que en el tratamiento control, lo
que evidencia un efecto del aislamiento sobre los jerbos de Mongolia jóvenes. Esto se
ilustra de buena manera en el siguiente histograma que muestra las distribuciones de los
datos de número de llamados en ambos tratamientos.
Tablas de contingencia y gráficos de barra

Las tablas de contingencia son utilizadas para evaluar la relación de dos variables de
naturaleza cualitativa. En este caso queremos explorar la preferencia de las abejas por
flores con ciertos colores. Para ello construiremos una tabla de contingencia (o tabla de
doble entrada) que resuma los datos obtenidos en terreno de un experimento en el cual
se contó el número de flores de diferentes colores con presencia/ausencia de abejas (en
un momento determinado). En el momento del muestreo el panorama era el siguiente:

La pregunta es ¿las abejas tienen preferencia por algún color de flores?


Objetivo: construir la tabla de contingencia que resuma las observaciones hechas
por el investigador.
Ordenemos los datos que aparecen arriba en la siguiente tabla:
Presencia/color de flor Amarilla Roja
Ausente
Presente
Para generar nuestra tabla de contingencia en R, debemos cargar la base de datos
(“abejas.csv”), y almacenarla en un objeto:

abejas=read.csv(file.choose(),header=T,sep=”;”,stringsAsFactors=T)

Ahora debemos aplicar el comando table() a nuestra base de datos, para transformarla
en una tabla de contingencia y observaremos el resultado

tabla_abejas=table(abejas)

Ahora, podemos graficar nuestra tabla de contingencia en un gráfico de barras con el


comando barplot() en R:
barplot(as.matrix(tabla_abejas),beside=TRUE,col=c("blue","orange")
, legend=TRUE, ylab="Frecuencia",xlab="Color de la flor")

##en este caso, as.matrix() se utiliza para que R considere como


una matriz, el objeto tabla_abejas (la tabla de contingencia que
creamos), el argumento beside=T yuxtapone las columnas de un mismo
factor, en caso de que beside=F, las columnas se presentarían
aisladas unas de las otras y el argumento legend=T, permite que se
muestre la leyenda.
10

Ausente
Presente
8
6
Frecuencia

4
2
0

Amarilla Rojo

Color de la flor
Figura 2. Barplot para la presencia/ausencia de abejas según el color de la flor. Naranjo:
presencia de abejas; Azul: ausencia de abejas.

Como podemos observar, las abejas están presentes en mayor frecuencia en las flores
amarillas respecto a las rojas, lo que muestra una preferencia por el primer tipo de color.
A continuación, se muestra.

Ejercicios de práctica
*Recuerde modificar tanto título como rótulos de los ejes en cada uno de los
gráficos que realice*

1) El lago Malawi es uno de los lagos africanos más grande, en este lago existe una gran
variedad de peces, siendo la mayor cantidad de especies de la familia Cichlidae. El lago
se caracteriza por presentar grandes roquerios, así como también extensas zonas libres
de roquerios.
La base de dato Malawi.csv, contiene el tamaño máximo de los peces (variable ML), así
como también el estilo de vida de estos (variable LS), clasificándose como expuestos en
caso de peces que utilizan mayor mente zonas libres de roquerios, o protegidos para
aquellas especies que suelen permanecer cercanas a los roquerios . A partir de esta
realice y responda lo siguiente:
a) Construya una tabla de frecuencia con intervalos para cada grupo (estilo de vida).
Incluya marcas de clase, frecuencia absoluta, frecuencia absoluta acumulada,
frecuencia relativa y frecuencia relativa acumulada.
b) Construya un histograma que presente represente a ambos grupos.
c) ¿Existe diferencia en el tamaño corporal entre las especies según su estilo de
vida? De ser así describa esta diferencia.

2) En este experimento se evaluó si existe una asociación entre la exposición de ratas


a pesticidas en el campo y la presencia de malformaciones en individuos recién nacidos.
te. Los resultados de este experimento están en el archivo Ratas.csv. A partir de estos
resultados:
a) Construya una tabla de contingencia
b) Grafique adecuadamente estos resultados
c) ¿Existe una asociación entre la presencia de malformaciones y la exposición a
pesticidas?

3) Construya en R una tabla de frecuencias en base a los datos de concentración de mg


de Glicina por mg de creatina en la orina de chimpancés proporcionados a continuación:
0.008, 0.018, 0.018, 0.056, 0.055, 0.135, 0.052, 0.077, 0.026, 0.026, 0.440, 0.300, 0.025,
0.036, 0.036, 0.043, 0.100, 0.120, 0.110, 0.130, 0.350, 0.150, 0.200, 0.225, 0.250, 0.100,
0.300, 0.130, 0.155, 0.165, 0.080, 0.090, 0.060, 0.110, 0.075
Incluya marcas de clase, frecuencia absoluta, frecuencia absoluta acumulada, frecuencia
relativa y frecuencia relativa acumulada.
Además, grafique un histograma para sus datos utilizando los intervalos calculados.

También podría gustarte