# Ecco che cosa sta dietro a quanto ottenuto richiamando daticlas.txt.
#
# Se dispongo di dati già classificati, in intervalli di diversa ampiezza,
# come i seguenti, relativi alla distribuzione dell'età dei morti in Italia
# nel 1951: negli intervalli di età [0,5), [5,10), [10,20), [20,30), [30,40),
# [40,50), [50,60), [60,75), [75,100) sono morte 729, 35, 77, 132, 134, 285,
# 457, 1401, 1569 migliaia di persone, basta che compili le prime due righe
# seguenti:
mor <- c(729,35,77,132,134,285,457,1401,1569)
interv <- c(0,5,10,20,30,40,50,60,75,100) # un dato in piu' di freq
totale <- sum(mor); fr_perc <- mor/totale*100; fr_perc
[1] 15.1276198 0.7262918 1.5978419 2.7391575 2.7806599 5.9140901 9.4832953
[8] 29.0724217 32.5586221
# Per arrotondare portando i dati 0.7262... a 0.73 posso usare:
print(fr_perc,digits=2)
[1] 15.13 0.73 1.60 2.74 2.78 5.91 9.48 29.07 32.56
# Poi copio le righe seguenti (senza preoccuparmi dei dettagli):
# datiN trasforma una popolaz. di dati (pop) classificati in intervalli (int)
# in N=100mila dati singoli a cui applicare poi i comandi standard di R
datiN <- function(pop,int) { N <- 1e5;
tot <- sum(pop); fr_perc <- pop/tot*100; rap <- N/sum(pop); fr <- pop*rap;
n <- length(fr); dat <- c(seq(int[1],int[2],by=(int[2]-int[1])/fr[1]));
for (i in 2:n) {dat <- c(dat,seq(int[i],int[i+1],by=(int[i+1]-int[i])/fr[i]))}; dat}
dati <- datiN(mor,interv)
# sono intervalli aperti a destra:
hist(dati,interv,right=FALSE)
# variante:
hist(dati,interv,right=FALSE,ylim=c(0,0.035),main="",xlab="")
abline(h=c(0.01,0.02,0.03), lty=3)
# altre possibilità di etichettatura
hist(dati,interv,right=FALSE,col="yellow",axes=FALSE)
axis(1,pos=0,col="blue",label=TRUE, at=c(0,5,10,20,30,40,50,60,75,100))
axis(2,pos=0,col="blue",label=TRUE, at=c(0.005,0.01,0.015,0.02,0.025,0.03))
#
summary(dati)
Min. 1st Qu. Median Mean 3rd Qu. Max.
0.00 43.43 66.00 58.32 80.80 100.00
# essendo dati approssimati conviene che li arrotondi agli interi
# (43, 66, 58, 81) o ai decimi (43.4, 66.0, 58.3, 80.8)
plot(ecdf(dati))