getwd()[1] "C:/Users/MINEDUCYT/OneDrive/AÑO 2024/UNIVERSIDAD DE EL SALVADOR/programacion en R/archivos de quartodoc"
getwd()[1] "C:/Users/MINEDUCYT/OneDrive/AÑO 2024/UNIVERSIDAD DE EL SALVADOR/programacion en R/archivos de quartodoc"
creamos el vector de notas
Notas <- c(4.47, 4.47,3.48, 2.29, 3.15, 5.3,4.5, 5.9, 3.2, 4.8, 5.8, 4.32, 6, 5, 3.4, 4.6, 5.8, 5.9, 2.4,2.5); Notas [1] 4.47 4.47 3.48 2.29 3.15 5.30 4.50 5.90 3.20 4.80 5.80 4.32 6.00 5.00 3.40
[16] 4.60 5.80 5.90 2.40 2.50
Guardamos el vector de las 20 notas en formato txt
write(Notas, "Notas.txt") llamamos al vector notas
X <- scan("Notas.txt", what = double(0), na.strings = "NA", flush=FALSE) # Define el número k de los intervalos o clases.
# Usa el Método de Herbert A. Sturges para determinar dicho número.
n <- length(X); n[1] 20
k <- 1+3.322*logb(n, 10); k[1] 5.322022
k <- round(k); k [1] 5
rango <- max(X)-min(X); rango[1] 3.71
a=rango/k; a[1] 0.742
a <- round(a, 3); a[1] 0.742
# Define los límites y puntos medios de cada uno de los k intervalos
limites <- seq(from=min(X)-0.01/2, to=max(X)+0.01/2, by=a); limites[1] 2.285 3.027 3.769 4.511 5.253 5.995
options(digits=4)
ci <- cbind(1:k); ci [,1]
[1,] 1
[2,] 2
[3,] 3
[4,] 4
[5,] 5
for(i in 2:length(limites)) ci[i-1, 1] <- (limites[i] + limites[i-1])/2
ci [,1]
[1,] 2.656
[2,] 3.398
[3,] 4.140
[4,] 4.882
[5,] 5.624
# Encuentra las frecuencias absolutas fi para cada intervalo.
options(digits=2)
fi <- cbind(table(cut(X, breaks = limites, labels=NULL, include.lowest=FALSE,
right=FALSE, dig.lab=4))); fi [,1]
[2.285,3.027) 3
[3.027,3.769) 4
[3.769,4.511) 4
[4.511,5.253) 3
[5.253,5.995) 5
breaks es un vector o secuencia de cortes 1:6, o el número de clases.
labels indica que no hay nombres para los intervalos o clases, por defecto las etiquetas tienen la notación (a, b].
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 número de dígitos usado en el formato de números de cortes.
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=" 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# h es un objeto del tipo lista que contiene atributos del histograma
is.list(h); h [1] TRUE
$breaks
[1] 1.5 2.3 3.0 3.8 4.5 5.3 6.0 6.7
$counts
[1] 0 3 4 4 3 5 1
$density
[1] 0.000 0.202 0.270 0.270 0.202 0.337 0.067
$mids
[1] 1.9 2.7 3.4 4.1 4.9 5.6 6.4
$xname
[1] "X"
$equidist
[1] TRUE
attr(,"class")
[1] "histogram"