1 Profil complet enseignement

publicité
Université de CAEN
1
M2-MASS Modèles de régression
Profil complet enseignement
1.1
Description
On veut modéliser l’appréciation notée d’un enseignement fait par un étudiant en fonction de trois variables à
l’aide d’un modèle linéaire.
– La nature de l’enseignemnt
– Les prérequis
– Le niveau du cours.
1
2
3
4
5
6
7
8
1.2
nature
professionnel
professionnel
professionnel
professionnel
theorique
theorique
theorique
theorique
prerequis
M1
M1
sans
sans
M1
M1
sans
sans
niveau
difficile
facile
difficile
facile
difficile
facile
difficile
facile
note
7
6
6
4
9
8
9
7
Enoncé
1. Lire les données contenues dans le fichier enseignement.tx.
2. Quels sont le codage associé aux variables qualitatives. Changer le codage par defaut de toutes les variables
qualitatives en utilissant le contraste R contr.sum. Interprétez les nouvelles inconnues associées à ce contraste.
3. Constuire un modèle linéaire expliquant la moyenne des notes par un modèle additif sans interactions. Quel sont
les degrés de libertés utilisés ? quel est le nombre minimal de personne que l’on aurait pu interroger ?
(Intercept)
nature1
prerequis1
niveau1
Estimate
7.0000
-1.2500
0.5000
0.7500
Std. Error
0.1768
0.1768
0.1768
0.1768
t value
39.60
-7.07
2.83
4.24
Pr(>|t|)
0.0000
0.0021
0.0474
0.0132
4. Soit x = (nature, prerequis, niveau) un stimuli, calculer la note prédite pour x : E(Ybx ) de deux manières
différentes.
5. Quel est le stimuli le moins apprécié, le mieux apprécié.
6. soit x2 ∈ X 2 une modalité de la variable prerequis et x3 ∈ X 3 une modalité de la variable niveau. On appelle
variation de la variable Yb pour la variable X 1 : P → X 1 :
range(X 1 )(x2 , x3 ) = maxx1 ∈X 1 ,x′1 ∈X 1 |E(Yb(x1 ,x2 ,x3 ) − Yb(x′1 ,x2 ,x3 ) )|
Expliquez pourquoi range(X 1 ) ne dépend ni de x2 ni de x3 .
7. On appelle importance de la variable X 1 le nombre exprimé en pourcentage de variation total.
100 ∗
range(X 1 )
range(X 1 )
+ range(X 2 ) + range(X 3 )
Calculer alors le tableau des importances de chaque variables
nature prerequis
50
20
niveau
30
8. Dans SAS, lire la table et faire l’analyse conjointe du profil avec l’aide de la procédure transreg
proc transreg utilities data=table;
title2 ’Analyse conjointe metrique’;
model linear(note) = class(nature prerequis niveau / zero=sum);
run;
AC
1
[email protected]
Université de CAEN
1.3
1.3.1
M2-MASS Modèles de régression
Solutions
Solution R
require(xtable)
X=read.table(’enseignement.txt’,header=TRUE)
summary(X)
contrasts(X$nature)
options("contrasts")
# tout est en facteur
# contr.treatment ordre alphabetique
# defaut unordered="contr.treatment"
ordered="contr.poly"
# modifier les contrastes
contr.sum(5)
#
delta(ieme modalite) - delta(dernire modalite)
contrasts(X$nature)
=contr.sum(2)
contrasts(X$prerequis)=contr.sum(2)
contrasts(X$niveau)
=contr.sum(2)
contrasts(X$niveau)
# difficile -facile
# modèle linéaire sans interaction
Z=model.matrix(~nature+prerequis+niveau,data=X)
m=lm(note~nature+prerequis+niveau,data=X)
# interprétation des
coefficients du modèle
nature="professionnel";prerequis="M1";niveau="difficile"
note.pred1=predict(m,newdata=data.frame(nature,prerequis,niveau))
note.pred=
coef(m)[["(Intercept)"]]+
coef(m)[["nature1"]]*((nature=="professionnel") -(nature=="therorique"))+
coef(m)[["prerequis1"]]*((prerequis=="M1") -(prerequis=="sans"))+
coef(m)[["niveau1"]]*((niveau=="difficile")-(niveau=="facile"))
# R2
summary(m) # 0.95
# stimuli les moins apréciés
X[X$note==min(X$note),]
# stimuli les plus apréciés
X[X$note==max(X$note),]
# importance
noms=strsplit(deparse(formula(m)),"~")[[1]][2]
noms=strsplit(noms,’+’,extended=FALSE)[[1]]
noms=gsub(" ","",noms)
importances=list()
for (nom in noms) importances[[nom]]=2*max(abs(coef(m)[grep(nom,names(coef(m)))]))
importances=unlist(importances)
importances=importances/sum(importances)*100
# graphiques
X.pred=X;X.pred$note=predict(m)
#pdf(file="ps/plot_design.pdf")
plot.design(note~.,data=X.pred)
#dev.off()
# non métrique pas de succes dans R
# echec prog lineaire quadratique
# echec reg multinomiale ordonnée
# ERREUR G
PAS DEFINI POSITIVE....
library(quadprog)
Y=matrix(0,nrow(X),nrow(X))
for (c in 1:ncol(Y)) {
for (l in c:nrow(X)) {
Y[l,c]=1
}
}
Y=cbind(Y, -Z)
G=t(Y)%*%Y
Gl=rep(0,nrow(G))
C=diag(1,nrow(X),ncol(Y))
C=t(C[-1,])
C0=rep(0.5,ncol(C))
solve.QP.compact(G*2,Gl,C,C0) # ERR par def positif....
AC
2
[email protected]
Université de CAEN
# regression ordinale singulier 7
M2-MASS Modèles de régression
dl pour les termes constants
tmp=polr(factor(note,ordered=TRUE)~nature,data=X)
AC
3
[email protected]
Université de CAEN
1.3.2
M2-MASS Modèles de régression
Solution SAS
/*
---------------------------------------------------------------INITIALISATION
---------------------------------------------------------------*/
%let
titre=Preferences en enseignement;
%let
home=C:\users\francois\SAS\enseignement;/*HOME DIRECTORY*/
options user="C:\users\francois\SAS\lib";
/* LIBRAIRIE UTILISATEUR */
goptions reset=all;
/* option par defaut */
proc datasets library=user KILL;run;
/* effecement librairie */
%let idate=%sysfunc(datetime());
%let date=%sysfunc(putn(&idate,datetime20.));
title1 "&titre";
footnote j=r "&titre" j=l "FK &date";/* les textes sont entre quote */
title &titre;
/*
---------------------------------------------------------------LECTURE TABLE
---------------------------------------------------------------*/
data table;
infile "&home\enseignement.txt" firstobs=2;
input nature ~$15. prerequis ~$15. niveau ~$15. note;
;run;
/* preferences */
proc sort data=table;
by note;
run;
/*
---------------------------------------------------------------ANALYSE CONJOINTE
---------------------------------------------------------------*/
proc transreg utilities data=table;
title2 ’Analyse conjointe metrique’;
model linear(note) = class(nature prerequis niveau / zero=sum);
run;
ods latex file="&home\transreg.tex";
proc transreg utilities data=table;
title2 ’Analyse conjointe non metrique’;
model monotone(note) = class(nature prerequis niveau / zero=sum);
output out=conjoint;
run;
ods latex close;
title2 h=1 ’Analyse conjointe non metrique’;
symbol1 v=plus i=join;
axis1 order=(1 to 10) label=(angle=90 ’f(note)’);
axis2 order=(1 to 9) label=(’note’);
proc gplot data=conjoint gout=user.graphes;
plot tnote * note = 1 / frame haxis=axis2 vaxis=axis1
name=’transre’;
format tnote 4.;
run;
goptions reset=all;
/*
---------------------------------------------------------------MODELE LINEAIRE
---------------------------------------------------------------*/
/*
identique au modele transreg linear(note)
ne marche pas en multinomial+cumlogit
PB =monotone(note)
*/
ods latex file="&home\genmod.tex";
proc genmod data=table;
class nature prerequis niveau (param=effect ref=LAST) ;
model note =nature prerequis niveau/
dist=normal
link=id;
run;
ods latex close;
AC
4
[email protected]
Université de CAEN
M2-MASS Modèles de régression
/*
------------------------------------------------------------SORTIES GRAPHIQUES PS
------------------------------------------------------------*/
FILENAME psdir
"&home\PS";
goptions reset=all gsfname=psdir device=pslepsfc;
proc greplay igout=user.graphes nofs;
replay _ALL_;
run;
quit;
AC
5
[email protected]
Téléchargement