diff --git a/Projet.Rmd b/Projet.Rmd index 748aa66..9d504da 100644 --- a/Projet.Rmd +++ b/Projet.Rmd @@ -27,14 +27,15 @@ T$ExpT3 = as.factor(T$ExpT3) #centrer T head(T) summary(T) + str(T) levels(T$ExpT1) ``` +# A REFAIRE LES ANALYSES, JAVAIS PAS VU QUE T3 ETAIT UNE COMBINAISON DE T1 ET T2 - -### Contenu du jeu de données : +# Contenu du jeu de données : - 3 variables qualitatives nominales représentant l'expression du gêne $$g$$ dont les modalités sont $$\{"sur","sous","non"\}$$. chaque variable correspond respectivement à la différence d'expression du gêne mesurée à la 6èeme heure lors du traitement $$T \in \{T1,T2,T3\}$$ - $$3*6 + 3*6 = 36$$ variables quantitatives continues représentant les effets des traitements sur l'expression des gênes T1 T2 et T3 à 1h,2h,3h,4h,5h,6h après l'administration pour les replicats R1 et R2, par rapport à leur expression à T=0 ( sans traitement). @@ -42,9 +43,12 @@ levels(T$ExpT1) - Ce jeu de données contient des relevés sur 542 individus, ici des gênes. -## Analyse unidimentionnelle : +# Analyse unidimentionnelle : + + +### LES 3 PROCHAINS PLOTS N'APPORTENT RIEN PAR RAPPORT AUX HISTOGRAMMES, JE LES AI DONC CACHES ### Expression des gênes lors du traitement T1 -```{r} +```{r,echo=FALSE,results = FALSE,message=FALSE,warning=FALSE,fig.show='hide'} g1<-ggplot(T, aes(x=T$ExpT1))+ geom_bar()+ ylab("Effectifs")+ggtitle("Effectifs") @@ -61,7 +65,7 @@ grid.arrange(g3,g1,g2,ncol=3,top=textGrob("Visualualisation des expressions rela ``` ### Expression des gênes lors du traitement T2 -```{r} +```{r,echo=FALSE,results = FALSE,message=FALSE,warning=FALSE,fig.show='hide'} g1<-ggplot(T, aes(x=T$ExpT2))+ geom_bar()+ ylab("Effectifs")+ggtitle("Effectifs") @@ -79,7 +83,7 @@ grid.arrange(g3,g1,g2,ncol=3,top=textGrob("Visualualisation des expressions rela ### Expression des gênes lors du traitement T3 -```{r} +```{r,echo=FALSE,results = FALSE,message=FALSE,warning=FALSE,fig.show='hide'} g1<-ggplot(T, aes(x=T$ExpT3))+ geom_bar()+ ylab("Effectifs")+ggtitle("Effectifs") @@ -103,7 +107,7 @@ T1 quant à lui se démarque grandement par une large majorité (Un peu plus de ### Expression relative des gênes mesurées à intervalle régulier #### Traitement T1 -```{r, fig.height=5} +```{r, fig.height=5,fig.cap="Histogrammes de l'expression relative des gènes aux différents relevés lors du traitement T1"} #apply(T[-c(37:39)],2,function(col){ # which(T == col) #hist(col, main = paste("Histogram of", colnames(T)[which(T == col)[2]]), @@ -116,15 +120,15 @@ ggplot(T_long, aes(x = value)) + labs(title = "Histogrammes de l'expression relative des gènes aux différents relevés lors du traitement T1", x = "Valeurs", y = "Effectifs") ``` ### Traitement T2 -```{r, fig.height=5} +```{r, fig.height=5,fig.cap="Histogrammes de l'expression relative des gènes aux différents relevés lors du traitement T3"} T_long = melt(T[c(7,8,9,10,11,12,25,26,27,28,29,30)]) ggplot(T_long, aes(x = value)) + geom_histogram(binwidth = 1, fill = "blue", color = "black", alpha = 0.7) + facet_wrap(~variable,scales = "free",ncol=6) + - labs(title = "Histogrammes de l'expression relative des gènes aux différents relevés lors du traitement T3", x = "Valeurs", y = "Effectifs") + labs(title = "Histogrammes de l'expression relative des gènes aux différents relevés lors du traitement T2", x = "Valeurs", y = "Effectifs") ``` ### Traitement T3 -```{r, fig.height=10} +```{r, fig.height=5,fig.cap="Histogrammes de l'expression relative des gènes aux différents relevés lors du traitement T3"} T_long = melt(T[c(13,14,15,16,17,18,31,32,33,34,35,36)]) ggplot(T_long, aes(x = value)) + geom_histogram(binwidth = 1, fill = "blue", color = "black", alpha = 0.7) + @@ -220,7 +224,7 @@ En revanche, il est très clair que T2 et T3 ciblent les mêmes genes, toutes le ### matrice de covariance des variables quantitatives -```{r} +```{r, fig.height = 18,fig.cap="Visualisation de la matrice de covariance des variables quantitatives"} cr = cor(T[-c(37:39)]) corrplot(cr,method="ellipse", type="lower", bg = "lightgrey",title ="Visualisation de la matrice de covariance des variables quantitatives" ) ``` @@ -268,7 +272,7 @@ La grande valeur des effectifs partiels sur la diagonale de la table de continge Pour faire cela, nous devons transposer la matrice de données originale qui elle décrivait les gènes (individus) en fonction des Tt sH Rr. Nous décidons de faire directement une ACP sur un jeu de données centrées réduites pour que chaque variable s'exprime avec la même force dans les résultats et qu'ils soient lisibles. -```{r, fig.width=10, fig.height=5} +```{r, fig.width=10, fig.height=5, fig.cap="Participation des chaque valeur propre de la matrice de correlation à l'intertie totale des données"} donnees_transposees = t(T[-c(37:39)]) res_pca<-PCA(donnees_transposees,scale.unit=TRUE,graph=FALSE) res_pca$eig @@ -278,7 +282,7 @@ Ce graphique représente les valeurs propres de la matrice de corrélation du je On voit qu'on dépasse 80% de l'inertie totale des points rien qu'avec les deux premieres valeurs propres, on en prend donc deux vectueurs propres associés respectivement à chacune de ces deux valeurs propres comme axes principaux de l'analyse. -```{r} +```{r,fig.cap="Corrélations des variables avec les composantes principales"} fviz_pca_ind(res_pca,label="all",title="Projection des individus sur un plan factoriel") fviz_pca_var(res_pca,axes=c(1,2),label="none",title="Corrélations des variables avec les composantes principales") ``` @@ -331,7 +335,7 @@ corrplot(res_pca$var$cor[1:50,],method="ellipse", type="lower", bg = "lightgrey" MAIS C'EST INBUVABLE -### plus ou moins inutile ici de regarder d'autres plans +### plus ou moins inutile ici de regarder d'autres plans, sera utile dans l'autre ACP ```{r} fviz_pca_ind(res_pca,axes = c(1,3),geom=c("point")) @@ -344,7 +348,7 @@ fviz_pca_ind(res_pca,axes = c(1,5),geom=c("point")) ### Clustering k-means -```{r} +```{r,fig.cap="Visualisation de l'inertie intra-classe en fonction du nombre de classes demandées pour le clustering"} #centrage et réduction des données s = scale(donnees_transposees) @@ -367,7 +371,7 @@ ggplot(df,aes(x=K,y=Iintra))+ nn pense dénoter un coude dans la courbe d'inertie intraclasse aux alentours de 4 clusters -```{r} +```{r,fig.cap="Visualisation du critère de Silhouette en fonction du nombre de classes demandées pour le clustering"} Silhou<-NULL for (k in 2:Kmax){ aux<-silhouette(reskmeanscl[,k-1], daisy(s)) @@ -394,7 +398,7 @@ rm(df,Silhou,aux) Silhouette fait un pic à 5 et pas 4 :/ ### visualisation du clustering -```{r} +```{r,fig.cap="Visualisation des clusters générés par la méthode kmeans dnas le plan factoriel 1,2"} #graphes des clusters res_kmeans = kmeans(s,4) fviz_cluster(res_kmeans,data=donnees_transposees, @@ -420,7 +424,7 @@ On remaque bien 3 clusters ### PAM -```{r} +```{r, fig.cap="Visualisation des clusters générés par la méthode PAM dnas le plan factoriel 1,2"} res = pam(s,4,metric="euclidean") fviz_cluster(res,data=donnees_transposees, ellipse.type="norm",labelsize=8, @@ -430,7 +434,7 @@ fviz_cluster(res,data=donnees_transposees, ### clustering CAH -```{r, fig.width=9} +```{r, fig.width=9, fig.cap="Dendogramme du clustering de l'ACP des variables Tt en tant qu'individus, obtenu par méthode CAH"} dx<-dist(donnees_transposees,method="euclidian") hward<-hclust(dx,method = "ward.D2") @@ -450,4 +454,43 @@ fviz_dend(hward,k=4, ### Comparaison des clusterings On voit bien qu'à 4 classes, les regroupements ne sont pas consistents entre chaque méthode de clustering. A 3 classes nous obtenons une classification qui ne change pas, ou presque, entre chaque méthode. Nous décidons donc qu'il s'agit donc d'un bon choix de nombre de classes. -La classification obtenue est en accord avec les observations faites lors de l'ACP, on y retrouve plus ou moins les mêmes groupements : celui majoritarement composé des relevés de T1 avec une majorité de gènes sans changement d'expression relative, celui composé des relevés de T2 et T3 aux heures des changements d'expression les plus brutaux, et finalement celui s'étalant sur la droite qui semble représenter la fin de l'évolution des traitements T2 et T3 où l'expression de gènes y est très polarisée. \ No newline at end of file +La classification obtenue est en accord avec les observations faites lors de l'ACP, on y retrouve plus ou moins les mêmes groupements : celui majoritarement composé des relevés de T1 avec une majorité de gènes sans changement d'expression relative, celui composé des relevés de T2 et T3 aux heures des changements d'expression les plus brutaux, et finalement celui s'étalant sur la droite qui semble représenter la fin de l'évolution des traitements T2 et T3 où l'expression de gènes y est très polarisée. + + + +# ANALYSE DES GENES + +## DataExpMoy +```{r} +# Liste des traitements, heures et réplicats +traitements <- c("T1", "T2", "T3") +heures <- c("1H", "2H", "3H", "4H", "5H", "6H") +replicats <- c("R1", "R2") + +# Initialiser une matrice vide pour stocker les moyennes +G <- nrow(T) # Nombre de gènes +DataExpMoy <- matrix(NA, nrow = G, ncol = length(traitements) * length(heures)) +colnames(DataExpMoy) <- paste(rep(traitements, each = length(heures)), heures, sep = "_") +rownames(DataExpMoy) <- rownames(T) + +colnames(T) + +# Calcul des moyennes +for (t in traitements) { + for (h in heures) { + # Colonnes correspondant au traitement et à l'heure pour R1 et R2 + col_R1 <- paste(t, h, "R1", sep = "_") + col_R2 <- paste(t, h, "R2", sep = "_") + #print(col_R1) + #print(col_R2) + # Calculer la moyenne sur les deux réplicats + DataExpMoy[, paste(t, h, sep = "_")] <- rowMeans(T[, c(col_R1, col_R2)], na.rm = TRUE) + } +} + +# Convertir en data.frame pour manipulation +DataExpMoy <- as.data.frame(DataExpMoy) +head(DataExpMoy) +``` + +