Solutions des TPs
655
La classe modale est la classe ]155; 160].
9.4- median(chocol)
Notez que si la variable ´ etudi´ ee est consid´ er´ ee comme une variable ordinale, alors la fonction median() de R ne fonctionne plus :
median(as.ordered(chocol))
Mais on peut proposer une fonction maison pour r´ ealiser cette op´ eration :
ma.mediane <- function(x) {
if (is.numeric(x)) return(median(x))
if (is.ordered(x)) {
N <- length(x)
if (N%%2) return(sort(x)[(N+1)/2]) else {
inf <- sort(x)[N/2]
sup <- sort(x)[N/2+1]
if (inf==sup) return(inf) else return(list(inf,sup))
}}
stop("Calcul de m´ ediane impossible pour ce type.")
}
ma.mediane(as.ordered(chocol))
9.5- table(chocol)
table(fruit_crus)
9.6- On peut utiliser la fonction maison suivante :
med <- function(tabx) names(which.max(cumsum(tabx)/sum(tabx)>0.5))
med(table(chocol))
med(table(fruit_crus))
9.7- quartile.sur.freq <- function(tabx,quart) {
# tabx est le tableau des effectifs.
tab.freq.cum <- cumsum(tabx)/sum(tabx)
index <- order(tab.freq.cum < quart)[1]
f1 <- tab.freq.cum[index]
f2 <- tab.freq.cum[index-1]
x1 <- as.numeric(names(f1))
x2 <- as.numeric(names(f2))
quartile <- as.numeric(x1 + (x2-x1) * (quart-f1)/(f2-f1))
return(quartile)
}
tab <- res$counts
names(tab) <- res$breaks[-1]
quartile.sur.freq(tab,0.25)
quartile.sur.freq(tab,0.5)
quartile.sur.freq(tab,0.75)
655
La classe modale est la classe ]155; 160].
9.4- median(chocol)
Notez que si la variable ´ etudi´ ee est consid´ er´ ee comme une variable ordinale, alors la fonction median() de R ne fonctionne plus :
median(as.ordered(chocol))
Mais on peut proposer une fonction maison pour r´ ealiser cette op´ eration :
ma.mediane <- function(x) {
if (is.numeric(x)) return(median(x))
if (is.ordered(x)) {
N <- length(x)
if (N%%2) return(sort(x)[(N+1)/2]) else {
inf <- sort(x)[N/2]
sup <- sort(x)[N/2+1]
if (inf==sup) return(inf) else return(list(inf,sup))
}}
stop("Calcul de m´ ediane impossible pour ce type.")
}
ma.mediane(as.ordered(chocol))
9.5- table(chocol)
table(fruit_crus)
9.6- On peut utiliser la fonction maison suivante :
med <- function(tabx) names(which.max(cumsum(tabx)/sum(tabx)>0.5))
med(table(chocol))
med(table(fruit_crus))
9.7- quartile.sur.freq <- function(tabx,quart) {
# tabx est le tableau des effectifs.
tab.freq.cum <- cumsum(tabx)/sum(tabx)
index <- order(tab.freq.cum < quart)[1]
f1 <- tab.freq.cum[index]
f2 <- tab.freq.cum[index-1]
x1 <- as.numeric(names(f1))
x2 <- as.numeric(names(f2))
quartile <- as.numeric(x1 + (x2-x1) * (quart-f1)/(f2-f1))
return(quartile)
}
tab <- res$counts
names(tab) <- res$breaks[-1]
quartile.sur.freq(tab,0.25)
quartile.sur.freq(tab,0.5)
quartile.sur.freq(tab,0.75)
