Somewhere else, part 165

Some articles worth reading

Continue reading

Fonction de répartition empirique

Ce matin, en cours, on avait utilisé une série d’observations pour décrire l’estimation nonparamétrique de la fonction de répartition

> Davis=read.table(
"http://socserv.socsci.mcmaster.ca/jfox/Books/Applied-Regression-2E/datasets/Davis.txt")

Comme il y une faute de saisie dans la base, on corrige, à la main,

> Davis[12,c(2,3)]=Davis[12,c(3,2)]

Notre variable d’intérêt sera la taille d’un individu,

> X=Davis$height
> X[1:10]
[1] 182 161 161 177 157 170 167 186 178 171

Pour tracer la fonction de répartition empirique,

http://latex.codecogs.com/gif.latex?\widehat{F}_n(x)=\frac{1}{n}\sum_{i=1}^n\boldsymbol{1}(\{x_i\leq%20x\})

on peut utiliser le code suivant

> n=length(X)
> x=seq(140,200)
> ggplot(data=data.frame(x=x), aes(x = x))+
+ stat_function(fun=Vectorize(function(x) sum(X<=x)/n),
+ geom="step", col = "red", size = 1) + 
+ ylab("Fonction de Repartition")

Somewhere else, part 164

Some interesting posts and articles, here and there

Continue reading

Somewhere else, part 163

A lot of interesting posts, here and there

Continue reading

Selection_524

Permuter, sans créer de variable temporaire

Je n’aime pas me faire coller par un (ancien) étudiant !… mais j’ai trouvé la solution très jolie, alors je vais en garder la trace dans mon “cahier de recherche” qu’est mon blog. La question était simple :

Comment permuter les valeurs de deux variables, sans créer de variable temporaire ?

On a ainsi deux variables, http://latex.codecogs.com/gif.latex?A et http://latex.codecogs.com/gif.latex?B, on veut les permuter : http://latex.codecogs.com/gif.latex?A doit prendre la valeur de http://latex.codecogs.com/gif.latex?B, et inversement….

> a=1
> b=2
> a
[1] 1
> b
[1] 2

Continue reading

Quiz de probabilité

Ce matin, en fin de cours, j’ai fait passé un petit quiz. Compte tenu de la configuration de la salle, j’avais distribué deux questionnaires, avec chacun 10 questions. Les questions étaient identiques, à l’application numérique près (pour quelques exercices). La première série d’exercice est en ligne, ainsi que des éléments de correction; la seconde série est aussi en ligne, avec là encore des éléments de correction. J’ai rajouté après la correction les statistiques de réponses pour chaque formulaire, mais aussi au niveau agrégé (en incluant l’autre questionnaire). Il va de soi qu’il est possible de continuer à s’entraîner à faire des exercices pendant les semaines à venir, ça ne fera de mal à personne !

Somewhere else, part 162

Some writings worth reading, discovered here and there

and “An ‘A’ is not what it used to be” http://www.economist.com/news/united-states/21615616-not-what-it-used-be-grade-expectations …

Continue reading

Rappels de statistique

Jeudi et vendredi, on finira les rappels de cours, avec quelques rappels de statistique. Les slides sont en ligne,

Sinon, histoire d’illustrer un peu les différents aspects, j’avais dit que j’aimais bien utiliser des simulations. En particulier, il sera intéressant de générer plusieurs (beaucoup) échantillons de taille donnée. Le code R est le suivant (une ligne correspond à un échantillon, de 20 observations)

> n=20
> m=1000
> M=matrix(rnorm(n*m),m,n)

On utilise ensuite la statistique que l’on souhaite étudier, qui peut être la moyenne empirique,

> Xbarn=apply(M,1,mean)

ou la variance

> Sn=apply(M,1,var)

On peut ensuite visualiser la distribution de la statistique, sur tous les échantillons. Par exemple, le fait que l’estimateur de la moyenne est gaussien, on peut faire un histogramme

> hist(Xbarn,probability=TRUE,
+ breaks=seq(-1,1,by=.1),col="light blue")

et rajouter la densité de la loi normale (car la théorie nous dit que la moyenne suit une loi normale),

> u=seq(-2,2,by=.01)
> lines(u,dnorm(u,sd=1/sqrt(n)),col="red",lwd=2)

Cela dit, comme Ewen Gallic fera essentiellement du ggplot2 dans son cours de R, je vais aussi mettre les codes en ggplot2 (et essayer de m’y convertir… ce n’est pas l’envie qui manque !)

> ggplot(data=data.frame(Xbarn = Xbarn), aes(x = Xbarn)) +
+   geom_histogram(aes(y = ..density..),
+   binwidth = .1, fill = "light blue", col = "black") +
+   stat_function(fun=function(x) dnorm(x,sd=1/sqrt(n)),
+ col = "red", size = 1) + ylab("Densite") +
+   ggtitle("Histogramme de Xbarn")

Cela dit,  au lieu de représenter la loi normale, on peut aussi visualiser un estimateur non paramétrique de la densité (on en reparlera dans quelques semaines), comme l’estimateur à noyau

> ggplot(data=data.frame(Xbarn = Xbarn), aes(x = Xbarn)) +
+   geom_histogram(aes(y = ..density..),
+   binwidth = .1, fill = "light blue", col = "black") +
+   geom_line(stat="density", col = "red", size = 1) +
+   ylab("Densite") +
+   ggtitle("Histogramme de Xbarn")

On peut aussi voir que la variance empirique suit une loi du chi-deux,

> hist((n-1)*Sn,probability=TRUE,
+ breaks=seq(0,56,by=2),
+ col="light blue")
> u=seq(0,56,by=.1)
> lines(u,dchisq(u,df=n-1),col="red",lwd=2)

avec là encore une version en ggplot2

> ggplot(data = data.frame(x = (n-1)*Sn), aes(x = x)) +
+   geom_histogram(aes(y = ..density..),
+   binwidth = 2, fill = "light blue", col = "black") +
+   geom_line(stat="density", col = "red", size = 1) +
+   xlab(expression((n-1) %*% Sn)) +
+   ylab("Densite") +
+   ggtitle(expression(paste("Histogramme de ", (n-1) %*% Sn)))

On peut aussi utiliser ces simulations pour comprendre l’idée d’intervalle de confiance à 90%,

> x1=Xbarn-1.64*1/sqrt(n)
> x2=Xbarn+1.64*1/sqrt(n)
> ind=x1*x2>0
> plot(1:m,Xbarn,ylim=c(-1,1),col="white",
+ ylab="intervalle de confiance",xlab="")
> segments(1:m,x1,1:m,x2,col=c("light blue","red")[ind+1],lwd=1.5)
> abline(h=0,lty=2)

ou pour la version ggplot2 (mais on reparlera de tout ça en cours, pas forcément cette semaine cela dit)

> ggplot(data = df) +
+   # Les segments. La couleur doit etre fonction d'un logique
+   geom_segment(aes(x = x, xend = x, y = x1, yend = x2, col = x1*x2>0)) +
+   # La ligne horizontale en y = 0
+   geom_hline(yintercept = 0, linetype = "dashed") +
+   # Changer les couleurs des segments
+   scale_colour_manual(values = c("light blue" ,"red")) +
+   # Modifier le titre de l'axe des y
+   ylab("Intervalle de confiance") +
+   # Modifier le titre de l'axe des x
+   xlab("") +
+   # Cacher la legende
+   theme(legend.position="none")

On note que dans 90% des scénarios (notion d’intervalle de confiance à 90%), la vraie valeur (connue ici car on simule nos échantillons) est effectivement dans l’intervalle de confiance.

Somewhere else, part 161

Some writings worth reading, discovered here and there

Continue reading

Selection_226

Crowded Cities, Paris, Hong Kong and Montréal

Over the past years, I’ve been living in different cities, all of them being completely different, compared with the others. I have been living in Paris, which is a big city in Europe, with a large suburban neighborhood, too (la banlieue).

Then, I’ve been living in Hong Kong, which is a larger city, in Asia.

It was crowded. I mean, it was the feeling I had, while I was living there. And more recently, I’ve been living in Montréal, in North America. Montreal is a large city. Or to be more specific, an island,

The three cities are quite different. Paris, 2.211 million unhabitants, and 105,4 km² (density 21,057 unhabitants per km²). Montréal, 1.621 million unhabitants, and three times wider 365.1 km² (density 4,441 unhabitants per km²). Hong Kong, 7.234 million unhabitants, and again three times wider 1,104 km² (density 6,553 unhabitants per km²). In Hong Kong, there are several hill where it is not possible to build anything: on a large part of the island, the density is null.

Continue reading

Somewhere else, part 160

(via @thereaIbanksy ). Some writings worth reading, found here and there,

Somewhere else, part 159

Holidays are over

(Source: miguelmarquezoutside.com). Some writings worth reading, here and there

An Open Lab-Notebook Experiment


Research blogs