0% encontró este documento útil (0 votos)
390 vistas20 páginas

Tablas de Frecuencia y Histogramas en R

Este documento presenta una práctica sobre tablas de frecuencias y gráficos de histogramas realizada en la Escuela Superior Politécnica del Litoral. La práctica utiliza la base de datos Iris para construir tablas de frecuencias y diagramas de barras sobre variables cualitativas y cuantitativas. También incluye la creación de histogramas y tablas de frecuencias para la variable cuantitativa longitud de pétalos.

Cargado por

Genesis Pluas
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
390 vistas20 páginas

Tablas de Frecuencia y Histogramas en R

Este documento presenta una práctica sobre tablas de frecuencias y gráficos de histogramas realizada en la Escuela Superior Politécnica del Litoral. La práctica utiliza la base de datos Iris para construir tablas de frecuencias y diagramas de barras sobre variables cualitativas y cuantitativas. También incluye la creación de histogramas y tablas de frecuencias para la variable cuantitativa longitud de pétalos.

Cargado por

Genesis Pluas
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 20

ESCUELA SUPERIOR POLITÉCNICA DEL LITORAL

Año: 2020 Periodo: I PAO


Materia: Estadística I

Práctica: Tabla de Frecuencias y Gráficos de histogramas


Fecha: 10 de Junio de 2020 Duración: 60
minutos
Práctica 1. Tablas de Frecuencias, Histograma y Ojiva
Introducción
En la presente práctica se aplican los conceptos de Tablas de Frecuencias para
variables cualitativas y cuantitativas, Gráficos de Histogramas y Ojivas mediante el uso
de comandos de R. Sobre los datos
Empecemos cargando los datos que se requieren para la práctica, para lo cual
utilizaremos la base de datos Iris incorporada por defecto en Rstudio. Iris es un
conjunto de datos de flores que utilizó Ronald Fisher en un artículo publicado en el año
1936. Está formado por 50 muestras de cada una de tres especies de Iris (Iris setosa,
virginica Iris e Iris versicolor) y cuatro características que se tomaron en cada muestra:
longitud, anchura de los sépalos y pétalos medidos en centímetros.
Tema 1. Obtención de datos
Obtenga los datos de la tabla Iris y asígnelo al objeto data, luego extraiga los 3
primeros registros asignados (filas). Muestre los nombres de las columnas extraídas y
haga referencia a la columna Species.
Comandos:

objetoR<- objetoA #sintaxis de asignación de valores y datos


objetoR= objetoA #sintaxis de asignación de valores y datos
head(objetoR,n) #extraer los n primeros registros del objeto R
colnames (objetoR) #visualiza las columnas del objeto R
objetoR$columna #referencia a una columna en particular del objeto R

Solución:
data=iris #Asigna los datos de la base iris al objeto data (tabla de
datos Dataframe)
head(data,3) #visualiza las tres primeras filas del objeto data

## Sepal.Length Sepal.Width Petal.Length Petal.Width Species


## 1 5.1 3.5 1.4 0.2 setosa
## 2 4.9 3.0 1.4 0.2 setosa
## 3 4.7 3.2 1.3 0.2 setosa

colnames(data) #muestra los nombres de las columnas(variables) del


objeto data
## [1] "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width"
"Species"

data$Species #permite referencia a los datos de una columna


Species(variable), el resultado se muestra como un vector

## [1] setosa setosa setosa setosa setosa setosa

## [7] setosa setosa setosa setosa setosa setosa

## [13] setosa setosa setosa setosa setosa setosa

## [19] setosa setosa setosa setosa setosa setosa

## [25] setosa setosa setosa setosa setosa setosa

## [31] setosa setosa setosa setosa setosa setosa

## [37] setosa setosa setosa setosa setosa setosa

## [43] setosa setosa setosa setosa setosa setosa

## [49] setosa setosa versicolor versicolor versicolor


versicolor
## [55] versicolor versicolor versicolor versicolor versicolor
versicolor
## [61] versicolor versicolor versicolor versicolor versicolor
versicolor
## [67] versicolor versicolor versicolor versicolor versicolor
versicolor
## [73] versicolor versicolor versicolor versicolor versicolor
versicolor
## [79] versicolor versicolor versicolor versicolor versicolor
versicolor
## [85] versicolor versicolor versicolor versicolor versicolor
versicolor
## [91] versicolor versicolor versicolor versicolor versicolor
versicolor
## [97] versicolor versicolor versicolor versicolor virginica
virginica
## [103] virginica virginica virginica virginica virginica
virginica
## [109] virginica virginica virginica virginica virginica
virginica
## [115] virginica virginica virginica virginica virginica
virginica
## [121] virginica virginica virginica virginica virginica
virginica
## [127] virginica virginica virginica virginica virginica
virginica
## [133] virginica virginica virginica virginica virginica
virginica
## [139] virginica virginica virginica virginica virginica
virginica
## [145] virginica virginica virginica virginica virginica
virginica
## Levels: setosa versicolor virginica

Tema 2. Obtención de registros


Obtenga los 10 primeros registros de la tabla data y asígnelo en un nuevo objeto
Dataframe de nombre data1. Luego haga referencia a la longitud del pétalo de los
registros seleccionados.
Solución:
Data1=head(data,10)

Data1$Petal.Length

[1] 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5

Tema 3. Tabla de Frecuencia de una variable cualitativa


Elabore una tabla con la distribución de frecuencias de la variable Especie, incorpore
las frecuencias absolutas y relativas asociadas a cada especie.
Comando:

table(datos,exclude) #comando para crear tablas con las frecuencias absolutas, se


puede excluir ciertos valores
prop.table(tabla frecuencia, margin) #permite crear tabla con frecuencias relativas. Por
defecto margin es NULL, si margin es 1 se obtiene marginales por filas, en caso de
marginales por columnas el valor es 2
cbind(columna 1, columna2) #permite unificar columnas en un nuevo objeto

Solución:
tabla1=table(data$Species)
tabla1

##
## setosa versicolor virginica
## 50 50 50

tabla2=table(data$Species, exclude = c("versicolor")) #excluye los


registros de la Specie versicolor
tabla2

##
## setosa virginica
## 50 50
tabla3=prop.table(tabla1) #frecuencias relativas
tabla3

##
## setosa versicolor virginica
## 0.3333333 0.3333333 0.3333333

tablaR=cbind(Absoluta=tabla1,Relativa=tabla3)
tablaR

## Absoluta Relativa
## setosa 50 0.3333333
## versicolor 50 0.3333333
## virginica 50 0.3333333

tablaR=cbind(Abosulta=table(data$Species),
Relativa=prop.table(table(data$Species))) #sintaxis unificada
tablaR

## Abosulta Relativa
## setosa 50 0.3333333
## versicolor 50 0.3333333
## virginica 50 0.3333333

Tema 4. Diagrama de barras


Elabore un diagrama de barras para las frecuencias absolutas de las Especies de iris.
Comando:

barplot(tabla frecuencia, main, xlab) #diagrama de barras, argumentos main permite


asignar título del gráfico y xlab etiqueta eje x

Solución:
barplot(tabla1, main="Diagrama de barras especies de Iris" ,
xlab="Tipos de especies")
Tema 5. Tabla de frecuencia para variable cuantitativa
Elabore una tabla de frecuencias para la variable longitud de pétalos.
Comandos:

hist(x, breaks=‘Sturges’, include.lowest=TRUE, right=FALSE, plot=FALSE)


library(agricolae)
table.freq(hist…)

Solución:
k=nclass.Sturges(data$Petal.Length)
k

## [1] 9

x=range(data$Petal.Length)
amplitud=(x[2]-x[1])/k #amplitud
amplitud

## [1] 0.6555556

hist(data$Petal.Length, breaks =
seq(from=x[1],to=x[2],by=amplitud),include.lowest = T, right = F, plot
= F)
## $breaks
## [1] 1.000000 1.655556 2.311111 2.966667 3.622222 4.277778 4.933333
5.588889
## [9] 6.244444 6.900000
##
## $counts
## [1] 44 6 0 6 17 31 21 19 6
##
## $density
## [1] 0.44745763 0.06101695 0.00000000 0.06101695 0.17288136
0.31525424 0.21355932
## [8] 0.19322034 0.06101695
##
## $mids
## [1] 1.327778 1.983333 2.638889 3.294444 3.950000 4.605556 5.261111
5.916667
## [9] 6.572222
##
## $xname
## [1] "data$Petal.Length"
##
## $equidist
## [1] TRUE
##
## attr(,"class")
## [1] "histogram"

#install.packages("agricolae")
library(agricolae)

## Warning: package 'agricolae' was built under R version 3.6.3

tablaR=table.freq(hist(data$Petal.Length, breaks =
seq(from=x[1],to=x[2],by=amplitud), include.lowest = T, right = F,
plot = F))
tablaR

## Lower Upper Main Frequency Percentage CF CPF


## 1 1.000000 1.655556 1.327778 44 29.3 44 29.3
## 2 1.655556 2.311111 1.983333 6 4.0 50 33.3
## 3 2.311111 2.966667 2.638889 0 0.0 50 33.3
## 4 2.966667 3.622222 3.294444 6 4.0 56 37.3
## 5 3.622222 4.277778 3.950000 17 11.3 73 48.7
## 6 4.277778 4.933333 4.605556 31 20.7 104 69.3
## 7 4.933333 5.588889 5.261111 21 14.0 125 83.3
## 8 5.588889 6.244444 5.916667 19 12.7 144 96.0
## 9 6.244444 6.900000 6.572222 6 4.0 150 100.0

Tema 6. Tabla de frecuencia para variable cuantitativa


Elabore una tabla de frecuencias para la variable longitud de pétalos.
Comandos:

library(fdth) # carla la librería fdth


dist <- fdt(x,breaks=“Sturges”) # calcula la distribución de frecuencias utilizando la
regla Sturges

Solución:
install.packages("fdth") #instlación del paquete
library(fdth)

## Warning: package 'fdth' was built under R version 3.6.3

##
## Attaching package: 'fdth'

## The following objects are masked from 'package:stats':


##
## sd, var

# k<-1 + (3.322*log10(150))
# k
k=nclass.Sturges(data$Petal.Length)
k

## [1] 9

tablaR1=fdt(data$Petal.Length, start = 1, end=6.9, h=(5.9/9), right =


F)
print("\n Tabla de Frecuencias (1) Regla longitud intervalo=end-
star/k")

## [1] "\n Tabla de Frecuencias (1) Regla longitud intervalo=end-


star/k"

tablaR1

## Class limits f rf rf(%) cf cf(%)


## [1,1.66) 44 0.29 29.33 44 29.33
## [1.66,2.31) 6 0.04 4.00 50 33.33
## [2.31,2.97) 0 0.00 0.00 50 33.33
## [2.97,3.62) 6 0.04 4.00 56 37.33
## [3.62,4.28) 17 0.11 11.33 73 48.67
## [4.28,4.93) 31 0.21 20.67 104 69.33
## [4.93,5.59) 21 0.14 14.00 125 83.33
## [5.59,6.24) 19 0.13 12.67 144 96.00
## [6.24,6.9) 5 0.03 3.33 149 99.33

print("*************************************")

## [1] "*************************************"

print("\n Tabla de Frecuencias (2) cantidad de intervalos k por


Sturges")

## [1] "\n Tabla de Frecuencias (2) cantidad de intervalos k por


Sturges"

tablaR2=fdt(data$Petal.Length, k, right = F)
tablaR2
## Class limits f rf rf(%) cf cf(%)
## [0.99,1.654) 44 0.29 29.33 44 29.33
## [1.654,2.319) 6 0.04 4.00 50 33.33
## [2.319,2.983) 0 0.00 0.00 50 33.33
## [2.983,3.647) 6 0.04 4.00 56 37.33
## [3.647,4.312) 19 0.13 12.67 75 50.00
## [4.312,4.976) 29 0.19 19.33 104 69.33
## [4.976,5.64) 27 0.18 18.00 131 87.33
## [5.64,6.305) 14 0.09 9.33 145 96.67
## [6.305,6.969) 5 0.03 3.33 150 100.00

print("*************************************")

## [1] "*************************************"

print("Tabla de Frecuencias (3) Regla Sturges")

## [1] "Tabla de Frecuencias (3) Regla Sturges"

tablaR3=fdt(data$Petal.Length, breaks = "Sturges", right = F)


tablaR3

## Class limits f rf rf(%) cf cf(%)


## [0.99,1.654) 44 0.29 29.33 44 29.33
## [1.654,2.319) 6 0.04 4.00 50 33.33
## [2.319,2.983) 0 0.00 0.00 50 33.33
## [2.983,3.647) 6 0.04 4.00 56 37.33
## [3.647,4.312) 19 0.13 12.67 75 50.00
## [4.312,4.976) 29 0.19 19.33 104 69.33
## [4.976,5.64) 27 0.18 18.00 131 87.33
## [5.64,6.305) 14 0.09 9.33 145 96.67
## [6.305,6.969) 5 0.03 3.33 150 100.00

Obs: Observe que existe una diferencia por precisión entre las Tablas
de Frecuencias obtenida por los comandos hist vs fdt.

Tema 7. Tabla de frecuencia para variable cuantitativa


Elabore una tabla de frecuencias para la variable longitud de pétalos. Considere 5
intervalos simétricos.
x=range(data$Petal.Length) #rango x[1] es el mínimo, x[2] el máximo
k=5 #cantidad de intervalos de clases
amplitud=(x[2]-x[1])/k #amplitud
amplitud

## [1] 1.18

limites=seq(from=x[1], to=x[2], by=amplitud) #secuencia de los


límites de cada intervalo
limites

## [1] 1.00 2.18 3.36 4.54 5.72 6.90


library(agricolae)
tablaR=table.freq(hist(data$Petal.Length, breaks = limites,
include.lowest = T, right = T, plot = F))
tablaR

## Lower Upper Main Frequency Percentage CF CPF


## 1 1.00 2.18 1.59 50 33.3 50 33.3
## 2 2.18 3.36 2.77 3 2.0 53 35.3
## 3 3.36 4.54 3.95 34 22.7 87 58.0
## 4 4.54 5.72 5.13 47 31.3 134 89.3
## 5 5.72 6.90 6.31 16 10.7 150 100.0

Tema 8. Tabla de frecuencia para variable cuantitativa


Elabore una tabla de frecuencias para la variable ancho de pétalos.
Solución:
data$Petal.Width

n = nclass.Sturges(data$Petal.Width)

g = range(data$Petal.Width)

amplitud2 = (g[2]-g[1])/n

limites1 = seq(from =g [1], to = g[2], by= amplitud2)

library(agricolae)

tabla_tema8 = table.freq(hist(data$Petal.Width, breaks = limites1,


include.lowest = T, right = F, plot = F))

tabla_tema8

> tabla_tema8
Lower Upper Main Frequency Percentage CF CPF
1 0.1000000 0.3666667 0.2333333 41 27.3 41 27.3
2 0.3666667 0.6333333 0.5000000 9 6.0 50 33.3
3 0.6333333 0.9000000 0.7666667 0 0.0 50 33.3
4 0.9000000 1.1666667 1.0333333 10 6.7 60 40.0
5 1.1666667 1.4333333 1.3000000 26 17.3 86 57.3
6 1.4333333 1.7000000 1.5666667 16 10.7 102 68.0
7 1.7000000 1.9666667 1.8333333 19 12.7 121 80.7
8 1.9666667 2.2333333 2.1000000 15 10.0 136 90.7
9 2.2333333 2.5000000 2.3666667 14 9.3 150 100.0

Tema 9. Tabla de frecuencia para variable cuantitativa


Elabore una tabla de frecuencias para la variable longitud de sépalo. Considerando 6
intervalos simétricos.
Solución:
g1 = range(data$Sepal.Length)
n1 = 6

amplitudes = (g1[2]-g1[1])/n1

limi = seq(from =g1[1], to = g1[2], by= amplitudes)

library(agricolae)

tabla_tema9 = table.freq(hist(data$Sepal.Length, breaks =limi,


include.lowest = T, right = T, plot = F))

tabla_tema9
Lower Upper Main Frequency Percentage CF CPF
1 4.3 4.9 4.6 22 14.7 22 14.7
2 4.9 5.5 5.2 37 24.7 59 39.3
3 5.5 6.1 5.8 36 24.0 95 63.3
4 6.1 6.7 6.4 35 23.3 130 86.7
5 6.7 7.3 7.0 13 8.7 143 95.3
6 7.3 7.9 7.6 7 4.7 150 100.0

Tema 10. Histograma y polígono de frecuencia


Elabore un histograma y polígono de frecuencia absoluta acumulada asociado a la
variable de longitud de sépalos.
Comando:

hist(x, breaks = “Sturges”) #histograma utilizando el número de clases según Sturges


plot(dist, type=“cfh”) #histograma de frecuencias absoluta acumulada, dist es un
objeto tabla de frecuenca
plot(dist, type=“cfp”) #polígono de frecuencias acumulada, dist es un objeto tabla
frecuencia
fdt(data$Sepal.Length,start=4.3,h=0.72,end=7.9) #crear intervalos acorde a un inicio,
fin y amplitud (h)

Solución:
library(fdth)
dist=fdt(data$Sepal.Length, breaks="Sturges")
hist(data$Sepal.Length, breaks = "Sturges")
#histograma frecuencia relativas (probability Density) se configura
freq=F

hist(data$Sepal.Length, breaks = "Sturges", freq = FALSE)

#curva de la normal
lines(density(data$Sepal.Length), col="blue", lwd=3) # dibujamos la
distribución normal empírica con los datos que tenemos

lines(density(data$Sepal.Length, adjust=2), col="red", lwd=3, lty=2)


#suavizar la curva con adjust entre 1 a 5

abline(v=mean(data$Sepal.Length), lwd=2, lty=3, col="darkblue")


#línea vertical en el valor pemido(promedio)

plot(dist, type="cfh")
plot(dist, type="cfp")

x=range(data$Sepal.Length)
k=(x[2]-x[1])/5
aux=fdt(data$Sepal.Length,start=4.3,h=k,end=7.9) #h=0.72 crea 5
intervalos
plot(aux,type="cfp",xlab="Sépalo longitud",ylab="Frecuencia absoluta
acumulada")
Tema 11. Polígono de frecuencia y Ojiva (segunda forma)
Elabore un polígono de frecuencia y la ojiva asociado a la variable de longitud de
sépalos.
Comandos:

plot(x,y, main="“, xlab=”“, ylab=”") #plotea el punto (x,y), los parámetros main para
especificar título de gráfio, xlab etiqueta eje x, y ylab etiqueta eje y.
sum(x) #suma todos los datos del vector x
cumsum(x) #suma acumulada hasta cada posición del elemento en x, suma acumulada
(Xi)=X1+X2+…+Xi-1

Solución:
tabla=hist(data$Sepal.Length, breaks="Sturges", plot=F)
plot(tabla$mids,tabla$counts, main="Poligono de frecuencia absoluta",
xlab = "Marca de clase")
lines(tabla$mids,tabla$counts, type="l")
plot(tabla$mids,cumsum(tabla$counts), main="Ojiva de frecuencia
absoluta", xlab = "Marca de clase")
lines(tabla$mids,cumsum(tabla$counts), type="l")
plot(tabla$mids,tabla$counts/sum(tabla$counts), main="Poligono de
frecuencia relativa", xlab = "Marca de clase")
lines(tabla$mids,tabla$counts/sum(tabla$counts), type="l")

plot(tabla$mids,cumsum(tabla$counts)/sum(tabla$counts), main="Ojiva de
frecuencia relativa", xlab = "Marca de clase")
lines(tabla$mids,cumsum(tabla$counts)/sum(tabla$counts), type="l")
Tema 12. Resumen
Considerando los datos de data$Sepal.width, realice:
a) Tabla de frecuencias considerando 5 intervalos simétricos

data$Sepal.Width

g2 = range(data$Sepal.Width)

n2 = 5

amplitud4= (g2[2]-g2[1])/n2

limites3 = seq(from =g2[1], to = g2[2], by= amplitud4)

library(fdth)

t_tema12 = table.freq(hist(data$Sepal.Width, breaks = limites3,


include.lowest = T, right = F, plot = F))

t_tema12
> t_tema12
Lower Upper Main Frequency Percentage CF CPF
1 2.00 2.48 2.24 11 7.3 11 7.3
2 2.48 2.96 2.72 46 30.7 57 38.0
3 2.96 3.44 3.20 68 45.3 125 83.3
4 3.44 3.92 3.68 21 14.0 146 97.3
5 3.92 4.40 4.16 4 2.7 150 100.0
b) Histogramas
#Histograma con frecuencia absoluta

library(fdth)

dist=fdt(data$Sepal.Width, breaks="Sturges")

hist(data$Sepal.Width, breaks="Sturges")

#histograma con frecuencia relativa

hist(data$Sepal.Width, breaks="Sturges", freq = F)


c) Polígono de frecuencia
#Polígono de frecuencia absoluta

tabla1=hist(data$Sepal.Width, breaks="Sturges", plot=F)

plot(tabla1$mids,tabla1$counts, main="Poligono de frecuencia


absoluta", xlab = "Marca de clase")

lines(tabla1$mids,tabla1$counts, type="l")

#Polígono de frecuencia relativa

plot(tabla1$mids,tabla1$counts/sum(tabla1$counts), main="Poligono de
frecuencia relativa", xlab = "Marca de clase")

lines(tabla1$mids,tabla1$counts/sum(tabla1$counts), type="l")
d) Ovija
#Ovija de frecuencia absoluta

plot(tabla1$mids,cumsum(tabla1$counts), main="Ojiva de frecuencia


absoluta", xlab = "Marca de clase")

lines(tabla1$mids,cumsum(tabla1$counts), type="l")

#Ovija de frecuencia relativa

plot(tabla1$mids,cumsum(tabla1$counts)/sum(tabla1$counts), main="Ojiva
de frecuencia relativa", xlab = "Marca de clase")

lines(tabla1$mids,cumsum(tabla1$counts)/sum(tabla1$counts), type="l")

También podría gustarte