Sujet 4 : Estimation de la latence et de la capacité d’une connexion à partir de mesures asymétriques
Le premier jeu de données examine une connexion courte à l'intérieur d'un campus : http://mescal.imag.fr/membres/arnaud.legrand/teaching/2014/RICM4_EP_ping/liglab2.log.gz
partie 1 "ping"
Ayant galéré à rendre les données de base dans un format manipulable, j'ai simplifié le jeu de données dans Excel en transformant les données de date en prenant t=0 pour la première mesure, retirant toutes les colonnes inutiles et ne laissant que les deux colonnes utiles et crée un csv avec 3 colonnes : time, size, duration (of the transfer).
Une rupture apparait un peu en dessous de 1500 octet. On coupe les données en deux.On laisse volontairement un vide entre 1400 et 1500 pour ne pas empiéter sur l'intervalle voisin
plot(duration ~ size, data = data_high, pch = 16, main = eq, ylim=c(2,3))
abline(rq(duration ~ size, data = data_high), col = "blue", lty = 2, ylim=c(2,3))
```
Les résultats sont pour la partie haute de la taille (>1500 octet)
C = `r round(1/coeff[2],1)` octet/msec
L = `r round(coeff[1],2)` msec
######
######
------------------
Le deuxième jeu de données mesure la performance d'une connexion vers un site Web éloigné assez populaire et donc chargé : http://mescal.imag.fr/membres/arnaud.legrand/teaching/2014/RICM4_EP_ping/stackoverflow.log.gz
Partie 2 : Stack Overflow
---
Ayant galéré à rendre les données de base dans un format manipulable, j'ai simplifié le jeu de données dans Excel en transformant les données de date en prenant t=0 pour la première mesure, retirant toutes les colonnes inutiles et ne laissant que les deux colonnes utiles et crée un csv avec 3 colonnes : time, size, duration (of the transfer).
Une rupture apparait un peu en dessous de 1500 octet. On coupe les données en deux.On laisse volontairement un vide entre 1400 et 1500 pour ne pas empiéter sur l'intervalle voisin
plot(duration ~ size, data = data_high, pch = 16, main = eq, ylim=c(110,160))
abline(rq(duration ~ size, data = data_high), col = "blue", lty = 2, ylim=c(110,160))
#plotting again the regression on the same graph
reg <- lm(duration ~ size, data = data_high)
abline(reg, col="red", lty = 1, ylim=c(110,160))
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```
On voit que les vitesses ainsi calculées n'ont pas de sens car le temps dépend très peu de la taille
Par curiosité, on peut observer les régressions sur les différents quantiles.
```{r compute mutlple quantile regression}
## Quelques explications
multi_rqfit <- rq(duration ~ size, data = data_low, tau = seq(0, 1, by = 0.2))
Ceci est un document R markdown que vous pouvez aisément exporter au format HTML, PDF, et MS Word. Pour plus de détails sur R Markdown consultez <http://rmarkdown.rstudio.com>.
plot(duration ~ size, data = data_low, pch = 16, main = "duration ~ size", ylim=c(110,160))
for (j in 1:ncol(multi_rqfit$coefficients)) {
abline(coef(multi_rqfit)[, j], col = colors[j])
}
Lorsque vous cliquerez sur le bouton **Knit** ce document sera compilé afin de ré-exécuter le code R et d'inclure les résultats dans un document final. Comme nous vous l'avons montré dans la vidéo, on inclue du code R de la façon suivante:
multi_rqfit <- rq(duration ~ size, data = data_high, tau = seq(0, 1, by = 0.2))
plot(duration ~ size, data = data_low, pch = 16, main = eq, ylim=c(110,160))
abline(rq(duration ~ size, data = data_low), col = "blue", lty = 2, ylim=c(110,160))
```
Vous remarquerez le paramètre `echo = FALSE` qui indique que le code ne doit pas apparaître dans la version finale du document. Nous vous recommandons dans le cadre de ce MOOC de ne pas utiliser ce paramètre car l'objectif est que vos analyses de données soient parfaitement transparentes pour être reproductibles.
Les résultats sont pour la partie basse de la taille (<1400 octet)
L = `r round(coeff[1],2)` msec
et il n'y a aucun lien entre taille et durée
```{r compute 10 quantile regression high}
## regression against 10% quantile in the higher part
###############
rqfit <- rq(duration ~ size, data = data_high, tau = 0.1)
plot(duration ~ size, data = data_high, pch = 16, main = eq, ylim=c(110,160))
abline(rq(duration ~ size, data = data_high), col = "blue", lty = 2, ylim=c(110,160))
```
Comme les résultats ne sont pas stockés dans les fichiers Rmd, pour faciliter la relecture de vos analyses par d'autres personnes, vous aurez donc intérêt à générer un HTML ou un PDF et à le commiter.
Les résultats sont pour la partie haute de la taille (>1500 octet)
L = `r round(coeff[1],2)` msec
et il n'y a aucun lien entre taille et durée
Maintenant, à vous de jouer! Vous pouvez effacer toutes ces informations et les remplacer par votre document computationnel.