Vous êtes sur la page 1sur 7

# --------------------------------------------------------------------

# #
## ##
### ###

#### Econometrie S1 ####


##### Master : Economie Appliqu�e #####
#### Examen : Session Ordinaire ####
### ###
## ##
# #

# --------------------------------------------------------------------

rm(list=ls()) # Supprimer tous les donn�es anciennes

# --------------------------------------------------------------------

# Epreuve d'econom�trie session ordinaire


# Les donn�es se trouve sur un fichier "essence" qui contient les variables
suivantes :
# G : la consommation totale de l'essence
# G0 : la consommation par tete de l'essence (on pose G0=G/Pop)
# Pg : Indice de prix de l'essence
# Y : le revenu r�el par tete
# Pnc : Indice des prix des nouvelles voitures
# Puc : Indice des prix des voitures d'occasion
# Pop : Population

# --------------------------------------------------------------------

# I) Importation du jeu de donn�es

# --------------------------------------------------------------------

# 1) Importation dans un objet "ess"

ess = read.csv2(file.choose(),row.names = 1) # Pour importer les donn�es sans


prendre compte de la premiere colonne (celle des ann�es)
dim(ess) # Pour verifier la dimension de nos
donn�es

# --------------------------------------------------------------------

# 2) Le nom de la fonction qui nous donne les noms des variables en ordre de
l'objet "ess"

names(ess)

# --------------------------------------------------------------------

# II) transformation du mod�le de demande par "ln"

# --------------------------------------------------------------------

# 1) transformation des donn�es et les affecter a un nouveau objet "less"

less = transform(ess, G=log(G/Pop), Pg=log(Pg), Y=log(Y), Pnc=log(Pnc),


Puc=log(Puc))
names(less) = c("G1","Pg1","Y1","Pnc1","Puc1","Pop") # Pour changer les noms des
variables de notre objet "less" et donc on aura G1 = ln(G/Pop)...

# --------------------------------------------------------------------

# 2) Representation graphique de G1 en fonction de Y1

# Pour la periode 1960-1995


reg0 = lm(less$G1~less$Y1) # Creation du mod�le pour
pouvoir dessiner la droite de regression
reg0 # Afficher reg0
plot(less$Y1,less$G1, main="Periode 1960-1995") # Pour presenter le nuage de
point de G1 en fonction de Y1
abline(reg0, col="red") # Pour tracer la droite dans
le graphe
cor(less$Y1,less$G1) # Pour avoir la valeur
numerique de la correlation

x11() # Pour ouvrir une nouvelle fenetre graphique

# Pour la periode 1960-1975


lessreduit = less[1:16,] # Creation d'un nouveau objet
"lessreduit" qui contient juste les valeurs de la periode 1960-1975
regreduit = lm(lessreduit$G1~lessreduit$Y1) # Creation du mod�le pour
pouvoir dessiner la droite de regression reduite
regreduit # Afficher regreduit
plot(lessreduit$Y1,lessreduit$G1, main="Periode 1960-1975") # Pour presenter le
nuage de point de G1 en fonction de Y1
abline(regreduit, col="blue") # Pour tracer la droite dans
le graphe
cor(lessreduit$Y1,lessreduit$G1) # Pour avoir la valeur
numerique de la correlation

# Commentaire :
# On remarque que les points de nuages de la periode 1960-1995, sont un peu
eloigner de la droite
# de regression, ce qui fait que la correlation est moin forte que sur la periode
1960-1975 o� les points
# sont presque aligner sur la droite ce qui donne une tr�s forte correlation
(r=0.98) comme l'indique la valeur
# de correlation donner par la fonction "cor()"
# L'ajustement est de meilleure qualit� sur la periode 1960-1975
# On remarque egalement qu'appartir de 1975, il y a un changement structurelle de
la serie.

# --------------------------------------------------------------------

# III) Estimation du mod�le de regression simple

# --------------------------------------------------------------------

# 1) Mod�le Simple G1 en fonction de Y1

reg1 = lm(less$G1~less$Y1) # Regression Simple


summary(reg1) # Resumer des donn�es
# Commentaire :
# D'abord, on remarque le min respectivement le max de la serie calculer
# par les formules max(la plus petite valeur ; Q1-1.5(Q3-Q1))
# respectivement min(la plus grande valeur ; Q3+1.5(Q3-Q1)) avec Q est le quartile
# On remarque egalement la mediane qui partage la serie en 2 parties
# On sait que la constante alpha0=(G1bar-(alpha1*Y1bar)) existe et
Alpha1=(cov(Y1,G1)/variance(Y1))
# tr�s significative puisque leurs P-values est inferieur a 5%
# On a egalement les coefficients estimer ln(alpha0) = -6.049 qui represente
# la constante et alpha1 = 0.663 qui represente la pente
# L'ecart-type de l'erreur etant egale a 0.0683 et qui est egale a la variance
residuel
# diviser par son degr�e de libert� (SCR/n-p-1) avec p : le nombre de variable
# et donc n-p-1 = 36-1-1 = 34 qui est donn�e dans le summary
# La statistique de Fisher (F= ((SCE/p)/(SCR/n-p-1))=138,3) pour un degr�e de
libert� (ddl = 34)
# et qui nous donne une p-value = 1.56*10^-13 du mod�le tr�s inferieur a 5% et donc
# notre mod�le est tr�s significatif
# Finalement, on a le coefficient de determination R�=SCE/SCT=0.8027
# et le coefficient de determination ajust� R(bar)�=((1-((n-1)/(n-p-1)))*(1-
R�))=0.7969
# qui est assez proche de 1 et donc une bonne qualit� d'explication du mod�le
# Et donc, on a une bonne qualit� et un mod�le tr�s significatif.

# --------------------------------------------------------------------

# 2) Interpretation
# Dans tout mod�le sp�cifi� sous forme de log-log, les coefficients s'interpr�tent
directement
# en terme d'�lasticit�s (en pourcentage)
# On a la pente alpha1 = 0.663, alors que la constante ln(alpha0) = -6.049 d'o�
notre mod�le s'ecrit
# ln(G0) = -6.049 + 0.663*ln(Y) ou encore sous la forme non-logarithmique
# G0 = 0.00236*(Y^(0.663)) avec (alpha0 = 0.00236 parce que on a alpha0 =
exp(ln(alpha0)))
# La pente alpha1 = 0.663 qui signifie qu'a chaque fois que "Y" qui represente le
# revenu r�el par tete augmente de 10%, "G0" qui represente la consommation par
tete augmente en moyenne de 6.63%

# --------------------------------------------------------------------

# IV) Estimation des mod�les de r�gression multiple

reg2 = lm(less$G1~less$Y1+less$Pg1) # Mod�le de regression 2


reg3 = lm(less$G1~less$Y1+less$Pg1+less$Pnc1) # Mod�le de regression 3
reg4 = lm(less$G1~less$Y1+less$Pg1+less$Pnc1+less$Puc1) # Mod�le de regression 4
summary(reg2) # Resumer des donn�es du mod�le 2
summary(reg3) # Resumer des donn�es du mod�le 3
summary(reg4) # Resumer des donn�es du mod�le 4

# Commentaire :

# Mod�le 2 : d'apr�s le summary, on remarque deja que tous les coefficients sont
tr�s significatifs
# ainsi que la P-value du modele �galement tr�s significative, et un coefficient de
determination ajuster
# egale a 0.9084 encore superieur a celui du mod�le simple ce qui signifie que la
qualit� d'explication
# de ce mod�le est encore mieux que celle du mod�le simple.
# Et d'apr�s l'estimation des coefficients on conclue que quand Y1=ln(Y) et
Pg1=ln(Pg) sont nul, on aura
# une baisse moyenne du log de la consommation par tete G1=ln(G) de 10.67
(autrement si alpha1 et alpha2 sont nul
# alors on aura une augmentation moyenne de "G0" de alpha0=exp(-10.67585)) (presque
nul)
# et quand le revenu r�el par tete "Y" augmente de 10%, la consommation par tete
"G0"
# augmente en moyenne de 11.85%, et quand l'indice de prix de l'essence "Pg"
augmente de 10%
# la consommation par tete "G0" baisse en moyenne de 1.95%

# Notre mod�le s'ecrit comme suite :


# ln(G0) = -10.67 + 1.1858 ln(Y) - 0.1957 ln(Pg), ou encore sous forme non-
logarithmique
# G0 = 0.0000231*(Y^(1.1858))*(Pg^(-0.1957))

# _____________________________________________

# Mod�le 3 : d'apr�s le summary, on remarque deja que les coefficients


alpha0,alpha1 et alpha3 sont tr�s significatifs
# alors que le coefficient alpha2 est tr�s peu significative, voir meme non
significative, mais la P-value du modele
# reste tr�s significative, avec un coefficient de determination ajuster egale a
0.95 encore superieur
# a celui du mod�le 2 ce qui signifie que la qualit� d'explication de ce mod�le est
encore mieux
# Et d'apr�s l'estimation des coefficients on conclue que quand Y1, Pg1, Pnc1 sont
nul, on aura
# une baisse moyenne du log de la consommation par tete G1 de 11.92 (autrement si
alpha1, alpha2 et alpha3
# sont nul alors on aura une augmentation moyenne de "G0" de alpha0=exp(-11.92614))
(presque nul)
# et quand le revenu r�el par tete "Y" augmente de 10%, la consommation par tete
"G0"
# augmente en moyenne de 13.27%, et quand l'indice de prix de l'essence "Pg"
augmente de 10%
# la consommation par tete "G0" baisse en moyenne de 0.62%.
# Et quand l'indice de prix des nouvelles voitures "Pnc" augmente de 10%, la
consommation par tete "G0"
# baisse en moyenne de 2.95%.

# Notre mod�le s'ecrit comme suite :


# ln(G0) = -11.92 + 1.327 ln(Y) - 0.0623 ln(Pg) - 0.295 ln(Pnc), ou encore sous
forme non-logarithmique
# G0 = 0.000006655*(Y^(1.327))*(Pg^(-0.0623))*(Pnc^(-0.295))

# _____________________________________________

# Mod�le 4 : d'apr�s le summary, on remarque deja que les coefficients alpha0 et


alpha1 sont tr�s significatives
# alors que les coefficients alpha2, alpha3 et alpha4 ne sont pas signifivatifs.
# Par contre la P-value du modele est tr�s significative, et un coefficient de
determination ajuster
# egale a 0.95 inferieur a celui du mod�le pr�c�dent (mod�le 3) ce qui signifie que
la variable "Puc1" qu'on a ajouter
# n'a pas augmenter la qualit� d'explication du mod�le.
# Et d'apr�s l'estimation des coefficients on conclue que quand Y1, Pg1, Pnc1 et
Puc1 sont nul, on aura
# une baisse moyenne du log de la consommation par tete "G1" de 10.67 (autrement si
alpha1, alpha2, alpha3
# et alpha4 sont nul alors on aura une augmentation moyenne de "G0" de alpha0=exp(-
12.3418)) (presque nul)
# et quand le revenu r�el par tete "Y" augmente en moyenne de 10%, la consommation
par tete "G0"
# augmente en moyenne de 13.734%, et quand l'indice de prix de l'essence "Pg"
augmente en moyenne de 10%
# la consommation par tete "G0" baisse en moyenne de 0.591%.
# Et quand l'indice de prix des nouvelles voitures "Pnc" augmente de 10%, la
consommation par tete "G0"
# baisse en moyenne de 1.268%, egalement quand l'indice de prix des voitures
d'occasions "Puc"
# augmente de 10%, la consommation par tete "G0" baisse en moyenne de 1.187%

# Notre mod�le s'ecrit comme suite :


# ln(G0) = -12.3418 + 1.3734 ln(Y) - 0.0591 ln(Pg) - 0.1268 ln(Pnc) - 0.1187
ln(Puc), ou encore sous forme non-logarithmique
# G0 = 0.000004356*(Y^(1.3734))*(Pg^(-0.0591))*(Pnc^(-0.1268))*(Pnc^(-0.1187))

# --------------------------------------------------------------------

# V) Tests sous contraintes

# --------------------------------------------------------------------

# 1) Tester si la significativit� augmente si Pnc1 = Puc1 = 0

require(car) # Pour charger le package


"car"
A = matrix(c(0,0,0,1,0,0,0,0,0,1), byrow=TRUE, nrow=2) # Cr�e une nouvelle
variable qui contient la matrice des contraintes
A # Afficher la matrice "A"
a = c(0,0) # Cr�e un vecteur pour dire
que alpha3=0 et alpha4=0
linearHypothesis(reg4,A,a) # La commande de test sans
contrainte

# Ou encore, on peut effectuer la meme chose sans avoir besoin de matrice de


contrainte "A", ni du vecteur "a"
linearHypothesis(reg4,c("less$Pnc1=0","less$Puc1=0"))

# _________________________

# Methode a la main

names(anova(reg2)) # Pour avoir les noms des composants de


l'anova
anova(reg2) # On remarque que SCR se trouve en 3eme
position vue qu'il y a 2 variances explicatives avant elle
SCRc = anova(reg2)$Sum[3] # Prendre la valeur SCR du tableau d'anova
du mod�le2
# On remarque que SCR se trouve en 3�me position vue qu'il y a 2 variances
explicatives avant elle (d'ou le nombre 3)

anova(reg4) # On remarque que SCR se trouve en 5eme


position vue qu'il y a 4 variances explicatives avant elle
SCRsc = anova(reg4)$Sum[5] # Prendre la valeur SCR du tableau d'anova
du mod�le4
# On remarque que SCR se trouve en 5�me position vue qu'il y a 4 variances
explicatives avant elle (d'ou le nombre 5)

# Attention le "S" de Sum doit etre en majuscule


r = dim(A)[1] # Le nombre de contrainte egale au nombre
de ligne de la matrice A
n = dim(less)[1] # la taille des observations qui est egale
au nombre de ligne de nos donn�es
p = dim(less)[2]-2 # le nombre de variable explicative (6
expliquer - 1 a expliquer - la colonne de Pop)
F = ((SCRc-SCRsc)/r)/((SCRsc)/(n-p-1)) # La statistique de Fisher
F # Afficher F
Ftab= qf(0.05,r,n-p-1, lower.tail=FALSE) # La valeur de Fisher critique
Ftab # Afficher Ftab
print("F de Fishier > F tabul�, alors on rejet H0") # Ecrire (ou afficher) cette
phrase

# Commentaire :
# on remarque que la statistique de Fisher F=16.36 avec une P-value < 5%
# donc on rejette H0, ce qui fait que prendre alpha3=alpha4=0 augmente
# la significativit�, ce qui prouve le resultat obtenu par le question precedente
# dans la mesure o� ils sont non-significatifs

# --------------------------------------------------------------------

# 2) Tester un changement structurel dans le mod�le 3 avec test de chow (avec


point de rupture est l'ann�e 1975)

require(gap) # Pour charger le package "gap"


cho1 = less[1:16,] # Creation d'un nouveau tableau qui
contient juste les valeurs de la periode 1960-1975
cho2 = less[17:36,] # Creation d'un nouveau tableau qui
contient juste les valeurs de la periode 1976-1995
X1 = cbind(cho1$Y1,cho1$Pg1,cho1$Pnc1) # Creation d'une matrice qui contient juste
les variables exog�nes de la periode 1960-1975
X2 = cbind(cho2$Y1,cho2$Pg1,cho2$Pnc1) # Creation d'une matrice qui contient juste
les variables exog�nes de la periode 1976-1995
chow = chow.test(cho1$G1,X1,cho2$G1,X2) # Effectuer le test de stabilit� de chow
en l'enregistrant dans une variable qu'on a nomm� "chow"
chow # Afficher le test de chow

# _________________________

# Methode � la main

regcho1 = lm(cho1$G1~cho1$Y1+cho1$Pg1+cho1$Pnc1) # Une regression lineaire


du mod�le3 pour la periode 1960-1975
regcho2 = lm(cho2$G1~cho2$Y1+cho2$Pg1+cho2$Pnc1) # Une regression lineaire
du mod�le3 pour la periode 1976-1995
SCR1 = anova(regcho1)$Sum[4] # La variance residuel du
mod�le3 pour la periode 1960-1975
SCR2 = anova(regcho2)$Sum[4] # La variance residuel du
mod�le3 pour la periode 1976-1995
SCRTot = anova(reg3)$Sum[4] # La variance residuel sur
toute la periode 1960-1995

# Attention le "S" de Sum doit etre en majuscule


# On remarque que SCR se trouve en 4�me position vue qu'il y a 3 variances
explicatives avant elle (d'ou le nombre 4)

n1 = dim(cho1)[1] # Nombre d'observation de


nos donn�es de 1960-1975
n2 = dim(cho2)[1] # Nombre d'observation de
nos donn�es de 1976-1995
pmod3 = dim(less)[2]-3 # le nombre de variable
explicative (6 expliquer - 1 a expliquer - la colonne de Pop - la colonne Puc1
puisqu'on est dans mod�le3)
Fchow = ((SCRTot-(SCR1+SCR2))/(pmod3+1))/((SCR1+SCR2)/(n1+n2-(2*(pmod3+1)))) #
La statistique de Fisher
Fchow #
Afficher Fchow
Ftabchow= qf(0.05,pmod3+1,n1+n2-(2*(pmod3+1)), lower.tail=FALSE) #
La valeur de Fisher critique
Ftabchow #
Afficher Ftab
print("F de Fishier > F tabul�, alors on rejet H0") #
Ecrire (ou afficher) cette phrase

# Commentaire :
# on remarque que la statistique de Fisher F=28,719 avec une P-value < 5%
# donc on rejette H0, ce qui fait qu'on ne peut pas considerer les donn�es comme
# un seul mod�le, mais il faut bien les prendres comme 2 mod�les separ�s

# --------------------------------------------------------------------

Vous aimerez peut-être aussi