Académique Documents
Professionnel Documents
Culture Documents
M1 EURIA 2020-2021
25/03/2021
Exercice 1
1. On va chercher dans cet exercice à caractériser les loi limites de la moyenne empirique des lois suivantes:
• U ∼ U([− 12 , − 12 ];
• Z ∼ N (0, 1);
• X := sign(U ) × log(1 − 2|U |) (Loi de Laplace)
• T ∼ T (1.8)
Law_Mean = do.call(rbind,Law_Mean)
1
Law_Mean %>% ggplot(aes(x=value,fill=variable)) +
stat_bin(bins=30)+
facet_wrap(variable~N,scale="free",ncol=3)+
theme_light() +
theme(legend.position='none') +
scale_fill_discrete("Distribution")
2
Normal=qnorm(x[1,]),
Laplace=sign(1/2-x[3,])*log(1-2*abs(1/2-x[3,])),
Student=qt(x[3,],df = 1.8))
res=apply(sims, 2, max)
}
Law_Maxima = do.call(rbind,Law_Maxima)
3
Uniform Uniform Uniform
N=50 N=500 N=5000
200 150
150
150
100 100
100
50 50 50
0 0 0
0.85 0.90 0.95 1.00 0.985 0.990 0.995 1.000 0.9988 0.9992 0.9996 1.0000
50 50
40
0 0 0
2.5 5.0 7.5 10.0 12.5 5.0 7.5 10.0 12.5 7.5 10.0 12.5 15.0
Exercice 2
Question 1
n=5000
X=rt(n,df=3)
qqnorm(X,pch=20)
qqline(X)
4
20
10
Sample Quantiles
0
−10
−20
−4 −2 0 2 4
Question 2
n=5000
X=rt(n,df=3)
Y=rt(n,df=100)
qqplot(X,Y,pch=20)
5
1−1 line
regression line
95% confidence bands
2
y Quantiles
0
−2
−4
x Quantiles
Question 3
df=3
bloc_size=1000
n_blocs=5000
Y=matrix(rt(bloc_size*n_blocs,df=2),nrow = bloc_size)
M=apply(Y,2,max)
fit=fgev(M)
fit
6
##
## Call: fgev(x = M)
## Deviance: 42777.24
##
## Estimates
## loc scale shape
## 22.3135 11.1705 0.4973
##
## Standard Errors
## loc scale shape
## 0.17939 0.17218 0.01361
##
## Optimization Information
## Convergence: successful
## Function Evaluations: 61
## Gradient Evaluations: 19
confint(fit)
## 2.5 % 97.5 %
## loc 21.9619074 22.6651095
## scale 10.8330206 11.5079548
## shape 0.4705995 0.5239676
par(mfrow=c(2,2))
plot(fit) #comparaison loi empirique-loi ajusté
7
1.0
Probability Plot Quantile Plot
12000
0.8
8000
Empirical
0.6
Model
0.4
4000
0.2
0.0
0
0.0 0.2 0.4 0.6 0.8 1.0 0 500 1000 1500
Empirical Model
Return Level
8000
Density
0.005
4000
0.000
Quand df est grand, loi de Student est proche d’une loi normale. On peut faire un graphique en échelle
Gumbel (log-log) pour vérifier sur l’hypothèse ξ = 0 est crédible.
xord<-sort(M,decreasing=F)
inds <- (1:n_blocs)/(n_blocs+1)
gbquant<- -log(-log(inds))
plot(gbquant,xord,pch=20)
reg.lin<-lm(xord~gbquant)
coeff<- reg.lin$coefficients
abline(coeff[1],coeff[2],
col="red",lwd=2)
8
4000
3000
xord
2000
1000
0
−2 0 2 4 6 8
gbquant
p=.999
df=3
x=rt(n=5000,df=df)
qt(p,df=df) #vraie valeur
## [1] 10.21453
9
quantile(x,p) #quantile empirique
## 99.9%
## 9.108651
## [1] 5.455147
Question 4.c.
Un calcul simple montre que le quantile d’ordre p de la distribution de l’échantillon d’origine est le quantile
d’ordre pl de la distribution des max par blocs de taille l puisque
On peut utiliser la fonction fgev pour estimer directement un quantile (cf commandes ci-dessous).
l=100; #taille des blocs
m=apply(matrix(x,ncol=l,byrow=TRUE),1,max)
fit = fevd(m)
## location
## 9.982058
q=data.frame(empir=q1,normal=q2,maxbloc=q3)
boxplot(q)
q0=qt(p,df=df) #vraie valeur
abline(q0,0,col='red')
10
10
9
8
7
6
5
4
apply(q,2,mean)-q0 #biais
apply(q,2,sd) #écart-type
11
apply((q-q0)ˆ2,2,mean) #EQM= biaisˆ2+ variance
L’estimateur basé sur l’approximation gaussienne sous-estime les quantiles. Les méthodes issues de la théorie
des valeurs extrêmes marchent mieux pour les quantiles vraiment extrêmes.
Exercice 3
Question 1
x + log(n)
P [λMn − log(n) ≤ x] = P Mn ≤
λ
x + log(n)
= Fn
λ
x+log(n) n
h i
= 1 − e−λ λ
n
1
= 1 − e−x
n
→ exp e−x
n→∞
Question 2
P [n(Mn − 1) ≤ x] = P Mn ≤ n−1 x + 1
x n
= 1+
n
→ ex
n→∞
Exercice 4
Question 2
SP <- read_csv("SP500_1950-2019.csv")
y=SP$Close
plot(SP$Date,y,type='l')
12
3000
2500
2000
y
1500
1000
500
0
SP$Date
x=diff(log(y))
n=length(x)
plot(SP$Date[1:n],x,type='l')
13
0.10
0.05
0.00
−0.05
x
−0.10
−0.15
−0.20
SP$Date[1:n]
Question 3
qqnorm(x)
qqline(x,col='red')
14
0.10
0.05
0.00
Sample Quantiles
−0.05
−0.10
−0.15
−0.20
−4 −2 0 2 4
quantile(x,.999)
## 99.9%
## 0.0467969
qnorm(.999,mean=mean(x),sd=sd(x))
## [1] 0.03016684
On constate que les observations ont une queue plus lourde que la loi normale.
15
Question 4
x=-x
an=lubridate::year(SP$Date[2:(n+1)])
m=tapply(x,an,max)
bloc_length = tapply(x,an,length)
taban=unique(an)
par(mfrow=c(2,1))
plot(taban,m,type='l',main='max annuel')
plot(taban,bloc_length,type='l',main="Nombre d'observations par an")
max annuel
0.15
m
0.05
taban
245
235
225
taban
16
fit=fevd(m)
ci(fit,type="parameter") #loi à queue lourde
## fevd(x = m)
##
## [1] "Normal Approx."
##
## 95% lower CI Estimate 95% upper CI
## location 0.021214362 0.02390611 0.02659786
## scale 0.007774568 0.01018113 0.01258769
## shape 0.216059246 0.46196444 0.70786964
par(mfrow=c(2,2))
plot(fit)
17
fevd(x = m)
0.25
regression line
Empirical Quantiles
0.15
0.05
0.05 0.10 0.15 0.05 0.10 0.15 0.20
Empirical
Modeled
0.8
30
Return Level
Density
20
0.4
10
0.0
0
#diagnostique OK
#lois à queue lourde (fréchet)
p=0.999
l=mean(bloc_length)
qgev(pˆl,loc = fit$results$par[1],scale = fit$results$par[2],shape = fit$results$par[3])
## location
## 0.04356052
18
1/(1-pgev(m[taban==1987],loc = fit$results$par[1],scale = fit$results$par[2],shape = fit$results$par[3]
## shape
## 156.455
19