Nella tabella a lato sono riportati gli esiti dei rilevamenti della pressione
arteriosa massima in un gruppo di maschi quarantenni (nella colonna 1 i valori, nella 2 le frequenze assolute).
I dati sono espressi in millimetri di mercurio (mm Hg) e arrotondati alle cinquine. Determiniamone mediana, distanza interquartile, media, varianza e s.q.m.. |
| ||||||||||||||||||||||||||||||||||||||
Ecco la soluzione con il programma R: |
Primo modo:
pressio1 <- seq(95,180,5) fr <- c(1,1,2,3,5,6,10,15,21,19,14,13,8,5,4,3,3,2) pressio <- rep(pressio1, fr) hist(pressio) dev.new() hist(pressio,probability=TRUE) # scelgo un n. di classi maggiore, "circa" 20: hist(pressio,probability=TRUE,nclass=20,col="yellow") abline(h=axTicks(2),lty=3) summary(pressio) # Min. 1st Qu. Median Mean 3rd Qu. Max. # 95.0 130.0 140.0 139.3 150.0 180.0 IQR(pressio) # 20 varianza <- function(dati) sum((dati-mean(dati))^2)/length(dati) sqm <- function(dati) sqrt(varianza(dati)) varianza(pressio); sqm(pressio) # 266.8587 16.33581 dev.new() boxplot(pressio,horizontal=TRUE,range=0,col="yellow")
Secondo modo (in cui suppongo che i dati siano distribuiti negli intervallini: è un procedimento un po' più complesso).
pressio <- seq(95,180,5)
fr <- c(1,1,2,3,5,6,10,15,21,19,14,13,8,5,4,3,3,2)
# Costruisco gli intervalli [92.5,97.5),...,[177.5,182.5)
interv <- pressio-2.5; interv <- c(interv,182.5)
num_int <- length(fr)
# uso (a scatola nera) questo procedimento
freq <- fr
source("http://macosa.dima.unige.it/R/daticlas.txt")
# Min. 1st Qu. Median Mean 3rd Qu. Max.
# 92.5 129.4 138.4 139.3 149.1 182.5
abline(v=axTicks(1),lty=3)
dev.new()
boxplot(XxXx,horizontal=TRUE,range=0)
# La deviazione standard è 16.4:
IQR(XxXx); sd(XxXx)
# 19.71844 16.40055