Ensuite, on applique le début de l'algo du pivot de Gauss pour vérifier qu'on a bien deux 1 sur la diagonale => rg(A) = 2.
Formule $A^{-1} = 1/(det(A)) * t(Com(A))$ :
$A^{-1} = 1 / (1 + 2t) * t( ( 1, -2, 2 , t, 1, -1 , -t, 2t, 1 ) )$ (matrice donnée en ligne).
Vérification conseillée avec un autre algo (méthode su système par exemple : A X = Y --> X = A^{-1} Y)
Système : 2x + y = lambda x , x + 3y + z = lambda y , 2x + y = lambda z On trouve (1, -1, 1) puis 0, puis (1, 2, 1)
library(FactoMineR)
library(factoextra)
library(gridExtra)
library(corrplot)
options(repr.plot.width=15, repr.plot.height=9)
Dans cet exercice on utilise un jeu de données indiquant la qualité de divers vins (rouges) en fonction de leurs caractéristiques physico-chimiques. La qualité (dernière colonne) est une note de 0 à 10. Autres variables :
Les variables 6, 7 et 10 correspondent à des additifs (conservateurs), a priori sans bonnes propriétés gustatives.
data <- read.csv("~/winequality-red.csv", sep=";")
head(data)
dim(data)
fixed.acidity | volatile.acidity | citric.acid | residual.sugar | chlorides | free.sulfur.dioxide | total.sulfur.dioxide | density | pH | sulphates | alcohol | quality | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
<dbl> | <dbl> | <dbl> | <dbl> | <dbl> | <dbl> | <dbl> | <dbl> | <dbl> | <dbl> | <dbl> | <int> | |
1 | 7.4 | 0.70 | 0.00 | 1.9 | 0.076 | 11 | 34 | 0.9978 | 3.51 | 0.56 | 9.4 | 5 |
2 | 7.8 | 0.88 | 0.00 | 2.6 | 0.098 | 25 | 67 | 0.9968 | 3.20 | 0.68 | 9.8 | 5 |
3 | 7.8 | 0.76 | 0.04 | 2.3 | 0.092 | 15 | 54 | 0.9970 | 3.26 | 0.65 | 9.8 | 5 |
4 | 11.2 | 0.28 | 0.56 | 1.9 | 0.075 | 17 | 60 | 0.9980 | 3.16 | 0.58 | 9.8 | 6 |
5 | 7.4 | 0.70 | 0.00 | 1.9 | 0.076 | 11 | 34 | 0.9978 | 3.51 | 0.56 | 9.4 | 5 |
6 | 7.4 | 0.66 | 0.00 | 1.8 | 0.075 | 13 | 40 | 0.9978 | 3.51 | 0.56 | 9.4 | 5 |
1] Décrivez ce que fait la ligne de code ci-dessous. (1.5 points)
res.pca <- PCA(data, quanti.sup=12, ncp=7)
ACP = recherche des 7 (ncp = 7) axes deux à deux orthogonaux maximisant itérativement l'inertie projetée (bref, juste rappeler ce que fait l'ACP). quanti.sup = 12 => la 12eme colonne est considérée comme variable (quantitative) supplémentaire.
2] Qu'est-ce qui est affiché par le code ci-dessous ? Combien d'axes au minimum doit-on garder pour conserver 75% d'inertie ? (1.5 points)
res.pca$eig
eigenvalue | percentage of variance | cumulative percentage of variance | |
---|---|---|---|
comp 1 | 3.09913244 | 28.1739313 | 28.17393 |
comp 2 | 1.92590969 | 17.5082699 | 45.68220 |
comp 3 | 1.55054349 | 14.0958499 | 59.77805 |
comp 4 | 1.21323253 | 11.0293866 | 70.80744 |
comp 5 | 0.95929207 | 8.7208370 | 79.52827 |
comp 6 | 0.65960826 | 5.9964388 | 85.52471 |
comp 7 | 0.58379122 | 5.3071929 | 90.83191 |
comp 8 | 0.42295670 | 3.8450609 | 94.67697 |
comp 9 | 0.34464212 | 3.1331102 | 97.81008 |
comp 10 | 0.18133317 | 1.6484833 | 99.45856 |
comp 11 | 0.05955831 | 0.5414392 | 100.00000 |
Colonne 1: valeurs propres = inertie.
Colonne 2: pourcentage d'inertie totale projectée sur chaque axe.
Colonne 3: pourcentages d'inerties cumulées.
Il faut garder 5 axes.
3] Commentez le résultat du code ci-dessous. (1.5 points)
grid.arrange(
plot(res.pca, choix="ind", invisible="quali", select="cos2 500", unselect=1),
plot(res.pca, choix="ind", invisible="quali"), ncol=2)
s <- sort(rowSums(res.pca$ind$cos2[,1:2]), decreasing=TRUE)
plot(s, cex.axis=1.5, cex.lab=1.5, xlab="Individus classés par cos2 décroissant", ylab="cos2")
On remarque que les 1000 individus les moins bien représentés (cos2 < 0.6) sont pour la plupart projetés près du centre. C'est assez facilement explicable car en étant proche du centre il n'y a que deux cas de figure possible : soit l'individu est réellement proche du centre de gravité (= moyenne, auquel cas le cos2 n'est pas significatif), soit il a des coordonnées non négligeables dans d'autres dimensions. Comme le premier plan ACP n'explique que 17+28 = 35% d'inertie environ, il est fort probable qu'on soit dans ce second cas.
4] Commentez les graphes ci-dessous. (2.5 points)
grid.arrange(
plot(res.pca, choix="var", axes=c(1,2)),
plot(res.pca, choix="var", axes=c(3,4)), ncol=2)
corrplot(cor(data))
Axe 1 = acidité, (inv) pH. Axe 2 = taux de dioxyde de soufre.
Axe 3 : opposition acidité volatile / taux de dioxyde de soufre. Axe 4 = Chlorides.
Corrélation logique entre citric.acid et fixed.acidity. Également aussi densité inversement corrélée à alcohol (vérification via le tableau des corrélations) cf. cours de chimie (? :) ). Qualité d'autant meilleure que le taux de dioxyde de souffre baisse (logique) d'après le graphe, mais la vérification numérique montre que cette corrélation est en fait très faible en valeur absolue. De même entre la qualité et les sulfates : le tableau indique une très légère corrélation positive - on ne s'attendait effectivement pas à une forte corrélation. Assez forte corrélation entre la densité et taux d'acide tartrique.
L'inertie est assez uniformément répartie : les axes 2, 3 et 4 sont d'importance comparables.
On reprend le jeu de données de l'exercice 2, en se focalisant sur les variables "quality" et "pH".
Rappel : la distance du $\chi^2$ entre une répartition d'entiers $n_1, \dots, n_k$ et l'effectif théorique $t_1, \dots, t_k$ s'écrit $d_{\chi^2} = \sum_{i=1}^{k} \frac{(n_i - t_i)^2}{t_i}$.
Tableau des effectifs dans chaque modalité :
quality \ pH | high | low | medium |
---|---|---|---|
average | 350 | 23 | 946 |
excellent | 4 | 2 | 12 |
good | 44 | 3 | 152 |
poor | 26 | 1 | 36 |
$A = \begin{pmatrix} 0.218886804 & 0.0143839900 & 0.59161976\\ 0.002501563 & 0.0012507817 & 0.00750469\\ 0.027517198 & 0.0018761726 & 0.09505941\\ 0.016260163 & 0.0006253909 & 0.02251407 \end{pmatrix}$
On calcule ses marges colonne et ligne :
rowSums(A) 0.82489056 0.01125704 0.12445278 0.03939962
colSums(A) 0.26516573 0.01813634 0.71669794
Finalement on effectue le produit matriciel des marges pour obtenir la matrice des proportions théoriques, qu'il suffit alors de multiplier par l'effectif total :
$$\begin{align*} P &= 1599 * \texttt{as.matrix(rowSums(m)) %*% colSums(m)}\\ &= \begin{pmatrix} 349.753596 & 23.921826 & 945.32458\\ 4.772983 & 0.326454 & 12.90056\\ 52.767980 & 3.609131 & 142.62289\\ 16.705441 & 1.142589 & 45.15197 \end{pmatrix}\end{align*}$$(nombre de colonnes - 1) * (nombre de lignes - 1) car somme sur chaque ligne ou colonne = 1 $\Rightarrow$ colonnes et lignes liées. Donc 6 degrés de liberté.
q <- data[["quality"]]
q[q == 3 | q == 4] = "poor" ; q[q == 5 | q == 6 ] = "average"
q[q == 7] = "good" ; q[q == 8 | q == 9] = "excellent"
p <- data[["pH"]]
ind1 <- p < 3 ; ind2 <- (p >= 3 & p < 3.4) ; ind3 <- p >= 3.4
p[ind1] = "low" ; p[ind2] = "medium" ; p[ind3] = "high"
df <- data.frame("quality"=q, "pH"=p)
t <- table(df)
res.CA <- CA(t)
"Excellent" clairement du côté de pH "low" => vins excellents ont tendance à être plus acides. À relativiser cependant car la ligne "excellent" contient très peu de vins.
"poor" du côté de "high" : les mauvais vins seraient moins acides. À relativiser également (seulement une soixantaine de bouteilles), mais déjà plus significatif que pour les vins excellents.
vins moyens pile au centre : c'est normal, le profil ligne correspondant est confondu avec l'effectif théorique.
"good" et "medium" du même côté, mais proches de l'origine. Les écarts numériques sont relativement faibles, donc ici aussi l'interprétation est à nuancer.
En effet les valeurs propres sont très faibles, indiquant un très léger écart à l'indépendance.
res.CA$eig
eigenvalue | percentage of variance | cumulative percentage of variance | |
---|---|---|---|
dim 1 | 0.005895992 | 52.30658 | 52.30658 |
dim 2 | 0.005375998 | 47.69342 | 100.00000 |
Les données utilisées pour cet exercice correspondent au résultat d'une enquête effectuée par la ville de Québec, portant sur la qualité de vie ressentie des habitants, au cours de l'été 2020.
Variables :
# Jeu de données préparé depuis les résultats bruts :
# https://www.donneesquebec.ca/recherche/dataset/sondage-de-satisfaction-aupres-des-citoyens-ete-2020
data <- read.csv("~/sondage_ville_Quebec.csv", colClasses="factor")
head(data)
dim(data)
sexe | age | Arrondissement | Logement | Foyer | Qualite_services | Attentes | Recommandation | Visite_EC | Visite_J.B | |
---|---|---|---|---|---|---|---|---|---|---|
<fct> | <fct> | <fct> | <fct> | <fct> | <fct> | <fct> | <fct> | <fct> | <fct> | |
1 | M | 55-64 | 4 | proprietaire | sans_enfant | 8 | + | 6 | Non_cet_ete | Non_cet_ete |
2 | F | 45-54 | 5 | proprietaire | avec_enfant | 8 | + | 10 | Non_cet_ete | Non_cet_ete |
3 | M | 25-34 | 3 | locataire | sans_enfant | 7 | - | 4 | Non_cet_ete | Non_cet_ete |
4 | M | 25-34 | 4 | locataire | sans_enfant | 8 | - | 9 | Non_cet_ete | Non_cet_ete |
5 | M | 35-44 | 5 | locataire | avec_enfant | 10 | -- | 8 | Non_cet_ete | Non_cet_ete |
6 | M | 25-34 | 4 | proprietaire | sans_enfant | 8 | - | 7 | Oui_deja | Oui_deja |
res.mca <- MCA(data, graph=FALSE)
1] Quelle est l'inertie totale du jeu de données ? (1 point)
K = 52, J = 10, donc inertie = K/J - 1 = 4.2
2] Au vu du résultat de code ci-dessous et en utilisant la règle vue en cours, combien d'axes devrait-on considérer ? (1 point)
Rappel de l'heuristique : $\lambda_s \geq \frac{1}{J}$ avec $J$ le nombre de variables.
On garde les 20 premiers axes (62% d'information). 1/J = 0.1
res.mca$eig
eigenvalue | percentage of variance | cumulative percentage of variance | |
---|---|---|---|
dim 1 | 0.19771831 | 4.7075787 | 4.707579 |
dim 2 | 0.18298417 | 4.3567661 | 9.064345 |
dim 3 | 0.16946584 | 4.0349009 | 13.099246 |
dim 4 | 0.15752200 | 3.7505238 | 16.849770 |
dim 5 | 0.15217893 | 3.6233078 | 20.473077 |
dim 6 | 0.14682158 | 3.4957519 | 23.968829 |
dim 7 | 0.13861017 | 3.3002421 | 27.269071 |
dim 8 | 0.13385185 | 3.1869489 | 30.456020 |
dim 9 | 0.13154426 | 3.1320063 | 33.588027 |
dim 10 | 0.12433737 | 2.9604135 | 36.548440 |
dim 11 | 0.12101473 | 2.8813032 | 39.429743 |
dim 12 | 0.11948566 | 2.8448967 | 42.274640 |
dim 13 | 0.11773665 | 2.8032536 | 45.077893 |
dim 14 | 0.11385496 | 2.7108324 | 47.788726 |
dim 15 | 0.11005421 | 2.6203384 | 50.409064 |
dim 16 | 0.10638318 | 2.5329328 | 52.941997 |
dim 17 | 0.10600693 | 2.5239745 | 55.465971 |
dim 18 | 0.10308339 | 2.4543665 | 57.920338 |
dim 19 | 0.10151908 | 2.4171211 | 60.337459 |
dim 20 | 0.10078845 | 2.3997251 | 62.737184 |
dim 21 | 0.09594999 | 2.2845236 | 65.021708 |
dim 22 | 0.09464178 | 2.2533757 | 67.275083 |
dim 23 | 0.09273484 | 2.2079724 | 69.483056 |
dim 24 | 0.09161227 | 2.1812446 | 71.664300 |
dim 25 | 0.08848096 | 2.1066894 | 73.770990 |
dim 26 | 0.08781403 | 2.0908103 | 75.861800 |
dim 27 | 0.08415584 | 2.0037105 | 77.865511 |
dim 28 | 0.08188787 | 1.9497112 | 79.815222 |
dim 29 | 0.08010302 | 1.9072149 | 81.722437 |
dim 30 | 0.07806187 | 1.8586160 | 83.581053 |
dim 31 | 0.07631311 | 1.8169788 | 85.398031 |
dim 32 | 0.07378959 | 1.7568950 | 87.154926 |
dim 33 | 0.07053364 | 1.6793724 | 88.834299 |
dim 34 | 0.06827214 | 1.6255273 | 90.459826 |
dim 35 | 0.06518554 | 1.5520367 | 92.011863 |
dim 36 | 0.06084501 | 1.4486908 | 93.460554 |
dim 37 | 0.05663317 | 1.3484088 | 94.808962 |
dim 38 | 0.05223761 | 1.2437526 | 96.052715 |
dim 39 | 0.04926188 | 1.1729018 | 97.225617 |
dim 40 | 0.04499180 | 1.0712332 | 98.296850 |
dim 41 | 0.04120178 | 0.9809949 | 99.277845 |
dim 42 | 0.03033051 | 0.7221551 | 100.000000 |
3] Rappelez pourquoi les axes n'expliquent chacun que quelques pourcents d'inertie. (1 point)
L'inertie pour une variable se répartit dans un espace à Kj - 1 dimensions où Kj est le nombre de modalités pour cette variable. Chaque axe ne peut donc pas expliquer beaucoup d'inertie (l'information est "diluée").
4] Considérant les indications ci-dessous, analysez les deux premiers axes et les variables. (4 points)
On remarque que l'axe 1 est plutôt corrélé aux variables qualité de service et recommandation, ce qui est conforme à l'impression visuelle. Les modalités qualité de service/recommandation 0, 1, 2 et 3 sont rares car éloignées du centre du nuage. La significationd e l'axe 1 est vérifiée en considérant les individus extrêmes à droite et à gauche.
L'axe 2 n'est pas corrélé significativement à une variable, mais en regardant les individus on remarque une opposition "jeune locataire sans enfants" et "famille propriétaire", expliquant que les visites des parcs et zones d'exposition soient du côté haut (familles).
L'inertie totale de ce plan vaut à peine 10, il y a donc encore beaucoup d'information non exploitée à ce stade.
colors = rep(1, 954)
xtrem_idx <- c(743, 765, 105, 282, 102, 517, 520, 573)
colors[xtrem_idx] = "blue"
plot(res.mca, col.ind=colors)
res.mca$var$eta2
Dim 1 | Dim 2 | Dim 3 | Dim 4 | Dim 5 | Dim 6 | Dim 7 | |
---|---|---|---|---|---|---|---|
sexe | 0.055859630 | 0.02551669 | 0.011409944 | 0.009339249 | 0.001052507 | 0.02142646 | 0.0027470427 |
age | 0.138268459 | 0.29673571 | 0.115773404 | 0.094409197 | 0.089101989 | 0.22992501 | 0.1364052204 |
Arrondissement | 0.141860363 | 0.14302807 | 0.092101454 | 0.200607694 | 0.058201239 | 0.10211100 | 0.1289837216 |
Logement | 0.002230320 | 0.18395729 | 0.012785246 | 0.220847359 | 0.003195941 | 0.01399560 | 0.0535317812 |
Foyer | 0.070004756 | 0.29092447 | 0.077335159 | 0.004976664 | 0.020054099 | 0.16854208 | 0.0001833297 |
Qualite_services | 0.649369135 | 0.15911207 | 0.607080477 | 0.309810584 | 0.568533883 | 0.26968841 | 0.4742969992 |
Attentes | 0.244416279 | 0.07626718 | 0.173847711 | 0.095584177 | 0.049430305 | 0.12435447 | 0.0060196202 |
Recommandation | 0.659108612 | 0.13624952 | 0.591750319 | 0.225558189 | 0.590854732 | 0.28199526 | 0.4905525583 |
Visite_EC | 0.010131205 | 0.27837338 | 0.011068442 | 0.152047766 | 0.120613239 | 0.16745118 | 0.0214376006 |
Visite_J.B | 0.005934305 | 0.23967736 | 0.001506231 | 0.262039119 | 0.020751330 | 0.08872635 | 0.0719438224 |
# Gauche / droite :
data[xtrem_idx[1:4],]
sexe | age | Arrondissement | Logement | Foyer | Qualite_services | Attentes | Recommandation | Visite_EC | Visite_J.B | |
---|---|---|---|---|---|---|---|---|---|---|
<fct> | <fct> | <fct> | <fct> | <fct> | <fct> | <fct> | <fct> | <fct> | <fct> | |
743 | F | 75+ | 2 | proprietaire | sans_enfant | 9 | + | 10 | Oui_deja | Non_cet_ete |
765 | F | 75+ | 4 | locataire | sans_enfant | 9 | + | 9 | Oui_deja | Non_cet_ete |
105 | M | 45-54 | 3 | locataire | sans_enfant | 0 | -- | 0 | Non_cet_ete | Non_cet_ete |
282 | M | 45-54 | 6 | locataire | sans_enfant | 0 | ++ | 0 | Non_cet_ete | Non_cet_ete |
# Bas / haut :
data[xtrem_idx[5:8],]
sexe | age | Arrondissement | Logement | Foyer | Qualite_services | Attentes | Recommandation | Visite_EC | Visite_J.B | |
---|---|---|---|---|---|---|---|---|---|---|
<fct> | <fct> | <fct> | <fct> | <fct> | <fct> | <fct> | <fct> | <fct> | <fct> | |
102 | M | 18-24 | 4 | locataire | sans_enfant | 5 | - | 7 | Non_cet_ete | Non_cet_ete |
517 | F | 18-24 | 4 | locataire | sans_enfant | 6 | + | 7 | Non_jamais | Non_cet_ete |
520 | M | 35-44 | 5 | proprietaire | avec_enfant | 8 | ++ | 8 | Oui_deja | Oui_premiere |
573 | M | 35-44 | 2 | proprietaire | avec_enfant | 7 | + | 8 | Oui_deja | Oui_premiere |
5] Quelles sont les différences entre les résultats d'une ACM basée sur le tableau disjonctif complet ou sur le tableau de Burt ? (1 point)
Les valeurs propres obtenues via le tableau de Burt sont les carrés des valeurs obtenues par l'autre méthode. Pas de différences sinon.
On considère l'extrait suivant d'un jeu de données visant à prédire la méthode de contraception (féminine) choisie en fonction de critères socio-démographico-économiques. L'étude s'est effectuée en Indonésie en 1987, sur quelques milliers de femmes mariées.
Source : https://archive.ics.uci.edu/ml/datasets/Contraceptive+Method+Choice
âge | éducation | au_foyer | contraception |
---|---|---|---|
49 | 4 | 1 | aucune |
45 | 4 | 1 | aucune |
49 | 1 | 1 | aucune |
33 | 3 | 1 | long-terme |
38 | 4 | 1 | long-terme |
31 | 4 | 0 | court-terme |
36 | 1 | 1 | court-terme |
Construire un arbre de décision binaire selon la méthode vue en cours en utilisant l'indice d'entropie : $I_E = - \sum_{k=1}^{K} p_k \log p_k,$ avec $p_k$ proportion de la classe $k$ dans les données du noeud courant. Détaillez les étapes, et dessinez l'arbre. (5 points)
On trouve d'abord une coupure sur l'âge (> 40 et < 40), puis
Coupure au choix sur l'une des trois variables. On choisit "au foyer" : > 1 et = 1
Ensuite éducation > 1 et = 1 termine.
Calculez le taux d'erreur sur chacun des ensembles de test suivants. Commentez. (3 points)
contraception 1 = aucune, 2 = long-terme, 3 = court-terme
âge | éducation | au_foyer | contraception |
---|---|---|---|
25 | 2 | 1 | 1 |
46 | 1 | 1 | 1 |
32 | 3 | 1 | 2 |
30 | 3 | 0 | 3 |
âge | éducation | au_foyer | contraception |
---|---|---|---|
22 | 2 | 1 | 1 |
26 | 4 | 1 | 1 |
32 | 4 | 1 | 2 |
38 | 4 | 1 | 3 |
0.25 puis 0.75 => pas assez de données, l'arbre n'est pas utilisable pour généraliser.
Appliquez l'algorithme des k-means aux lignes ci-dessous (extrait du jeu de données Iris). Effectuez deux exécutions avec pour centres initiaux respectivement
$(4, 3, 1, 0), (4, 3, 2, 0)$ et $(6, 3, 5, 2)$, puis
$(4, 3, 1, 0), (5, 2, 3, 1)$ et $(7, 3, 6, 2)$.
Commentez.
Sepal.Length | Sepal.Width | Petal.Length | Petal.Width | Species |
---|---|---|---|---|
4.7 | 3.2 | 1.6 | 0.2 | setosa |
4.8 | 3.1 | 1.6 | 0.2 | setosa |
5.4 | 3.4 | 1.5 | 0.4 | setosa |
5.2 | 4.1 | 1.5 | 0.1 | setosa |
5.6 | 2.5 | 3.9 | 1.1 | versicolor |
5.9 | 3.2 | 4.8 | 1.8 | versicolor |
7.2 | 3.0 | 5.8 | 1.6 | virginica |
7.4 | 2.8 | 6.1 | 1.9 | virginica |
Rappel : boucle jusqu'à convergence
i. affecter chaque point à la classe dont le centre est le plus proche,
ii. recalculer les centres des classes (moyenne des éléments).
c1 = (4,3,1,0), c2 = (4,3,2,0), c3 = (6,3,5,2)
On laisse tomber cet exo ! (pas au partiel).
Cependant, il reste intéressant à faire sur machine. On remarque que selon les centres initiaux choisis, l'algorithme converge vers une bonne ou mauvaise solution. Il fallait donc conclure en parlant de la sensibilité aux conditions initiales.
On suppose qu’un trait est gouverné par deux gènes, qui peuvent être de deux types, G et g. On suppose que G est dominant (c’est-à-dire que c'est lui qui s'exprime si la paire est Gg) et g récessif. Les états Gg, GG et gg sont appelés respectivement hybride, dominant et récessif.
Gg = état 1 (ligne 1), GG = état 2 (ligne 2), gg = état 3 (ligne 3)
$P = \begin{pmatrix} 1/2 & 1/4 & 1/4\\ 1/2 & 1/2 & 0\\ 1/2 & 0 & 1/2 \end{pmatrix}$
P^2 > 0 donc la chaîne est régulière avec n = 2. (==> chaîne apériodique - à vérifier).
Apériodique : le PGCD des longueurs des chemins de chaque état à lui-même vaut 1 => apériodique ici.
(On peut aussi le voir "comme dans le cours" en disant qu'il existe un chemin de longueur 1 de chaque état à lui-même).
$P = \begin{pmatrix} 1/2 & 1/2 & 0\\ 0 & 1 & 0\\ 1/2 & 1/4 & 1/4 \end{pmatrix}$
Pas irréductible : aucun chemin de 2 à 1 ou 2 à 3.
Apériodique car boucle de chaque état vers lui-même.
$N = (I - Q)^{-1} = (1, 1)$ => Au bout d'un certain nombre d'étapes on n'a que des plantes dominantes. Dans le cas de l'autre chaîne, on peut trouver sa distribution stationnaire qui donne la probabilité de se trouver dans un état après un grand nombre de transitions.
Calculons ce vecteur. On cherche $w$ tel que $w P = w$ : $$\begin{align*} 0.5 w1 + 0.5 w2 + 0.5 w3 = w1\\ 0.25 w1 + 0.5 w2 = w2\\ 0.25 w1 + 0.5 w3 = w3\\ \end{align*}$$
w1 = 2 w3 0.5 w3 = 0.5 w2 => w2 = w3 Donc (2, 1, 1) => vecteur de probabilités = (1/2, 1/4, 1/4)
=====
Calculons le temps moyen nécessaire pour arriver dans l'état gg depuis un état hybride dans le premier cas. On commence par considérer l'état 3 (gg) comme absorbant, la matrice étant transformée en :
$$\begin{align*} P &= \begin{pmatrix} 1/2 & 1/4 & 1/4\\ 1/2 & 1/2 & 0\\ 0 & 0 & 1 \end{pmatrix}\\ &= \begin{pmatrix} Q & R\\0 & I\end{pmatrix}\end{align*}$$On peut alors appliquer les formules du cours concernant un état absorbant, avec
$Q = \begin{pmatrix}1/2 & 1/4\\1/2 & 1/2\end{pmatrix}$, $R = \begin{pmatrix}1/4\\0\end{pmatrix}$, $I = 1$
$N = (I_2 - Q)^{-1} = \begin{pmatrix}4 & 2\\4 & 4\end{pmatrix}$
Finaement $N c = (6, 8)$ donc il faut en moyenne 6 étapes avant d'obtenir un individu récessif depuis un hybride (et 8 depuis un dominant : on s'attendait en effet à ce que ça soit + dans ce cas car aucun gène récessif n'est initialement présent).