Está en la página 1de 11

Universidad Nacional de San Agustín

Facultad de Ingeniería de Procesos


Escuela Profesional de Ingeniería de
Procesos

Práctica 02

Asignatura: Métodos Estadísticos para la


Investigación

Docente: Antonio Ernesto Durand Gamez

Estudiante: Paulo César Chilo Coricaza


UNIVERSIDAD NACIONAL DE SAN AGUSTIN DE ARE✞UIPA – PERU
Facultad de Ingeniería de Procesos
Esc. Profesional de Ingeniería en Industrias Alimentarias

Formato para prácticas de laboratorio Informático

PLAN DE CODIGO
CARRERA NOMBRE DE LA UNIDAD DE APRENDIZAJE
ESTUDIO ASIGNATURA
Industrias
2017 1703136 Estadística Básica
Alimentarias

PRÁCTICA LABORATORIO DURACIÓN


MÉTODOS ESTADISTICOS PARA LA INVESTIGACION
No. DE (HORAS)
NOMBRE DE Construcción de tabla de distribución de frecuencias
02 LA PRÁCTICA agrupada en RStudio. 2

1. INTRODUCCIÓN
Al momento de tratar con datos, el método más útil de organizar, resumir e interpretar de manera más
rápida y eficiente estos datos es construyendo tablas de frecuencias, estas forma de presentar la
informacion resume la cantidad de veces que una variable toma un valor determinado. Para el caso
variables cuantitativas se construye tablas de frecuencias agrupadas por intervalos y aunque es lo más
usual, no necesariamente las clases deben tener la misma amplitud (Triola 2000).

2. OBJETIVO (COMPETENCIA)
- construya una tabla de distribución de frecuencias agrupada
- Compare los resultados obtenidos por las reglas de Sturges (1926), Scott (1985)
y Freedman & Diaconis (1981) al momento de generar histogramas

3. FUNDAMENTO
Existen diferentes fórmulas propuestas para la determinación del número de clases
a trabajar dentro de estas están la propuestas por Sturges (1926), por Scott (1985)
y Freedman & Diaconis (1981). A menudo encontramos el problema cuando la
densidad de la variable de interés es desconocida. Un método popular de estimar la
densidad desconocida es utilizando el estimador de Histograma, El histograma es el
gráfico estadístico por excelencia. El histograma de un conjunto de datos es un
gráfico de barras que representan las frecuencias con que aparecen las mediciones
agrupadas en ciertos rangos o intervalos y donde la altura de cada barra representa
la frecuencia o cantidad de datos dentro de cada intervalo. La idea de agrupar datos
en forma de histogramas se conoce desde 1662 con el trabajo de Graunt. Sin
embargo, es hasta 1926 cuando aparecen las primeras reglas sobre su contrucción
con la fórmula de Sturges para determinar el número de barras (Correa & Gónzales
. 2002) existen otros métodos para seleccionar la cantidad de intervalos, tales como
los propuestos por Scott (1985) y Freedman & Diaconis (1981). De acuerdo a Correa
& Castrillón (2010).

4. PROCEDIMIENTO (DESCRIPCIÓN)
A) E✞UIPO NECESARIO MATERIAL DE APOYO
Computadora Bibliografía básica
Software Especializado RStudio

B) DESARROLLO DE LA PRÁCTICA
b.1 elaborar un programa o rutina que construya una tabla de distribución de
frecuencias agrupada (usando inicialmente “Sturges” para obtener el número de
clases) donde se refleje los límites de clase (inferior y superior), las marcas de
clase, la frecuencia absoluta, la frecuencia acumulada, la frecuencia relativa y
frecuencia relativa acumulada. Así como su histograma y el polígono de
frecuencias (ambos en un mismo plano) y la ojiva.

Rutina Uno
histograma = function(X, which = 1) {
if (which == 1)
{
k = nclass.Sturges(X)
} #Si which = 1, calcula Histograma y Tabla de Frecuencia con Sturge
s.
if (which == 2)
{
k = nclass.scott(X)
} #Si which = 2, calcula Histograma y Tabla de Frecuencia con Scott.
if (which == 3)
{
k = nclass.FD(X)
} #Si which = 3, calcula Histograma y Tabla de Frecuencia con Freedm
an.
Rango = ceiling(max(X) - min(X))#Cálculo rango
a = round(Rango/k, 1) #Cálculo ancho de clase.
c = abs(round(a * k - Rango, 1))

LimClasInf = numeric(k) #Cálculo límites de clase inferiores


LimClasInf[1] = min(X) - c/2
for (i in 2:k) {
LimClasInf[i] = LimClasInf[i - 1] + a
}
LimClasInf = round(LimClasInf, 2)

LimClasSup = numeric(k) #Cálculo limites de clase superiores


LimClasSup[1] = LimClasInf[1] + a
for (i in 2:k) {
LimClasSup[i] = LimClasSup[i - 1] + a
}
LimClasSup = round(LimClasSup, 2)

MarClas = numeric(k) #Cálculo marcas de clase


for (i in 1:k) {
MarClas[i] = (LimClasInf[i] + LimClasSup[i])/2
}
MarClas = round(MarClas, 2)

Freq = numeric(k)
for (i in 1:k) {
Freq[i] = length(X[X >= LimClasInf[i] & X < LimClasSup[i]])
}
FreqAc = cumsum(Freq) #Cálculo Frecuencias Acumuladas
Rel = round(Freq/sum(Freq), 4) #Cálculo Frecuencias Relativas
RelAc = round(cumsum(Rel), 4) #Cálculo de Frecuencias Relativas Acumulad
as

# Tabla de Frecuencias
TabFreq = data.frame(LimClasInf, LimClasSup, MarClas, Freq, FreqAc, Rel,
RelAc)
print(TabFreq)

par(mfrow = c(1, 2))

# Histograma con Polígono de Frecuencias


TabFreq.bar = barplot(TabFreq$Freq, space = 0, font = 2, col.main = "dark
green",
main = "Histograma y Polígono de Frecuencias", xlab = "Datos", ylab =
"Frecuencias",
names.arg = MarClas, col = terrain.colors(8))
lines(x = TabFreq.bar, y = TabFreq$Freq, col = "red")
points(x = TabFreq.bar, y = TabFreq$Freq, col = "red")
# Generando Ojiva
plot(TabFreq$MarClas, TabFreq$RelAc, col = "red", ylab = "Frecuencias Rel
ativas Acumuladas",
xlab = "Datos")
lines(TabFreq$MarClas, TabFreq$RelAc, col = "red")
title(main = "Ojiva", col.main = "darkgreen")
}

Rutina Dos

DF <- function(y, which = 1, V = TRUE) {


# y vector
library(grDevices) #opcional , paquete para dispositivos gráficos y soport
e para colores y fuentes
if (V == TRUE) {
if (which == 1) {
k <- nclass.Sturges(y)
} else if (which == 2) {
k <- nclass.scott(y)
} else {
k <- nclass.FD(y)
}

H = hist(y, k, ylim = c(0, length(y) * 0.5), col = 3, col.main = "darkgr


een",
main = "Histograma", xlab = "Intervalo") #objeto Histograma
lines(c(min(H$breaks), H$mids, max(H$breaks)), c(0, H$counts, 0), type =
"l",
col = 2)

T1 = cbind(H$breaks[1:length(H$mids)], H$breaks[2:length(H$breaks)],
H$mids[1:length(H$mids)], H$counts) # matriz con los intervalo, pto
s medios y frecuencia
colnames(T1) <- c("Linf", "Lsup", "Marca_c", "frec")
T1 = transform(T1, F_acum = cumsum(frec), Rel. = round(prop.table(frec),
3))
T1 = transform(T1, Rel_acum = cumsum(Rel.))
T1 = transform(T1, Porc_Acum = Rel_acum * 100) # Tabla distribución de
frecuencia
plot(H$breaks, c(0, T1[, 8]), type = "o", col.main = "darkgreen", main =
"Ojiva",
xlab = "Limites", ylab = "Relativa Acum(%)", col = 2) # ojiva
grid(20) # división con linea para la ojiva
print("Tabla Distribución de Frecuencia")
print(T1)

} else {
par(mfrow = c(1, 3))

H1 = hist(y, nclass.Sturges(y), ylim = c(0, 0.15), col = 5, plot = T,


col.main = "darkgreen", main = "Sturges", freq = F)
curve(dnorm(x, 20, 5), add = TRUE, col = 2)
legend("topright", text.col = "red", bty = "n", legend = expression(past
e(mu,
"= 20, ", sigma, "= 5,")))
H2 = hist(y, nclass.scott(y), ylim = c(0, 0.15), col = 5, plot = T,
col.main = "darkgreen", main = "Scott", freq = F)
curve(dnorm(x, 20, 5), add = TRUE, col = 2)
H3 = hist(y, nclass.FD(y), ylim = c(0, 0.15), col = 5, plot = T, col.mai
n = "darkgreen",
main = "Freedman- Diaconis", freq = F)
curve(dnorm(x, 20, 5), add = TRUE, col = 2)
}
}

Probamos los código con datos simulados.

set.seed(3211)
X=round(rnorm(200,20,5),1)
histograma(X) # Rutina 1

DF(X) # Rutina 2

Ahora, de su rutina anterior cambie el argumento “breaks” dentro de la


función hist por las fórmulas para obtener el número de clases (número de barras)
desarrolladas por Scott y Freedman- Diaconis, con el fin de comparar sus
resultados. En esta parte para establecer diferencias podría tener en cuenta el
tamaño de la muestra (por ejemplo creando un vector aleatorio de distribución
normal de media 20 y desviación estándar 5 redondeado a un lugar decimal para
n=20, n=30, n= 50 y n=100), por otro lado incluya datos atípicos (por ejemplo uno
dentro de cada vector numérico anterior). De todo el análisis previo ¿Cuál de ellos
ofrece la forma de distribución más estable? Justifique todo su análisis
estadísticamente.

Generamos muestras de tamaños n=20n=20, n=30n=30, n=50n=50 y n=100n=100 y


que tengan la posibilidad de incluir datos atípicos y comparamos con la rutina DF

set.seed(121)
x1=round(rnorm(20,20,5),1)
n_20=round(sample(c(x1,20-3.5*sd(x1),20+3.5*sd(x1)),20,prob = c(rep(0.8,20),0.7,
0.6)),1)

x2=round(rnorm(30,20,5),1)
n_30=round(sample(c(x2,20-3.5*sd(x2),20+3.5*sd(x2)),30,prob = c(rep(0.8,30),0.6,
0.6)),1)

x3=round(rnorm(50,20,5),1)
n_50=round(sample(c(x3,20-3.5*sd(x3),20+3.5*sd(x3)),50,prob = c(rep(0.8,50),0.8,
0.8)),1)

x4=round(rnorm(100,20,5),1)
n_100=round(sample(c(x4,20-3.5*sd(x4),20+3.5*sd(x4)),100,prob = c(rep(0.8,100),0
.9,0.9)),1)

DF(n_20,V=FALSE)

DF(n_30,V=FALSE)

DF(n_50,V=FALSE)

DF(n_100,V=FALSE)
C) CÁLCULOS Y REPORTE

RESULTADOS RUTINA 1
RESULTADOS RUTINA 2
DF(X)

RESULTADOS
DF(n_20,V=FALSE)

DF(n_30,V=FALSE)
DF(n_50,V=FALSE)

DF(n_100,V=FALSE)

5. Referencias bibliográficas.
- Scott, D.W. (1979) On optimal and data-based histograms. Biometrika, 66, 605-610.
- Sturges, H. (1926) The choice of a class-interval. J. Amer. Statist. Assoc., 21, 65-66
- Freedman, D. and Diaconis, P. (1981) On this histogram as a density estimator: L2 theory. Zeit. Wahr. ver.
Geb., 57, 453-476.
Envié el archivo en el drive donde generó su carpeta y codifique como archivo: Practica0#_ Apellidos_nombres

También podría gustarte