Está en la página 1de 6

UNIVERSIDAD DE EL SALVADOR

FACULTAD DE CIENCIAS NATURALES Y MATEMTICA


ESCUELA DE MATEMTICA
DEPARTAMENTO DE ESTADTICA
ASIGNATURA: ESTADSTICA GENERAL-PROBABILIDAD Y ESTADISTICA,
CICLO: I-2014.
UNIDAD 2-ANLISIS ESTADSTICO DE DATOS UNIVARIADOS

Prctica 02-Anlisis estadstico de una variable continua, con el R.


Ejemplo:
En cierta Facultad de la UES, para estudiar el examen de nuevo ingreso se
selecciona aleatoriamente una muestra de 60 aspirantes, las notas obtenidas fueron
las siguientes:

4.47
3.6
5.3
4.14
3.96
3.69

4.47
3.75
4.16
4.8
3.54
3.3

3.48
4.5
4.56
4.1
4.8
2.85

5.0
2.85
3.54
3.83
4.3
5.25

3.42
3.7
3.5
3.6
3.39
4.68

3.78
4.2
5.2
2.98
4.47
4.04

3.1
3.2
4.71
4.32
3.19
4.44

3.57
4.05
3.7
5.1
3.75
5.43

4.2
4.9
4.78
4.3
3.1
3.04

4.5
5.1
4.14
3.9
4.7
2.95

Anlisis estadstico de los datos.


1) Activar el directorio de trabajo
getwd()
setwd("C:/nombre")
2) Crear un nuevo Script y llamarle "Script02-DatosContinuos"
3) Crear el vector de datos de la variable X=notas aspirantes
X <- c(4.47, 4.47, 3.48, 5.00, 3.42, 3.78, 3.10, 3.57, 4.20,
3.60, 3.75, 4.50, 2.85, 3.70, 4.20, 3.20, 4.05, 4.90,
5.30, 4.16, 4.56, 3.54, 3.50, 5.20, 4.71, 3.70, 4.78,
4.14, 4.80, 4.10, 3.83, 3.60, 2.98, 4.32, 5.10, 4.30,
3.96, 3.54, 4.80, 4.30, 3.39, 4.47, 3.19, 3.75, 3.10,
3.69, 3.30, 2.85, 5.25, 4.68, 4.04, 4.44, 5.43, 3.04,
[1] 4.47 4.47 3.48
[16] 4.20 3.20 4.05
[31] 4.14 4.80 4.10
[46] 4.47 3.19 3.75
length(X);
[1] 60length(X)

5.00
4.90
3.83
3.10

3.42
5.10
3.60
4.70

3.78
5.30
2.98
3.69

3.10
4.16
4.32
3.30

3.57
4.56
5.10
2.85

4.20
3.54
4.30
5.25

4.50
3.50
3.90
4.68

3.60
5.20
3.96
4.04

a nuevo ingreso
4.50,
5.10,
4.14,
3.90,
4.70,
2.95); X

3.75
4.71
3.54
4.44

4.50
3.70
4.80
5.43

2.85
4.78
4.30
3.04

3.70
4.14
3.39
2.95

4) Guardar el vector de datos en un archivo.


write(X, "Notas.txt")
5) Limpiar el rea de trabajo (Workspace)
ls()
rm(list=ls(all=TRUE))
ls()
6) Leer o recuperar el vector de datos o archivo de texto
X <- scan("Notas.txt", what = double(0), na.strings = "NA", flush=FALSE)
ls()
# Si el vector contiene caracteres se usa: what = character()
# Si el vector contiene valores reales se ocupa: what = double(0)
7) Grficar el diagrama de tallo y hojas (stem-and-leaf)
Estadstica I-Prctica 02, Escuela de Matemtica-UES, Pgina 1 de 6

stem(X, scale = 1)
The decimal point is at the |
2
3
3
4
4
5

|
|
|
|
|
|

99
0001122344
555566677788889
0001112223334
5555567778889
0112334

8) # Crear la tabla de frecuencias


# Definir los k intervalos o clases.
# Determinar el nmero de intervalos k, por el Mtodo de Herbert A. Sturges
k <- 1+3.322*logb(n, 10); k
[1] 6.907018
k <- round(k); k
[1] 7
# Calcular el ancho o amplitud a de cada intervalo a=rango/k
rango <- max(X)-min(X); rango
[1] 2.58
a=rango/k; a
[1] 0.3685714
a <- round(a, 2); a
[1] 0.37
limites <- seq(from=min(X)-0.01/2, to=max(X)+0.01/2, by=a); limites
[1] 2.845 3.215 3.585 3.955 4.325 4.695 5.065 5.435
options(digits=4)
ci <- cbind(1:k); ci
[,1]
[1,]
1
[2,]
2
[3,]
3
[4,]
4
[5,]
5
[6,]
6
[7,]
7
for(i in 2:length(limites)) ci[i-1, 1] <- (limites[i] + limites[i-1])/2
ci
[,1]
[1,] 3.03
[2,] 3.40
[3,] 3.77
[4,] 4.14
[5,] 4.51
[6,] 4.88
[7,] 5.25
# Encontrar la frecuencia absoluta fi
options(digits=2)
fi <- cbind(table(cut(X, breaks = limites, labels=NULL, include.lowest=FALSE,
right=FALSE, dig.lab=4))); fi
[,1]
[2.845,3.215)
9
[3.215,3.585)
8
[3.585,3.955)
10
[3.955,4.325)
12
[4.325,4.695)
8
[4.695,5.065)
7
[5.065,5.435)
6
# breaks es un vector o secuencia de cortes 1:6, o el nmero de clases
# labels indica que no hay nombres para los intervalos o clases, por
# defecto las etiquetas tienen la notacin (a, b]
Estadstica I-Prctica 02, Escuela de Matemtica-UES, Pgina 2 de 6

#
#
#
#
#
#

include.lowest indica que si un X[i] es igual al corte inferior (0


superior, para right=FALSE) el valor debe ser incluido
right indica que s el intervalo debe ser cerrado a la derecha y abierto
a la izquierda, o viceversa.
dig.lab es un entero el cual es usado cuando las etiquetas no son dadas,
determina el nmero de dgitos usado en el formato de nmeros de cortes.
options(digits=4)
fri <- fi/n; fri

[,1]
[2.845,3.215) 0.1500
[3.215,3.585) 0.1333
[3.585,3.955) 0.1667
[3.955,4.325) 0.2000
[4.325,4.695) 0.1333
[4.695,5.065) 0.1167
[5.065,5.435) 0.1000
# Frecuencia acumulada ascendente
options(digits=2)
Fi <- cumsum(fi); Fi
[1] 9 17 27 39 47 54 60
options(digits=4)
Fri <- Fi/n; Fri
[1] 0.1500 0.2833 0.4500 0.6500 0.7833 0.9000 1.0000
# Creacin de la tabla de frecuencias completa
tabla <- data.frame(ci=ci, fi=fi, fri=fri, Fi=Fi, Fri=Fri); tabla
ci fi
fri Fi
Fri
[2.845,3.215) 3.03 9 0.1500 9 0.1500
[3.215,3.585) 3.40 8 0.1333 17 0.2833
[3.585,3.955) 3.77 10 0.1667 27 0.4500
[3.955,4.325) 4.14 12 0.2000 39 0.6500
[4.325,4.695) 4.51 8 0.1333 47 0.7833
[4.695,5.065) 4.88 7 0.1167 54 0.9000
[5.065,5.435) 5.25 6 0.1000 60 1.0000
9) Crear el histograma de frecuencias
h <- hist(X, breaks=c(limites[1]-a, limites, limites[k+1]+a), freq = TRUE,
probability = FALSE, include.lowest = FALSE,right = TRUE, main = "Histograma
de frecuencias", col="lightyellow", lty=1, border="purple", xlab="X = Notas
de aspirantes", ylab="Frecuencia (fi)", axes=TRUE, labels=FALSE)
text(h$mids, h$density, h$counts, adj=c(0.5, -0.5), col="red")
rug(jitter(X)) # adiciona marcas de los datos

Estadstica I-Prctica 02, Escuela de Matemtica-UES, Pgina 3 de 6

# h es objeto del tipo lista que contiene atributos del histograma


h
# Aproximacin de la funcin de densidad normal al histograma
h <- hist(X, breaks=c(limites[1]-a, limites, limites[k+1]+a), freq = FALSE,
probability = TRUE, include.lowest = FALSE, right = TRUE,
main="Aproximacin a una Normal\n", col="lightyellow",lty=1,border="purple",
xlab="X = Notas de aspirantes\n", ylab="Frecuencia relativa (fri)",
axes=TRUE, labels=FALSE)
text(h$mids, h$density, h$counts, adj=c(0.5, 0.2), col="red")
rug(jitter(X)) # adiciona marcas de los datos
curve(dnorm(x, mean=mean(X), sd=sd(X)), col = 2, lty = 2,lwd = 2, add = TRUE)

10) Crear el polgono de frecuencias


h <- hist(X, breaks=c(limites[1]-a, limites, limites[k+1]+a), freq = TRUE,
probability=FALSE, include.lowest=FALSE,right=TRUE,
main = "Polgono de frecuencias",col="lightyellow", lty=1,
border="purple", xlab="X = Notas de aspirantes",
ylab="Frecuencia (fi)", axes=TRUE, labels=FALSE)
text(h$mids, h$density, h$counts, adj=c(0.5, -0.5), col="red")
rug(jitter(X)) # adiciona marcas de los datos
vCi <- c(h$mids[1]-a, h$mids, h$mids[k+1]+a); vCi
vfi <- c(0, h$counts, 0); vfi
lines(vCi, vfi, col="blue", type="l")

Estadstica I-Prctica 02, Escuela de Matemtica-UES, Pgina 4 de 6

11) Crear la Ojiva ascendente o polgono de frecuencias acumuladas ascendente


Fia <- c(0, Fi); Fia
plot(limites, Fia, type = "p", pch=1, col = "blue", main="Ojiva ascendente",
xlab="X = notas de aspirantes", ylab="Frecuencia acumulada (Fia)")
text(limites, h$density, Fia, adj=c(0.5, -0.5), col="red")
lines(limites, Fia, col="black", type="l")

12) Calcular los estadsticos descriptivos de la variable


# Creacin de tabla basada en Ci, marcas de clase, para calcular estadsticos
tabEstad <- data.frame(ci=ci, fi=fi, fri=fri, Fi=Fi, Fri=Fri, cifi=ci*fi,
ciMedia=ci-sum(ci*fi)/n, ciMedia2=(ci-sum(ci*fi)/n)^2,
ciMedia2fi=(ci-sum(ci*fi)/n)^2*fi, ciMedia3=(ci-sum(ci*fi)/n)^3,
ciMedia3fi=(ci-sum(ci*fi)/n)^3*fi, ciMedia4=(ci-sum(ci*fi)/n)^4,
ciMedia4fi=(ci-sum(ci*fi)/n)^4*fi)
tabEstad
ci fi
fri Fi
Fri cifi ciMedia ciMedia2 ciMedia2fi
[2.845,3.215) 3.03 9 0.1500 9 0.1500 27.27 -1.02983 1.060557
9.54501
[3.215,3.585) 3.40 8 0.1333 17 0.2833 27.20 -0.65983 0.435380
3.48304
[3.585,3.955) 3.77 10 0.1667 27 0.4500 37.70 -0.28983 0.084003
0.84003
[3.955,4.325) 4.14 12 0.2000 39 0.6500 49.68 0.08017 0.006427
0.07712
[4.325,4.695) 4.51 8 0.1333 47 0.7833 36.08 0.45017 0.202650
1.62120
[4.695,5.065) 4.88 7 0.1167 54 0.9000 34.16 0.82017 0.672673
4.70871
[5.065,5.435) 5.25 6 0.1000 60 1.0000 31.50 1.19017 1.416497
8.49898
ciMedia3 ciMedia3fi ciMedia4 ciMedia4fi
[2.845,3.215) -1.0921966 -9.829770 1.1247805 1.012e+01
[3.215,3.585) -0.2872783 -2.298226 0.1895558 1.516e+00
[3.585,3.955) -0.0243470 -0.243470 0.0070566 7.057e-02
[3.955,4.325) 0.0005152
0.006182 0.0000413 4.956e-04
[4.325,4.695) 0.0912263
0.729810 0.0410670 3.285e-01
[4.695,5.065) 0.5517043
3.861930 0.4524895 3.167e+00
[5.065,5.435) 1.6858671 10.115203 2.0064629 1.204e+01
# Calculo de la moda
options(digits=4)
for(i in 1:k) if (fi[i] == max(fi)) break()
if(i > 1) moda <- limites[i]+((fi[i]-fi[i-1])/((fi[i]-fi[i-1])+(fi[i]-fi[i+1])
))*a else moda <- limites[i]+(fi[i]/(fi[i]+(fi[i]-fi[i+1])))*a
moda
[1] 4.078

Estadstica I-Prctica 02, Escuela de Matemtica-UES, Pgina 5 de 6

# Calculo de los cuartiles


Q <- 1:3
for(v in 1:3) for(i in 1:k) if (Fi[i] > (v*25*n)/100) {
Q[v] <- limites[i]+(((25*v*n/100)-Fi[i-1])/fi[i])*a; break}
estadisticos <- rbind(Sumacifi=sum(tabEstad$cifi), media=sum(tabEstad$cifi)/n,
moda=moda, Q1=Q[1], Q2=Q[2], Q3=Q[3],
Rango=max(X)-min(X), SumaciMedia2fi=sum(tabEstad$ciMedia2fi),
varianza=sum(tabEstad$ciMedia2fi)/n, S=sqrt(sum(tabEstad$ciMedia2fi)/n),
CV=sqrt(sum(tabEstad$ciMedia2fi)/n)/(sum(tabEstad$cifi)/n),
SumaciMedia3fi=sum(tabEstad$ciMedia3fi),
CAfisher=(sum(tabEstad$ciMedia3fi)/n)/sqrt(sum(tabEstad$ciMedia2fi)/n)^3,
SumaciMedia4fi=sum(tabEstad$ciMedia4fi),
CC=((sum(tabEstad$ciMedia4fi)/n)/sqrt(sum(tabEstad$ciMedia2fi)/n)^4)-3)
estadisticos
[,1]
Sumacifi
0.0000
media
4.0598
moda
4.0783
Q1
3.4925
Q2
4.0475
Q3
4.6025
Rango
2.5800
SumaciMedia2fi 28.7741
varianza
0.4796
S
0.6925
CV
0.1706
SumaciMedia3fi 2.3417
CAfisher
0.1175
SumaciMedia4fi 27.2453
CC
-1.0256
11)Otros grficos:
boxplot(X, main="Grfico de caja", xlab="X = Notas", notch=FALSE,
data=parent.frame(), plot=TRUE, border="red", col="yellow",horizontal=TRUE)

Estadstica I-Prctica 02, Escuela de Matemtica-UES, Pgina 6 de 6

También podría gustarte