• Aucun résultat trouvé

1ACMsurdonnéesfictives TP2:AnalysedesCorrespondencesMultiples

N/A
N/A
Protected

Academic year: 2022

Partager "1ACMsurdonnéesfictives TP2:AnalysedesCorrespondencesMultiples"

Copied!
13
0
0

Texte intégral

(1)

Master 2 MIMSE 2015-2016 Analyse des données 2

TP2 : Analyse des Correspondences Multiples

1 ACM sur données fictives

Récupérer les jeux de données chiens.rda. Il s’agit de données fictives où 27 races de chiens sont décrites avec 7 variables qualitatives.

1. Charger le jeu de données chiens dans R avec la commande load. Afficher les données. Quelle est la classe de cet objet ?

load(file="chiens.rda") head(chiens)

## taille poids velocite intellig affect agress fonction

## beauceron T++ P+ V++ I+ Af+ Ag+ Utilite

## basset T- P- V- I- Af- Ag+ Chasse

## ber_allem T++ P+ V++ I++ Af+ Ag+ Utilite

## boxer T+ P+ V+ I+ Af+ Ag+ Compagnie

## bull-dog T- P- V- I+ Af+ Ag- Compagnie

## bull-mass T++ P++ V- I++ Af- Ag+ Utilite dim(chiens)

## [1] 27 7 class(chiens)

## [1] "data.frame"

2. Créez une matrice H contenant la description des n = 27 races canines sur uniquement les p = 6 premières variables.

H <- subset(chiens,select=-fonction)

3. On veut effectuer l’ACM de cette matrice H.

(a) Quelle décomposition en valeurs singulières généralisée (GSVD) faut-il faire ? Réaliser cette DSVG avec R.

library(FactoMineR)

K <- tab.disjonctif(H)

#---Calcul de la matrice R ---

F <- K/sum(K) #matrice des frequences

r<-apply(F,1,sum) #poids des lignes c<-apply(F,2,sum) #poids des colonnes

R <- diag(1/r)%*%(F-r%*%t(c))%*%diag(1/c)

source("gsvd.R")

(2)

(b) Montrer qu’en ACM, l’inertie totale des données vaut toujours m

p − 1 où m est le nombre total de modalités et p le nombre de variables qualitatives. Vérifiez ensuite avec R que la somme des valeurs singulières trouvées à la question précédente vaut bien m

p − 1.

sum(d^2) #somme des valeurs singulieres

## [1] 1.7

p <- ncol(H) #nb de variables qualitatives

q <- ncol(K) #nb de modalites

q/p-1

## [1] 1.7

(c) Vérifiez également que le nombre maximum de dimension de cette ACM vaut bien min(n − 1, m − p).

round(d^2,digit=3)

## [1] 0.482 0.385 0.211 0.158 0.150 0.123 0.081 0.046 0.024 0.008 length(d) #10 valeurs propres non nulles

## [1] 10 q-p #min(n-1,q-p)

## [1] 10

(d) Représenter dans un diagramme en barre les pourcentages d’inertie expliquée par les dimensions de l’ACM.

barplot(d^2/sum(d^2)*100,names.arg=1:length(d),xlab="dim",ylab="pourcentage d'inertie expliquée")

1 2 3 4 5 6 7 8 9 10

dim pourcentage d'inertie expliquée 0510152025

(e) Determiner les matrices X et Y des coordonnées factorielles des races de chiens et des modalités des variables qualitatives sur les k = 3 premières dimensions. Modifier les noms des lignes et des colonnes dans X et Y afin qu’ils soient parlants.

#coordonnees factorielles des races de chiens

X <- data.frame(U[,1:3]%*%diag(d[1:3]))

rownames(X) <- rownames(H)

colnames(X) <- paste("dim", 1:3, sep = "") round(X,digit=2)

## dim1 dim2 dim3

## beauceron -0.32 0.42 0.10

## basset 0.25 -1.10 0.19

## ber_allem -0.49 0.46 0.50

## boxer 0.45 0.88 -0.69

## bull-dog 1.01 -0.55 0.16

## bull-mass -0.75 -0.55 -0.50

(3)

## caniche 0.91 0.02 0.58

## chihuahua 0.84 -0.84 0.47

## cocker 0.73 -0.08 -0.66

## colley -0.12 0.53 0.33

## dalmatien 0.65 0.99 -0.46

## dobermann -0.87 0.32 0.45

## dogue_all -1.05 -0.51 -0.17

## epagn_bre 0.48 1.04 -0.06

## epagn_fra -0.14 0.52 -0.12

## fox_hound -0.88 -0.03 0.36

## fox_terri 0.88 -0.14 -0.05

## grand_ble -0.52 0.11 -0.04

## labrador 0.65 0.99 -0.46

## levrier -0.68 0.08 0.60

## mastiff -0.76 -0.89 -0.59

## pekinois 0.84 -0.84 0.47

## pointer -0.67 0.42 0.69

## saint_ber -0.58 -0.59 -0.89

## setter -0.50 0.38 0.29

## teckel 1.01 -0.55 0.16

## terre_neu -0.38 -0.49 -0.66

#coordonnees factorielles des modalités

Y <- data.frame(V[,1:3]%*%diag(d[1:3]))

rownames(Y) <- colnames(K)

colnames(Y) <- paste("dim", 1:3, sep = "") round(Y,digit=2)

## dim1 dim2 dim3

## T- 1.18 -0.92 0.62

## T+ 0.85 1.23 -1.02

## T++ -0.84 0.02 0.05

## P- 1.17 -0.82 0.36

## P+ -0.31 0.82 0.23

## P++ -1.02 -0.97 -1.22

## V- 0.32 -1.04 -0.40

## V+ 0.60 0.89 -0.36

## V++ -0.89 0.37 0.76

## I- -0.35 -0.81 0.35

## I+ 0.37 0.29 -0.49

## I++ -0.34 0.46 0.60

## Af- -0.84 -0.29 -0.07

## Af+ 0.78 0.27 0.06

## Ag- 0.40 0.19 0.31

## Ag+ -0.43 -0.21 -0.33

(f) Faire un plot des individus et des modalités dans le premier plan factoriel.

dim1 <- 1

dim2 <- 2

dim <- c(dim1,dim2)

pourc <- round(d[1:3]^2/sum(d^2)*100, digit = 2)

lab.x <- paste("Dim ", dim1, " (", pourc[dim1], "%)", sep = "") lab.y <- paste("Dim ", dim2, " (", pourc[dim2], "%)", sep = "")

#Plan factoriel des individus

xmin <- min(X[,dim1])

xmax <- max(X[,dim1])

xlim <- c(xmin, xmax)* 1.2

ymin <- min(X[,dim2])

ymax <- max(X[,dim2])

ylim <- c(ymin, ymax)* 1.2

plot(X[,dim],xlab=lab.x,ylab=lab.y,xlim=xlim,ylim=ylim,pch=20) abline(v = 0, lty = 2)

abline(h = 0, lty = 2)

text(X[,dim],labels=rownames(X),pos=3)

(4)

−1.0 −0.5 0.0 0.5 1.0

−1.0−0.50.00.51.0

Dim 1 (28.9%)

Dim 2 (23.08%)

beauceron

basset ber_allem

boxer

bull−dog bull−mass

caniche

chihuahua cocker colley

dalmatien

dobermann

dogue_all

epagn_bre

epagn_fra

fox_hound

fox_terri grand_ble

labrador

levrier

mastiff pekinois

pointer

saint_ber setter

teckel terre_neu

#Plan factoriel des modalites

xmin <- min(Y[,dim1])

xmax <- max(Y[,dim1])

xlim <- c(xmin, xmax)* 1.2

ymin <- min(Y[,dim2])

ymax <- max(Y[,dim2])

ylim <- c(ymin, ymax)* 1.2

plot(Y[,dim],xlab=lab.x,ylab=lab.y,xlim=xlim,ylim=ylim,pch=17) abline(v = 0, lty = 2)

abline(h = 0, lty = 2)

text(Y[,dim],labels=rownames(Y),pos=3)

−1.0 −0.5 0.0 0.5 1.0 1.5

−1.0−0.50.00.51.01.5

Dim 1 (28.9%)

Dim 2 (23.08%)

T−

T+

T++

P−

P+

P++ V−

V+

V++

I−

I+

I++

Af−

Ag− Af+

Ag+

(g) Utiliser la relation quasi-barycentrique pour retouver les coordonnées factorielles de la modalité T++ à partir des coordonnées factorielles des races de chiens.

which(K[,1]==1) #indice des lignes des chiens T++

## basset bull-dog caniche chihuahua fox_terri pekinois teckel

## 2 5 7 8 17 22 26

moy <- apply(X[which(K[,1]==1),],2,mean) #moyenne des coord. fact. des chiens T++

moy*(1/d[1:3]) #relation quasi-barycentrique

## dim1 dim2 dim3

## 1.18 -0.92 0.62 Y[1,] #coord. fact. de T++

## dim1 dim2 dim3

## T- 1.2 -0.92 0.62

(5)

(h) Quels est le rapport de corrélation entre la variable taille avec la première composante prin- cipale ? Entre la variable taille et la seconde composante principale ?

eta2 <- function(x, gpe) {

moyennes <- tapply(x, gpe, mean) effectifs <- tapply(x, gpe, length)

varinter <- (sum(effectifs* (moyennes - mean(x)) ^ 2)) vartot <- (var(x) * (length(x) - 1))

res <- varinter / vartot

return(res) }

eta2(X$dim1,chiens$taille)

## [1] 0.89

eta2(X$dim2,chiens$taille)

## [1] 0.5

4. On veut maintenant utiliser la fonction MCA du package FactoMineR.

(a) Faire l’ACM des données sur les races canines en mettant la variable fonction en illustratif.

res <- MCA(chiens, quali.sup = 7)

−1.5 −1.0 −0.5 0.0 0.5 1.0 1.5

−1.5−1.0−0.50.00.51.0

MCA factor map

Dim 1 (28.90%)

Dim 2 (23.08%)

T−

T+

T++

P−

P+

P++ V−

V+

V++

I−

I+

I++

Af−

Af+

Ag−

Ag+

Compagnie

Chasse Utilite

−1.5 −1.0 −0.5 0.0 0.5 1.0 1.5

−1.0−0.50.00.51.0

MCA factor map

Dim 1 (28.90%)

Dim 2 (23.08%)

beauceron basset

ber_allem

boxer

bull−dog bull−mass

caniche chihuahua

cocker

colley

dalmatien dobermann

dogue_all

epagn_bre epagn_fra fox_hound

fox_terri

grand_ble

labrador levrier

mastiff

pekinois

pointer saint_ber

setter

teckel terre_neu

(6)

0.0 0.2 0.4 0.6 0.8 1.0

0.00.20.40.60.81.0

Dim 1 (28.90%)

Dim 2 (23.08%)

taille poids velocite

intellig

affect agress

fonction

#print(res)

(b) Retrouvez les résulats numériques et les graphiques de la question 2.

head(X)

## dim1 dim2 dim3

## beauceron -0.32 0.42 0.10

## basset 0.25 -1.10 0.19

## ber_allem -0.49 0.46 0.50

## boxer 0.45 0.88 -0.69

## bull-dog 1.01 -0.55 0.16

## bull-mass -0.75 -0.55 -0.50 head(res$ind$coord)

## Dim 1 Dim 2 Dim 3 Dim 4 Dim 5

## beauceron -0.32 -0.42 -0.10 -0.21 -0.12

## basset 0.25 1.10 -0.19 0.29 -0.52

## ber_allem -0.49 -0.46 -0.50 0.58 0.28

## boxer 0.45 -0.88 0.69 0.26 -0.46

## bull-dog 1.01 0.55 -0.16 -0.35 0.33

## bull-mass -0.75 0.55 0.50 0.66 0.72 head(Y)

## dim1 dim2 dim3

## T- 1.18 -0.924 0.616

## T+ 0.85 1.232 -1.016

## T++ -0.84 0.021 0.051

## P- 1.17 -0.824 0.359

## P+ -0.31 0.819 0.231

## P++ -1.02 -0.974 -1.222 head(res$var$coord)

## Dim 1 Dim 2 Dim 3 Dim 4 Dim 5

## T- 1.18 0.924 -0.616 0.120 -0.020

## T+ 0.85 -1.232 1.016 0.342 -0.310

## T++ -0.84 -0.021 -0.051 -0.170 0.113

## P- 1.17 0.824 -0.359 0.165 -0.051

## P+ -0.31 -0.819 -0.231 -0.118 -0.190

## P++ -1.02 0.974 1.222 0.068 0.615

plot(res,choix="ind",invisible=c("var","quali.sup"))

(7)

−1.5 −1.0 −0.5 0.0 0.5 1.0 1.5

−1.0−0.50.00.51.0

MCA factor map

Dim 1 (28.90%)

Dim 2 (23.08%)

beauceron basset

ber_allem

boxer bull−dog bull−mass

caniche chihuahua

cocker

colley

dalmatien dobermann

dogue_all

epagn_bre epagn_fra fox_hound

fox_terri

grand_ble

labrador levrier

mastiff pekinois

pointer saint_ber

setter

teckel terre_neu

plot(res,choix="ind",invisible="ind")

−1.5 −1.0 −0.5 0.0 0.5 1.0 1.5

−1.5−1.0−0.50.00.51.0

MCA factor map

Dim 1 (28.90%)

Dim 2 (23.08%)

T−

T+

T++

P−

P+

P++ V−

V+

V++

I−

I+

I++

Af−

Af+

Ag−

Ag+

Compagnie

Chasse Utilite

(c) Retrouver les rapports de corrélations entre les variables qualitatives et les deux premières composantes principales. Faire le plot des variables en fonction de ces rapports de corrélation en utilisant la fonction plot.MCA.

res$var$eta2[,1:2]

## Dim 1 Dim 2

## taille 0.89 0.502

## poids 0.64 0.725

## velocite 0.41 0.684

## intellig 0.13 0.280

## affect 0.65 0.077

## agress 0.17 0.041

plot(res,choix="var",invisible=c("ind"))

(8)

0.0 0.2 0.4 0.6 0.8 1.0

0.00.20.40.60.81.0

Dim 1 (28.90%)

Dim 2 (23.08%)

taille poids velocite

intellig

affect agress

fonction

(d) Mettre des données manquantes dans les données avec le code suivant :

chiensNA <- H chiensNA[1,1] <-NA chiensNA[2,2] <-NA

(e) Faire l’ACM de chiensNA. Comment les données manquantes sont-elles prises en compte dans la fonction MCA du package FactoMineR ?

res2 <- MCA(chiensNA,graph=FALSE)

plot(res2,choix="ind",invisible="ind")

−2 −1 0 1 2

−10123

MCA factor map

Dim 1 (24.55%)

Dim 2 (19.96%)

T−

T+

T++

taille.NA

P−

P+

P++

poids.NA

V−

V+

V++

I−

I+

I++

Af−

Af+

Ag−

Ag+

5. On veut maintenant comparer l’ACM et l’AFC dans le cas particulier de deux variables qualitatives.

(a) Avec la fonction CA de FactoMineR, effectuer l’AFC du tableau de contingence croisant les variables taille et poids.

N <- table(H[,1:2])

resca<-CA(N,ncp=2,graph=FALSE) #AFC

(b) Avec la fonction MCA, effectuer l’ACM des deux premières colonnes des données chiens.

resmca<-MCA(H[,1:2],graph=FALSE) #ACM

(c) Comparez les valeurs propres des deux analyses et vérifiez que vous retrouvez les relations du cours.

resca$eig #valeurs propres de CA

## eigenvalue percentage of variance cumulative percentage of variance

## dim 1 0.861 91.7 92

## dim 2 0.077 8.3 100

(9)

resmca$eig # valeurs propres de MCA

## eigenvalue percentage of variance cumulative percentage of variance

## dim 1 0.964 48.2 48

## dim 2 0.639 32.0 80

## dim 3 0.361 18.0 98

## dim 4 0.036 1.8 100

#relation entre les valeurs propres des deux analyses

mu <- resca$eig[,1]

(1+sqrt(mu))/2 #on retrouve des deux premieres valeurs propres de MCA

## [1] 0.96 0.64

(1-sqrt(mu))/2 #on retrouve des deux dernieres valeurs de MCA

## [1] 0.036 0.361

2 ACM avec données manquantes et choix du nombre de composantes

Le package R missMDA permet de gérer les données manquantes en ACP et en ACM, et de choisir le nombre de composantes par validation croisée. Ce travail est à réaliser en binôme et à me rendre.

1. Regarder les vidéos concernant ce package : https://www.youtube.com/user/HussonFrancois 2. Préparer un document avec Rmardown qui décrit les principales fonctionnalités de ce package, avec

à chaque fois une explication de la méthode, des exemples et du code.

3 ACM et clustering

1. On reprend ici l’exercice 3 du devoir surveillé de décembre 2013.

(a) Répondre aux questions.

(b) Retrouver le code R de cet exercice.

load("credit.Rdata") library(FactoMineR)

#description des donnees str(credit)

## 'data.frame': 468 obs. of 7 variables:

## $ Type.de.client : Factor w/ 2 levels "bon client","mauvais client": 1 1 2 1 1 1 1 1 1 1 ...

## $ Age.du.client : Factor w/ 4 levels "de 23 à 40 ans",..: 4 3 1 1 3 1 4 4 2 4 ...

## $ Situation.familiale : Factor w/ 4 levels "célibataire",..: 1 1 4 2 1 1 3 3 1 1 ...

## $ Ancienneté : Factor w/ 5 levels "anc. 1 an ou moins",..: 5 1 4 2 4 1 4 5 2 3 ...

## $ Domiciliation.du.salaire: Factor w/ 2 levels "domicile salaire",..: 1 1 1 1 2 1 1 1 1 1 ...

## $ Profession : Factor w/ 3 levels "cadre","employé",..: 2 2 2 2 2 2 1 1 2 2 ...

## $ Moyenne.en.cours : Factor w/ 3 levels "de 2 à 5 KF encours",..: 1 1 1 3 1 1 1 1 2 1 ...

apply(credit,2,table)

## $Type.de.client

#### bon client mauvais client

## 237 231

#### $Age.du.client

#### de 23 à 40 ans de 40 à 50 ans moins de 23 ans plus de 50 ans

## 150 122 88 108

##

(10)

## $Ancienneté

#### anc. 1 an ou moins anc. de 1 à 4 ans anc. de 4 à 6 ans

## 199 47 69

## anc. de 6 à 12 ans anc. plus 12 ans

## 66 87

#### $Domiciliation.du.salaire

#### domicile salaire non domicile salaire

## 316 152

#### $Profession

#### cadre employé profession autre

## 77 237 154

#### $Moyenne.en.cours

#### de 2 à 5 KF encours moins de 2KF encours plus de 5 KF encours

## 308 98 62

#ACM sur les 7 variables qualitatives

res <- MCA(credit,graph=FALSE)

dim=c(1,2)

plot(res,axes=dim,choix="var",invisible="ind")

0.0 0.2 0.4 0.6 0.8 1.0

0.00.20.40.60.81.0

Dim 1 (14.39%)

Dim 2 (10.03%)

Type.de.client Age.du.client Situation.familiale

Ancienneté

Domiciliation.du.salaire Profession

Moyenne.en.cours

res$var$eta2

## Dim 1 Dim 2 Dim 3 Dim 4 Dim 5

## Type.de.client 0.44 0.15 0.0013 0.0739 1.8e-08

## Age.du.client 0.40 0.31 0.5174 0.5053 6.5e-03

## Situation.familiale 0.24 0.40 0.2769 0.2753 3.6e-01

## Ancienneté 0.45 0.23 0.2504 0.1022 4.1e-01

## Domiciliation.du.salaire 0.32 0.11 0.0015 0.0031 1.3e-02

## Profession 0.27 0.26 0.1471 0.0957 1.3e-01

## Moyenne.en.cours 0.19 0.14 0.0704 0.1971 1.8e-01 plot(res,axes=dim,invisible="ind")

(11)

−2 −1 0 1 2

−10123

MCA factor map

Dim 1 (14.39%)

Dim 2 (10.03%)

bon client mauvais client

de 23 à 40 ans de 40 à 50 ans moins de 23 ans

plus de 50 ans

célibataire

divorcé marié veuf

anc. 1 an ou moins anc. de 1 à 4 ans

anc. de 4 à 6 ans

anc. de 6 à 12 ans

anc. plus 12 ans

domicile salaire non domicile salaire

cadre

employé profession autre

de 2 à 5 KF encours moins de 2KF encours

plus de 5 KF encours

plot(res,axes=dim,choix="ind",habillage=1,invisible="var")

−2 −1 0 1 2

−1.0−0.50.00.51.01.52.0

MCA factor map

Dim 1 (14.39%)

Dim 2 (10.03%)

bon client mauvais client

1

2 3

4

5 6

7 8

9 10

11 12

13 14 15

16 17 18

19 20 2221

23 25 24

26 27

28 29 31 30

32

33

34 35

36 37

38

39 4140

42 44 43

45

46

48 4947

50 51 52

53 54

55

56 57

58

59

60 61

62 63

64

65 66

67 68

69 70

71 72 73 74 75 7677 79 78

80 81

82 83 84 85

86 87 88 89

919290 93

94

95

96 97

98 99

100 101 102

103 104

105 106

107

108

109 110

111

112 113 114

115 116

117 118

119 120

122123121 124 125

126 127

128 129

130

131 133 132

134 135 136 137

138 139

140 141 142

144143 145

146

147 148

149 150

151 152

153

154 155 156 157

158 159160 161 162

163 164

165166

167 168

169 170

171 172 173 174 175

177 176

178 180179

181 182

183

184 185

186 187

188 189

190

191 192

193 194

195

196197 198 199

200

201 202 203

204 205

206 207 208

209210 211

212 213

214 215216

217 218

219

220 221

222

223 224

225 226

227 228 229

230 231

232 233

234

235 236

237

238 239 240

241 242 243

244

245 246

247

248 249

250

251 252

253 255 254

256

257 258

259 261260

262 263

264

266 265 267 268

269 270

271 272 273

274 275 276

277

278

279 280

281

282

283

284 285

286 287

288 289 290

291

292293

294 295

296

297 298

299

300

301 302 304 303

305 306 307

308 309

310 311

312 313

314 315

316 317

318

319 320

321

323 322 324

325 326 328327 330 329

331 333 332 334

335

336 337

338 339

340

341 342 343

344 345

346

347 348

349 351 350

352 353 354

355 356 357

358 359

360 361

362

363 364

365 366

367

368 369

370

371 372 373

374 375

376 377

379 378 380

381 383382 384

385 386

387 388

389 390 391

392

393

394 395

396 398 397

399 400 401

402

403 404

406 405

407 408

409 410

412 413411 414 415 416

417 418

419 421 420

422 423

424

425 426 427 429 428

430 431 432

433 434

435 436

437 438

439 440

441 442

443 444

445 446 447

448

449

450 451

452 453

454

455 457 456

458 459

460 462 461

463

464 465 466

467

468

#classification hiérarchique ascendante toutes les sur coordonnées de l'ACM

#HCPC Hierarchical Clustering on Principal Components res.hcpc <- HCPC(res,nb.clust=2,graph=FALSE)

res.hcpc$desc.var$test.chi2

## p.value df

## Type.de.client 4.6e-50 1

## Ancienneté 1.4e-32 4

## Domiciliation.du.salaire 5.6e-26 1

## Age.du.client 2.0e-19 3

## Situation.familiale 2.4e-14 3

## Moyenne.en.cours 2.5e-14 2

## Profession 3.1e-14 2

res.hcpc$desc.var$category$'1'[,1:3]

## Cla/Mod Mod/Cla Global

## Type.de.client=mauvais client 89.2 80.8 49

## Domiciliation.du.salaire=non domicile salaire 89.5 53.3 32

## Ancienneté=anc. 1 an ou moins 78.9 61.6 43

## Age.du.client=moins de 23 ans 90.9 31.4 19

## Situation.familiale=célibataire 75.9 50.6 36

(12)

## Profession=cadre 23.4 7.1 16

## Age.du.client=plus de 50 ans 25.0 10.6 23

## Moyenne.en.cours=plus de 5 KF encours 12.9 3.1 13

## Situation.familiale=marié 35.3 30.6 47

## Ancienneté=anc. plus 12 ans 4.6 1.6 19

## Domiciliation.du.salaire=domicile salaire 37.7 46.7 68

## Type.de.client=bon client 20.7 19.2 51

res.hcpc$desc.var$category$'2'[,1:3]

## Cla/Mod Mod/Cla Global

## Type.de.client=bon client 79.3 88.3 51

## Domiciliation.du.salaire=domicile salaire 62.3 92.5 68

## Ancienneté=anc. plus 12 ans 95.4 39.0 19

## Situation.familiale=marié 64.7 67.1 47

## Moyenne.en.cours=plus de 5 KF encours 87.1 25.4 13

## Age.du.client=plus de 50 ans 75.0 38.0 23

## Profession=cadre 76.6 27.7 16

## Ancienneté=anc. de 6 à 12 ans 62.1 19.2 14

## Age.du.client=de 40 à 50 ans 53.3 30.5 26

## Ancienneté=anc. de 1 à 4 ans 21.3 4.7 10

## Moyenne.en.cours=moins de 2KF encours 23.5 10.8 21

## Profession=profession autre 23.4 16.9 33

## Situation.familiale=célibataire 24.1 19.2 36

## Age.du.client=moins de 23 ans 9.1 3.8 19

## Ancienneté=anc. 1 an ou moins 21.1 19.7 43

## Domiciliation.du.salaire=non domicile salaire 10.5 7.5 32

## Type.de.client=mauvais client 10.8 11.7 49

#Scoring sur donnees qualitatives à la main

n <- nrow(credit)

set.seed(1)

test.sample <- sample(1:n,150) train.sample <- (1:n)[-test.sample]

mca <- MCA(credit,ncp=15,quali.sup=1,ind.sup=test.sample,graph=FALSE)

plot(mca,choix="ind",habillage=1,invisible="var")

−2 −1 0 1 2

−1012

MCA factor map

Dim 1 (13.59%)

Dim 2 (10.17%)

bon client mauvais client

1 2

3

4 7

8

9 13 11

14 15

16 17

18

19 21 20

22 24

25 27

28 31

32

33

35 36 38

39

40 41 44 43

46 45

48 49

50 51 52

54

58

61 59

62 63

64

65 66

67 68

69 70

72 73 74 75 76

77 79

80 83

85

86 87 88

89

90 93 92

96 97

98 100103101 105

106

107 108

109 110

111

112 114 113

115 116

117

118 121 122123 124

128 129

133 134

136 137

139 140141 142144 143 145

146 148

149 152 151

158 159160 161 162

163

164 165

166 171

176 178 179

180

181 182

184 185

186 189 190

191 192 194

196 198 199

203

204 205

206 207 208

209 210

211 213

217 218

219

220

221 222

223 227 228 229

230 232 233

234

235 238

239 243

244 245

246 247

248 249

250

251253 254 255

256

257 258

259 261 264

265 266 268

269 270

271 273 274

275 278

279 280

281

282

283

284 285

286 287 288

289 293

294 295

296 297

299

300

302 303 306 307

309

310

313 315

316 317

318

319 320

321

322 323

324

328327 330

331

332 335

336 337 338

341

343 345

347

353 354

355 356 357

358 359

361 364 362

366

367

368 370

371 372375

376 377

378 379

380

382 384

385 386

388

389 390

392 393

394 396 395

397

398 401

402

403 404

407 408

409 412411

413415 414

417 421

422 424 425

427 428 429

430 432

433

435 438

439 442

444

445 447

452 453

456 457

459

461

463

466 467

468

bon client mauvais client 125

174

267 423

94

416

437 305

290 29

95 314 81

175 350

226

325 448

172

454 419

458 291

56

119 450

6

169 383

150 263 212

216 82

360

460 344

47 312

177 277352 334

236

225 426

10 201

308

446 200

434 183

102 30

42

131 214 167 272

373

120 187

135 462

104 193

420

34

449

405 465

138 132 351 188

339

153 304

374 441

276

155 126

451 78

410

431 464

55

91

23 242

329 292

298 170 391

301 224

241

130 363 99

231 381440

173

333 215

399

262

127

154 53 5

252 37

157 369

346 443

168

60 260

156 455

71 202 365

195 26 436 12

311

418 406 342

326

348

349 197 340

84 237

147

57 240

400 387

y <- credit[,1]

train <- mca$ind$coord

test <- mca$ind.sup$coord

library(MASS)

m <- lda(train, y[-test.sample])

yhat <- predict(m, test)$class

table(y[test.sample],yhat)

## yhat

## bon client mauvais client

## bon client 54 16

(13)

## mauvais client 30 50 sum(yhat != y[test.sample])/length(yhat)

## [1] 0.31

#Scoring sur donnees qualitatives avec un package library(DiscriMiner)

?disqual

#Analyse Factorielle Discriminante (AFD) sur données qualitatives

disq <- disqual(credit[,-1],credit[,1],learn=train.sample,test=test.sample,validation="learntest")

disq$confusion

## predicted

## original bon client mauvais client

## bon client 58 12

## mauvais client 39 41

disq$error_rate

## [1] 0.34 head(disq$scores)

## bon client mauvais client

## [1,] 149 503

## [2,] 286 334

## [3,] 418 171

## [4,] 293 325

## [5,] 375 224

## [6,] 374 225

head(disq$classification)

## [1] mauvais client mauvais client bon client mauvais client

## [5] bon client bon client

## Levels: bon client mauvais client

disq <- disqual(credit[,-1],credit[,1],validation="crossval")

disq$error_rate

## [1] 0.31

2. On veut ici vérfier qu’il est équivalent de réaliser une classification ascendante hiérarchique sur la matrice des distances du χ

2

entre les données brutes recodées dans un tableau disjonctif complet, ou sur la matrice des distances Euclidiennes entre les données décrites avec toutes les composantates de l’ACM. Ce travail est à réaliser en binôme et à me rendre.

(a) Faire une fonction pour calculer la matrice des distances du χ

2

entre les n lignes d’une matrice de données qualitatives. Appliquez cette fonction à un jeu de données de votre choix.

(b) Faire l’ACM de ce jeu de données et conserver toutes les composantes principales. Calculer la matrice des distances Euclidiennes entre les n observations décrites par toutes les composantes principales.

(c) Comparez la hiérarchie de Ward obtenue avec ces deux matrices de distances.

Références

Documents relatifs

A chaque classe H est associé un nombre v(H) : la valeur de l'indice d'agrégation entre les deux objets qui ont été réunis pour former cette classe.. Cet indice est croissant pour

Les articles [TEXTES GRECS 3.A...D] rendent compte de l'analyse d'un corpus de 889 fragments de textes grecs. Il serait vain de prétendre que toute la diversité stylistique,

Lorsque l'inertie totale est inférieure ou égale à 1, deux éléments à produit scalaire nul ne sont pas agrégés à la première étape de la CAH; donc, en considérant le

Si on effectue sur l'un des deux ensembles en correspondance, (que nous supposerons généralement être I), une classification ascendante hiérarchique, (par quoi on entendra

La présente note rend compte de résultats complémentaires obtenus alors que l'article [REC. 257-266) était déjà composé et mis en page: on peut dire qu'est maintenant obtenue

Ceci posé, si on effectue sur l'un des deux ensembles en correspondance, (que nous supposerons désormais être I), une classification ascendante hiérarchique, (par quoi on

Partant d'un sommet s on cherche le sommet v(s) qui en est le plus proche en calculant les n distances de s à tous les sommets non rangés dans la chaîne; en cherche ensuite v(v(s))

5 VoX.ntb dz vue local zt global zn claA&amp;X.£X.catX.on a&amp;czndantz nllKaKcnicjiiz : De la complémentarité des inerties il résulte que pour autant qu'on les évalue