Actuariat 1, ACT2121, second cours

Comme la dernière fois, je mets en ligne quelques exercices (une soixantaine cette fois). On devrait commencer à parler des lois usuelles de probabilités, pour l’instant des lois discrètes

  • la loi de Poisson

Si https://latex.codecogs.com/gif.latex?X suit une loi https://latex.codecogs.com/gif.latex?mathcal{P}(lambda),

https://latex.codecogs.com/gif.latex?%20%20%20%20%20p(k)%20=%20mathbb%20P(X%20=%20k)=%20e^{-lambda}frac{lambda%20^k}{k!},

Dans ce cas, https://latex.codecogs.com/gif.latex?mathbb{E}(X)=lambda et https://latex.codecogs.com/gif.latex?text{Var}(X)=lambda. La fonction génératrice des moments est alors

https://latex.codecogs.com/gif.latex?%20%20%20%20%20M_{X}(t)=%20mathbb{E}(e^{tX})=expleft(lambda%20(e^t-1)<br />
ight)

  • la loi binomiale

Si https://latex.codecogs.com/gif.latex?X suit une loi https://latex.codecogs.com/gif.latex?mathcal{B}(n,p),

https://latex.codecogs.com/gif.latex?%20%20%20%20%20p(k)%20=mathbb%20P(X%20=%20k)=%20{n%20choose%20k}%20,%20p^k%20q^{n-k}

Dans ce cas, https://latex.codecogs.com/gif.latex?mathbb%20E(X%20)=np et https://latex.codecogs.com/gif.latex?text{Var}(X%20)=np(1-p). La fonction génératrice des moments est alors

https://latex.codecogs.com/gif.latex?%20%20%20%20%20p(k)%20=%20mathbb%20P(X%20=%20k)=%20e^{-lambda}frac{lambda%20^k}{k!},

  • la loi binomiale négative

Enfin,, si https://latex.codecogs.com/gif.latex?X suit une loi https://latex.codecogs.com/gif.latex?%20BN(r,p),

 https://latex.codecogs.com/gif.latex?%20%20%20%20%20p(k)%20=%20mathbb%20P(X%20=%20k)=%20%20frac{Gamma(r+k)}{k!,Gamma(r)},p^r,q^k%20!

Dans ce cas,

https://latex.codecogs.com/gif.latex?%20mathbb%20E(X%20)=%20frac{r(1-p)}{p}!

et

https://latex.codecogs.com/gif.latex?%20text{Var}(X%20)=%20frac{r(1-p)}{p^2}!

La fonction génératrice des moments est alors

https://latex.codecogs.com/gif.latex?%20%20%20%20%20M_{X}(t)=%20mathbb{E}(e^{tX})=%20left(frac{p}{1-[1-p]%20e^t}<br />
ight)^r%20!

Je remettrais la semaine prochaine les lois continues les plus usuelles. Demain, soit on attaque cette nouvelle série, soit on revient sur des exercices de la semaine passée qui auraient posé problème…

Compound Poisson and vectorized computations

Yesterday, I was asked how to write a code to generate a compound Poisson variables, i.e. a series of random variables  where  is a counting random variable (here Poisson disributed) and where the ‘s are i.i.d (and independent of ), with the convention  when . I came up with the following algorithm, but I was wondering if it was possible to get a better one…

>  rcpd=function(n,rN,rX){
+  N=rN(n)
+  X=rX(sum(N))
+  I=as.factor(rep(1:n,N))
+  S=tapply(X,I,sum)
+  V=as.numeric(S[as.character(1:n)])
+  V[is.na(V)]=0
+  return(V)}

Here, consider – to illustrate – the case where  and ,

>  rN.P=function(n) rpois(n,5)
>  rX.E=function(n) rexp(n,2)

We can generate a sample

>  S=rcpd(1000,rN=rN.P,rX=rX.E)

and check (using simulation) than 

> mean(S)
[1] 2.547033
> mean(rN.P(1000))*mean(rX.E(1000))
[1] 2.548309

and that 

> var(S)
[1] 2.60393
> mean(rN.P(1000))*var(rX.E(1000))+
+ mean(rX.E(1000))^2*var(rN.P(1000))
[1] 2.621376

If anyone might think of a faster algorithm, I’d be glad to hear about it…

Somewhere else, part 15

Some news from the earthquake that occurred last night in Montréal


and other interesting posts and articles found here, or there,

avec comme toujours quelques articles en francais,

Did I miss something ?                                 !function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=”//platform.twitter.com/widgets.js”;fjs.parentNode.insertBefore(js,fjs);}}(document,”script”,”twitter-wjs”);

Test, valeur critique et p-value

Un petit complément suite au cours de mercredi dernier, pour insister sur l’importance de la p-value dans la lecture de la sortie d’un test.

  • Les erreurs dans un test statistique

Mais avant, rappelons qu’un test est une prise de décision: accepter ou rejeter une hypothèse. Et qu’on peut commettre une erreur. Ou pour être plus précis, on peut commettre deux types d’erreur,
• accepter l’hypothèse alors que cette dernière est fausse
• rejeter l’hypothèse alors que cette dernière était vraie
Pour reprendre une terminologie plus médicale, un test de grossesse peut dire à une femme qu’elle n’est pas enceinte, alors qu’elle l’est; ou dire qu’elle l’est, alors qu’elle ne l’est pas (voir tous les exemples dans les exercices de probabilités de l’examen P de la SOA, ou le cours ACT2121).
Formellement, on a deux probabilités,
• la probabilité d’accepter à tort notre hypothèse (on parlera d’erreur de second espèce), \beta
• la probabilité de rejeter à tort notre hypothèse (on parlera d’erreur de première espèce) \alpha
Dans un monde idéal on voudrait que les deux probabilités soient aussi petites que possibles… Mais c’est impossible, et le plus souvent, baisser une des probabilités se fait en augmentant l’autre. Les cas extrêmes étant
• avoir un test de grossesse qui déclare tout le monde enceinte: on ne rejette alors jamais à tort (on ne rejette jamais tout court en fait), mais on a un fort taux d’acceptation à tort,
• avoir un test de grossesse qui ne déclare personne enceinte: on n’accepte jamais à tort (car on n’accepte jamais) mais on a un fort taux de rejet à tort.
Bref, on a un arbitrage à faire entre deux types d’erreurs. Souvent, en pratique on va demander à contrôler l’erreur de première espèce (i.e. \alpha de l’ordre de 5%), et on chercher a un test qui, à \alpha donné, possède la plus faible erreur de première espèce. Voilà en gros pour la théorie: on se donne un seuil de significativité \alpha, qui correspond à la probabilité d’erreur de premier type. Et on va chercher à tester si une hypothèse H_0 est vraie, l’alternative étant une hypothèse H_1.

H_0 vraie H_1 vraie
accepter H_0 OK erreur
type 2
rejeter H_0 erreur
type 1
OK
  • La “valeur critique”

La notion de valeur critique a été introduite dans Neyman & Pearson (1928). Cette valeur dépend de la forme de l’hypothèse alternative, en particulier savoir si le test est bilatéral, unilatéral à gauche, ou unilatéral à droite. Pour un test donné, la valeur critique peut-être vue comme la valeur limite a partir de laquelle on pourra rejeter H_0 avec un seuil de significativité donné.

  • La p-value

La p-value a été introduite dans Gibbons & Pratt (1975), meme si on peut retrouve l’idée beaucoup plus tôt, comme Pearson (1900), qui propose de calculer “the probability that the observed value of the chi-square statistic would be exceeded under the null hypothesis“. La p-value est la probabilité, sous H_0, d’obtenir une statistique aussi extrême (pour ne pas dire aussi grande) que la valeur observée sur l’échantillon. Aussi, pour un seuil de significativité \alpha donné, on compare p et \alpha, afin d’accepter, ou de rejeter H_0,
• si p\leq\alpha, on va rejeter l’hypothèse H_0 (en faveur de H_1)
• si p>\alpha, on va rejeter H_1 (en faveur de H_0).
On peut alors interpréter la p-value comme le plus petit seuil de significativité pour lequel l’hypothèse nulle est acceptée. Gibbons & Pratt (1975) reviennent longuement sur les interprétations, et surtout les mauvaises interprétations, de cette p-value.

  • Valeur critique versus p-value

Si on formalise un peu, on peut vouloir tester H_0:\theta=\theta_0 contre H_1:\theta>theta_0 (par exemple). De manière très générale, on dispose d’une statistique de test T qui a pour loi, sous H_0, F_{\theta_0}(\cdot) (que l’on supposera continue). Notons qu’on peut considérer une hypothèse alternative de la forme H_1:\theta\neq\theta_0, c’est juste plus pénible parce qu’il faut travailler sur \vert T\vert, et calculer des probabilités à gauche, ou à droite. Donc pour notre exemple, on va prendre un test unilatéral.
Dans l’approche classique (telle que présentée dans tous les cours de statistiques), on se donne un seul d’acceptation \alpha petit (disons 5%), et on cherche une valeur critique T_{1-alpha} telle que

Pour ceux qui se souviennent de leur cours de stats, cela peut faire penser à la puissance du test, définie par

\pi(\theta\vert \alpha)=\mathbb{P}(T\geq T_{1-\alpha}\vert \theta)=1-F_{\theta}(T_{1-\alpha})

Formellement, la p-value associée au test T est la variable aléatoire P définie par
P=1-F_{\theta_0}(T).
Donc effectivement, la p-value et la puissance sont liées, puisque

\mathbb{P}(P\leq \alpha\vert \theta)=\pi(\theta\vert \alpha)

autrement dit, la puissance peut-être vue comme la fonction de répartition de la p-value.

  • Intérêt computationnel de la p-value

D’un point de vue computationnel, la p-value est l’outil le plus important pour interpréter la sortie d’un test. Commençons par un test simple, comme une comparaison de moyennes. On cherche ici à tester H_0:\mu_X=\mu_Y contre H_1:\mu_X>\mu_Y pour des moyennes calculées sur deux groupes. Pour reprendre l’exemple abordé dans un précédant billet, on a les notes obtenues en ACT6420 par deux groupes différents. Et on veut savoir s’ils sont vraiment différents (ci-dessous le nombre de bonnes réponses, sur 40 questions, on travaillera ensuite sur la note sur 100)

image manquante

La statistique de test est ici

T = \frac{\overline{X} - \overline{Y}}{\displaystyle{ \sqrt{ {s_X^2 \over n_X} + {s_Y^2 \over n_Y} }}}

et sous H_0, T va suivre une loi de Student à \nu degrés de liberté, où \nu est donné par la relation de Welch–Satterthwaite (d’après Satterwaite (1946) et Welch (1947)),

\nu = {{\left( {s_X^2 \over n_X} + {s_Y^2 \over n_Y}\right)^2 } \over {{s_X^4 \over n_X^2 \cdot \left({n_X-1}\right)}+{s_Y^4 \over n_Y^2 \cdot \left({n_Y-1}\right)}}}

Numériquement, on a ici

> Xbar=mean(X)
> Ybar=mean(Y)
> Sx2=var(X)
> Sy2=var(Y)
> nX=length(X)
> nY=length(Y)
> (T=(Xbar-Ybar)/sqrt(Sx2/nX+Sy2/nY))
[1] -2.155754

et pour les degrés de liberté

> (nu=(Sx2/nX+Sy2/nY)^2/(Sx2^2/nX^2/(nX-1)+
+ Sy2^2/nY^2/(nY-1)))
[1] 36.35279

La valeur critique est obtenue en lisant dans les tables,

(car ici on a des probabilité pour un test bilatéral dans la table) comme on apprenait dans les cours de statistique au siècle passé. D’un point de vue informatique, on cherche à savoir si on est à gauche, ou à droite de la valeur critique

> qt(.05,df=nu)
[1] -1.687865

image manquante

On peut aussi calculer la p-value,

> pt(T,df=nu)
[1] 0.01889768

Si on regarde, sous R, il existe des fonctions de tests, pour comparer des moyennes. Et dans ce cas, la sortie est

> t.test(X,Y,alternative = "less")

Welch Two Sample t-test

data:  X and Y
t = -2.1558, df = 36.353, p-value = 0.0189
alternative hypothesis: true difference in means is less than 0
95 percent confidence interval:
-Inf -1.772507
sample estimates:
mean of x mean of y
48.75000  56.91667

Autrement dit, on a automatiquement la p-value, et qui permet rapidement d’interpréter le test. Moralité, si on sait interpréter une p-value (et que l’on vérifié au préalable les conditions d’application d’un test), on peut faire tous les tests que l’on veut !
Si on veut faire un peu plus compliqué, on peut regarder la distribution des notes, et se demander si une loi \mathcal{N}(60,15^2) serait possible (par exemple, ça sera notre hypothèse H_0, l’hypothèse alternative étant que ce n’est pas cette loi). Pour faire ce test, il existe le test de Kolmogorov-Smirnov. La statistique de test est ici

T=\sup\{\vert \widehat{F}_n(x)-F_0(x)\vert ,x\in\mathbb{R}\}

F_0(\cdot) est la fonction de répartition de la loi \mathcal{N}(60,15^2), et \widehat{F}_n(\cdot) est la fonction de répartition empirique

\widehat{F}_n(x)=\frac{1}{n}\sum_{i=1}^n \mathbf{1}(x_i\leq x)

La loi de T n’est pas simple, ou moins simple qu’une loi de Student (cf Marsaglia, Tsang & Wang (2003) par exemple). En revanche, on a les p-values automatiquement,

> ks.test(Y, "pnorm", 60, 15)

One-sample Kolmogorov-Smirnov test

data:  Y
D = 0.1421, p-value = 0.5796
alternative hypothesis: two-sided

Aussi, on peut accepter ici l’hypothèse nulle. On peut d’ailleurs faire un petit dessin pour s’en convaincre,

> Femp=function(x) mean(Y<=x)
> plot(0:100,Vectorize(Femp)(0:100),type="s")
> lines(0:100,pnorm(0:100,60,15),col="red")

image manquante


Et ça va nous servir dans ce cours ? A priori oui… parce qu’on parlera du test de Student (pour tester si une variable dans une régression est significative), du test de Fisher (pour tester si plusieurs variables dans une régression sont significatives, ou plus généralement si une contrainte – linéaire – sur les coefficients peut être acceptée), du test de Chow (pour tester des ruptures dans un modèle linéaire, mais c’est un test de Fisher un peu déguisé), du test d’Anderson-Darling (pour tester si des résidus sont Gaussiens), du test de Breuch-Pagan voire le test de White (pour tester si les résidus peuvent être considérés de variance constante), du test de Durbin-Watson (pour tester s’il n’y a pas d’auto-corrélation dans la série des résidus), du test de Dickey-Fuller (pour tester si une série temporelle est – ou n’est pas – stationnaire), des tests de Franses (pour tester si une série peut être considérée comme saisonnière, ou pas), du test de Ljung-Box (pour tester si un bruit est un bruit blanc)… Et j’en oublie un paquet. Donc quand il est dit (dans le plan de cours) que le cours de statistique est un prérequis, il ne s’agit pas de l’avoir suivi, mais bel et bien de l’avoir compris, car on passera notre temps à utiliser des notions entrevues dans ce cours.

Régression: données individuelles ou temporelles ?

Avant de parler davantage du premier devoir, un mot pour expliquer pourquoi dans la première partie il est important d’éviter d’utiliser des données temporelles (le cours présente des outils pour modéliser des données individuelles). Considérons un exemple simple (évoqué voilà plusieurs mois ici même), où on cherche à prédire un tour de poitrine conditionnellement à un tour de taille (pour une personne de sexe féminin, cf. le mannequin ci-contre). L’idée intuitive est qu’il doit exister une relation positive, possiblement linéaire entre les deux mensurations. A partir de données, on devrait pouvoir quantifier cette relation. On dispose pour cela de données, en ligne sur

> mensurations<-read.table("
+ http://freakonometrics.free.fr/mensurations.csv",
+ header=TRUE,sep=";")
> head(mensurations[,-1])
POITRINE TAILLE HANCHE HAUTEUR POIDS      AGE
1       NA     NA     NA      NA    NA       NA
2       94     58     89     165    51 22.24230
3       NA     NA     NA      NA    NA       NA
4       94     58     89     165    51 22.40383
5       91     58     97     165    55       NA
6       NA     NA     NA      NA    NA       NA

Si on regarde rapidement la corrélation entre la taille et la poitrine, cette dernière est faible,

> Z=mensurations[,c("TAILLE","POITRINE")]
> I=apply(Z,1,function(x) sum(is.na(x)))
> cor(Z[I==0,])
TAILLE   POITRINE
TAILLE   1.00000000 0.09700002
POITRINE 0.09700002 1.00000000

… mais significativement non nulle,

> cor.test(Z[,1],Z[,2],,method = "pearson")

Pearsons product-moment correlation

data:  Z[, 1] and Z[, 2]
t = 2.4559, df = 635, p-value = 0.01432
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
0.0194634 0.1733769
sample estimates:
cor
0.09700002

Avec une https://latex.codecogs.com/gif.latex?p-value de l’ordre de 1.5%, on va rejeter l’hypothèse https://latex.codecogs.com/gif.latex?H_0 de nullité de la corrélation (c’est ici un test basé sur la transformation de Fisher). On peut aussi faire une régression simple,

> reg=lm(POITRINE~TAILLE,data=mensurations)
> summary(reg)

Call:
lm(formula = POITRINE ~ TAILLE, data = mensurations)

Residuals:
Min      1Q  Median      3Q     Max
-9.7253 -3.4424 -0.2091  1.5576 13.8579

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 82.67798    2.82953  29.220   <2e-16 ***
TAILLE       0.11663    0.04749   2.456   0.0143 *
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 4.133 on 635 degrees of freedom
(22 observations deleted due to missingness)
Multiple R-squared: 0.009409,	Adjusted R-squared: 0.007849
F-statistic: 6.031 on 1 and 635 DF,  p-value: 0.01432

(on notera que le test sur la corrélation, le test de significativité de la – seule – variable explicative, et le test de significativité globale donnent ici exactement la même https://latex.codecogs.com/gif.latex?p-value de l’ordre de 1.5%). Là encore, on voit que le tour de taille a un effet significativement non nul… mais marginal. Graphiquement, la prédiction avec le tour de taille est le trait rouge,

La valeur moyenne est en trait pointillé. On peut voir que la différence est infime,

> base=data.frame(TAILLE=seq(50,70,by=5))
> base$Pred.POITRINE=predict(reg,newdata=base)
> base$Moy.POITRINE=mean(POITRINE,na.rm=TRUE)
> base
TAILLE Pred.POITRINE Moy.POITRINE
1     50      88.50935     89.61538
2     55      89.09248     89.61538
3     60      89.67562     89.61538
4     65      90.25876     89.61538
5     70      90.84189     89.61538

Le soucis est que cette base est en fait une base sur données individuelles. En fait, il s’agit des mensurations des demoiselles qui ont posé comme playmate dans la version U.S. du magasine Playboy. Si on se restreint sur des sous-période, par exemple les années 70, on a des prédictions relativement différentes,

> submensurations=mensurations[abs(DATE-1975)<=5,]
> subreg=lm(POITRINE~TAILLE,data=submensurations)
> summary(subreg)

Call:
lm(formula = POITRINE ~ TAILLE, data = submensurations)

Residuals:
Min     1Q Median     3Q    Max
-8.655 -1.871 -0.655  1.750 13.155

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept)  66.1485     7.3839   8.958 6.12e-15 ***
TAILLE        0.4053     0.1230   3.296   0.0013 **
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 3.574 on 117 degrees of freedom
(2 observations deleted due to missingness)
Multiple R-squared: 0.08496,	Adjusted R-squared: 0.07714
F-statistic: 10.86 on 1 and 117 DF,  p-value: 0.001299

> base$Pred70s.POITRINE=predict(subreg,newdata=base)
> base
TAILLE Pred.POITRINE Moy.POITRINE Pred70s.POITRINE
1     50      88.50935     89.61538         86.41274
2     55      89.09248     89.61538         88.43917
3     60      89.67562     89.61538         90.46559
4     65      90.25876     89.61538         92.49201
5     70      90.84189     89.61538         94.51844

que l’on peut visualiser ci-dessous,

L’explication est que la morphologie des femmes (ou en tous les cas de celles qui ont posé nues dans Playboy) a beaucoup changé en 60 ans, comme évoquéprécédemment. On peut le voir en regardant l’évolution de la pente, par date (https://latex.codecogs.com/gif.latex?\pm5ans)

(le trait horizontal est la pente obtenue sur l’ensemble de la période). On peut d’ailleurs intégrer l’année dans notre modèle, en rajoutant le temps comme variable explicative dans la régression,

> reg=lm(POITRINE~TAILLE+DATE,data=mensurations)
> summary(reg)

Call:
lm(formula = POITRINE ~ TAILLE + DATE, data = mensurations)

Residuals:
Min      1Q  Median      3Q     Max
-9.7304 -2.2184 -0.5405  2.0742 12.1041

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 368.296266  18.008455  20.451  < 2e-16 ***
TAILLE        0.323319   0.042140   7.673 6.39e-14 ***
DATE         -0.150301   0.009393 -16.002  < 2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 3.491 on 634 degrees of freedom
(22 observations deleted due to missingness)
Multiple R-squared: 0.2944,	Adjusted R-squared: 0.2922
F-statistic: 132.3 on 2 and 634 DF,  p-value: < 2.2e-16

Visuellement, on aurait la prédiction suivante,

Si on se place autour de 1970,

> submensurations=mensurations[abs(DATE-1970)<=5,]
> subreg=lm(POITRINE~TAILLE,data=submensurations)
> predict(subreg,newdata=data.frame(TAILLE=c(55,70)))
1        2
89.14361 95.75476

alors qu’autour de 1990,

> submensurations=mensurations[abs(DATE-1990)<=5,]
> subreg=lm(POITRINE~TAILLE,data=submensurations)
> predict(subreg,newdata=data.frame(TAILLE=c(55,70)))
1        2
87.69853 92.70228

Notons qu’on fait ici des régressions locales (dans ces deux derniers calculs), ce qui n’est pas ce qui est représenté visuellement… Si on veut une meilleure modélisation locale, il faudrait quitter le monde des modèles linéaires pour aller un peu plus loin. On verra en fin de cours si on a le temps d’en parler

Cela dit, globalement, on avait un effet positif, mais il aurait été tout à fait possible d’avoir un effet (global négatif). C’est ce qui arrive dans le paradoxe de Simpson.

La recherche, l’enseignement et les élèves

Depuis quelques temps, lorsqu’on me demande ce que je fais dans la vie, je réponds “enseignant-chercheur” et je trouve que le terme me convient bien…

I.− Part. prés. de enseigner*: a) [L’obj. désigne le destinataire] Transmettre un savoir à. Synon.

Prononc. et Orth. : [ʃ ε ʀ ʃ œ:ʀ], fém. [-ø:z]. Ds Ac. 1694-1932. Étymol. et Hist. 1. le plus souvent avec compl. introduit par de a) 1538 cercheur « personne qui cherche, qui s’informe » (Est., s.v. conquisitores); 1636 chercheur (Monet); b) 1840 adj. « qui cherche (qqc.) » (Proudhon, Qu’est-ce que la propriété, p. 133); 2. emploi abs. 1835 adj. chercheuse « avide de connaissances, qui essaie de découvrir » (Balzac, loc. cit.);

Si on regarde les définitions, on voit qu’un chercheur s’informe (et reçoit du savoir) alors que l’enseignant le transmet (et communique son savoir). D’aucuns prétendront que le chercheur aussi transmet, mais quand on voit l’impact des articles académiques, on peut se demander à qui on transmet. Sans chercher à polémiquer, je trouve d’ailleurs surprenant qu’en France on ait pu séparer les deux, en créant des postes de chercheurs qui n’étaient pas tenu de partager leur savoir (mais j’ouvre une parenthèse que je ne tiens pas à ouvrir davantage)…. Bref, je suis très content d’enseigner car c’est cette activité qui me donne une utilité sociale.
Sauf que comme tous les enseignants, je déteste faire des examens. Pire encore, les corriger…
Lors de mon dernier examen, j’avais fait un questionnaire, avec des choix multiples (4 réponses, une seule bonne). Ça demande un temps fou à préparer, mais la correction est beaucoup plus rapide que lire des dizaines de pages (activité que je me laisse pour les heures à venir, car en plus des questionnaires, il y avait deux gros devoirs sur des bases de données). Et en plus, avec les choix multiples la correction est impartiale !
Dans un monde idéal, j’aimerais pouvoir dire “si vous pensez avoir réussi, passez au cours suivant, sinon reprenez le…” Alors j’ai tenté l’expérience. J’ai demandé aux étudiants d’écrire sur la copie le nombre de bonnes réponses qu’ils pensaient avoir. L’exercice était libre, et sans influence sur la note finale. Enfin, presque. Suite à une suggestion, j’ai accepté de donner des points à toute personne qui prédirait exactement son score !

> ACT6420=read.table("ACT6420-H2012.csv",
> base=ACT6420[ACT6420$obs>0,]
> attach(base)

Tout d’abord, comme l’exercice n’était pas obligatoire, certains (plusieurs) n’ont pas fait de prédiction… et comme souvent, la “non-réponse” est (très) informative,

> reponse=(is.na(pred)==FALSE)
> boxplot(obs~reponse,horizontal=TRUE)

Ceux qui n’ont pas répondu ont moins bien réussi que ceux qui ont répondu. Et sans vouloir revenir sur un point vu en cours (corrélation n’est pas causalité), je suis toujours surpris de fait que les personnes qui ne répondent pas aient un comportement aussi clairement différent de ceux qui répondent.

Maintenant regardons ce qui a été répondu par ceux qui ont joué le jeu, et qui ont fait une prédiction,

> plot(pred,obs,xlim=c(0,40),ylim=c(0,40),
+ xlab="Nombre de bonne réponses prédit",
+ ylab="Nombre de bonne réponses observé")
> abline(a=0,b=1,lty=1,col="red")
> abline(lm(obs~pred),lty=2)

En abscisse la prédiction, et en ordonnée, la valeur observée (un peu comme dans le cours de prévision justement). La courbe en rouge est une prédiction parfaite. Et la courbe en pointillé, la droite de régression. Les meilleurs se sous-estiment (en moyenne), alors que les moins bons se surestiment. Comme le note @AlbertineP on voit que les moins bons sont en fait un peu meilleurs qu’ils ne le pensent, alors que les meilleurs se surestiment ! Un effet Dunning-Kruger inversé, pour reprendre la terminologie proposée par @Tournyol. Damned, je ne pourrais donc pas demander aux étudiants de s’auto-évaluer, il va falloir que je continue à corriger mes copies ! (et je vais renouveler l’expérience, pour voir sur plus de copies ce que ça donne !)

Somewhere else, part 14

Two very interesting articles found this week

among many others

et quelques articles en francais,

Did I miss something ?

ACT6420 compléments de lecture

Histoire de revoir, d’approfondir certaines notions abordées dans la première partie du cours, quelques liens vers de documents, ici ou là… Parmi les ouvrages cités dans le plan de cours, il y a le site de Jed Frees qui propose des codes R et des bases de données, utilisés dans le livre. De même pour le livre de William Greene, un site permet d’avoir accès aux données par exemple. Enfin, Russell Davidson et James MacKinnon ont mis en ligne l’intégralité de leur livre d’estimation et d’inférence en économétrie. Bien que le livre soit plus poussé que ce que l’on devrait faire, il apportera de nombreux éclaircissements, et une autre manière de voir le cours. Je peux aussi renvoyer aux notes de cours de Bruno Crepon et de Nicolas Jacquemet, d’économétrie linéaire appliquée.

  • statistique mathématique
La section 3. des notes de cours de Didier Concordet rappelle les principaux résultats à connaître sur l’inférence statistique, ou sinon, je peux renvoyer vers les notes de Jérôme Dupuis.
  • tests statistiques
Une référence un peu générale, le livre de Gaël Millot, en ligne sur Google Books . Sinon, les sections 4. et 5. des notes de cours de Didier Concordet reprennent l’essentiel des résultats à connaître sur les tests pour suivre le cours. Je renverrais aussi vers les transparents de Wissem Maazoun sur les tests usuels. Enfin, sur la théorie des tests, des compléments peuvent être trouvés dans les notes de cours écrites par Paul Doukhan, ou les notes de Nicolas Chopin, Emmanuelle Cretois et Jean Diebolt. (ces deux documents vont beaucoup plus loin que ce qui est demandé comme prérequis).
  • optimisation et aspects numériques
On reviendra plus longuement sur ces aspects là sur la section de séries temporelles, mais les transparents de Grégory Vial peuvent être un bon rappel (en particulier sur la descente de gradient). Je peux aussi mentionner une revue d’algorithme dans un document de Joël Pothier (qui va beaucoup plus loin que ce qui pourrait servir dans ce cours, avec page 10 la descente de gradient).
  • calcul différentiel et calcul matriciel
Sur les rappels d’algèbre matricielle, je peux renvoyer à un court document synthétique de Xavier Joutard. Et sur le calcul différentiel appliqué à des matrices (que l’on utilisera lorsque l’on abordera la régression multiple) je renvoie à la première section du document de Thomas Minka.
  • espérance conditionnelle et géométrie
Pour des rappels sur l’espérance conditionnelle, et l’interprétation géométrique en terme de projection, je revois vers des transparents de Samy Tindel, qui reprennent tout ce qu’il faut savoir. Sinon Massimiliano Gubinelli a mis en ligne un document de 4 pages, un cours document de Vincent Bansaye, ou la Section 1.4. des notes de cours d’Arnaud Guyader permettent d’apporter des éclaircissements.
  • un peu de programmation (en R)
Quelques liens vers des livres de R, d’introduction à la programmation, dont l’introduction d’Emmanuel Paradis, le brise glace d’Andrew Robinson et Arnaud Schloesing, ou le livre de Vincent Goulet. Bien qu’aucun prérequis en informatique ne soit demandé pour le cours, je m’attends à ce que l’on connaissent les principes généraux de programmation. Par exemple connaitre la différence entre une variable locale et une variable globale dans un code.
> y=cars$dist 
> f=function(z) {return(mean(log(z)))} 
> meanlog=f(y)
D’autres compléments seront mis en ligne, en particulier sur les processus, dès que nous aborderons les séries temporelles.

J’ai probablement raté des documents intéressants, les commentaires sont ouverts si quelqu’un souhaite partager des documents…

Actuariat 1, ACT2121, premier cours

Le premier cours de l’automne d’ACT2121 actuariat I  aura lieu lundi après midi, au local SH3220. Comme il s’agit de préparer l’examen P de la SOA, nous allons passer les séances à faire des exercices. Le plan de cours sera mis en ligne prochainement. L’ouvrage de référence est le livre de Jacques Labelle, exercices de probabilités appliquées. A chaque séance, je proposerai une série de 90 exercices, et on en fera autant que possible (dans les conditions de l’examen, avec préparation de 6 minutes par exercices). Pour la première séance, les exercices sont en ligne,

Je rajouterai au fur et à mesure des compléments de cours, voire des corrections…