diff --git a/Code_1er_Visu.R b/Code_1er_Visu.R new file mode 100644 index 0000000000000000000000000000000000000000..e6067aa6782d52502ee9f5b9b30732072fab5c38 --- /dev/null +++ b/Code_1er_Visu.R @@ -0,0 +1,182 @@ + + + +design_WS3.tsv <- read.csv("design_WS3.tsv.cvs", header = TRUE) + +metadata <- read.csv("C:/Users/diall/Documents/design_WS3 - design_WS3.tsv.csv", heade=TRUE) + +#Charger les biblioth�ques n�cessaires +library(ggplot2) +library(dplyr) +library(tidyr) +library(corrplot) +library(ComplexHeatmap) + +#Cr�er un datatframe avec les donn�es fournies +data <- data.frame( + sample = paste0("S", 1:12), + condition = c("neg", "pos", "neg", "pos", "neg", "pos", "neg", "pos", "neg", "pos", "neg", "pos"), + animal = c("m109", "m109", "m709", "m709", "m882", "m882", "m964", "m964", "m189", "m189", "m198", "m198"), + experiment = as.Date(c("04.09.2024", "04.09.2024", "12.09.2024", "12.09.2024", "17.09.2024", "17.09.2024", "17.09.2024", "18.09.2024", "30.10.2024", "30.10.2024", "30.10.2024", "30.10.2024"), format="%d.%m.%Y"), + extraction = as.Date(c("04.09.2024", "04.09.2024", "12.09.2024", "12.09.2024", "18.09.2024", "18.09.2024", "18.09.2024", "18.09.2024", "30.10.2024", "30.10.2024", "30.10.2024", "30.10.2024"), format="%d.%m.%Y"), + volume = c(18, 18, 18, 18, 17, 18, 18, 18, 12, 12, 12, 12), + quantity = c(520, 936, 718, 223, 15476, 90, 4559, 954, 685, 2671, 72, 75) +) + +#Afficher les premi�res lignes des donn�es +head(data) + +#2- Analyse de corr�lations +#Selectionner les variables num�riques +numeric_data <- data%>% select(volume, quantity) + +#Calculer la matrice de corr�lation +cor_matrix <- cor(numeric_data) + +#Visualiser la matrice de corr�lation avec corrplot +corrplot(cor_matrix, method = "circle", type = "upper", tl.col = "black", tl.srt = 45) + +#Tableau de contingence entre condition et animal +contingency_table <- table(data$condition, data$animal) + +#Certaines valeurs de certaines cellules sont trop faible donc on utilise le test de Fisher au lieu de chi2 +#il est plus adapt� pour les petits echantillons +#Appliquer le test exact de Fisher +fisher_test <- fisher.test(contingency_table) +print(fisher_test) +#P_value= 1: il n'y a aucune diff�rence significative dans la distribution des animaux entre ces deux conditions +#Les 2 variables (condition et animal) sont ind�pendantes + +#visualisation du tableau de contingence +print(contingency_table) + +#3- Visualisatiions adapt�es +#Boxplot pour l'effet de la condition sur la quantit� +ggplot(data, aes(x = condition, y= quantity, fill = condition)) + + geom_boxplot() + + labs(title= "Effet de la condition sur la quantit�", + x= "Condition", + y= "Quantit�") + + theme_minimal() +#Interpretation +#Le graphe montre que la condition positive (pos) est g�n�ralement associ�e +#� des quantit�s plus �lev�es que la condition n�gative (neg) + +#Boxplot pour l'effet de l'animal sur la quantit� +ggplot(data, aes(x = animal, y= quantity, fill = animal)) + + geom_boxplot() + + labs(title = "Effet de l'animal sur la quantit�", + x= "Animal", + y= "Quantit�") + + theme_minimal() +#Interpretation +#Le graphe montre que l'animal a un effet significatif sur la quantit� m�sur�e +#m882 se distingue clairement avec une quantit� tr�s �lev�e, ce qui pourrait +#indiquer une particularit� biologique ou exp�rimentale +#Les autres animaux ont des quantit�s plus faibles, mais avec des variations +#entre eux + + +#Heatmap pourles interactions crois�es +#Pr�parer les donn�es pour la heatmap +heatmap_data <- data %>% + group_by(condition, animal) %>% + summarise(mean_quantity= mean(quantity)) %>% + spread(key= animal, value = mean_quantity) + +#Convertir en matrice +heatmap_matrix <- as.matrix(heatmap_data[,-1]) +rownames(heatmap_matrix) <- heatmap_data$condition + +#Visualiser la heatmap avec ComplexHeatmap +Heatmap(heatmap_matrix, name= "Quantit� moyenne", + row_title = "Condition", column_title = "Animal", + row_names_side = "left", column_names_side = "top") + +#Scatter plot pour volume vs quantit� avec r�gression lin�aire +ggplot(data, aes(x= volume, y= quantity)) + + geom_point(aes(color= condition), size=3) + + geom_smooth(method = "lm", se= FALSE, color= "blue") + + labs(title = "Relation entre volume et quantit�", + x= "Volume", + y= "Quantity") + + theme_minimal() + + +#ANOVA pour comparer les animaux +#anova pour comparer les quantit�s entre les animaux +anova_result <- aov(quantity ~ animal, data= data) +summary(anova_result) + +#0.782 > 0.597 signifie qu'il n'y a pas de diff�rence +#statistiquement significative entre les moyennes des groupes d'animaux +#l'animal n'est pas un facteur influen�ant significativement la quantit� dans les donn�es + + +#V�rifier les hypoth�ses de l'ANOVA +#Homog�n�it� des variances(homosc�dasticit�) +install.packages("carData") +library(car) +class(data) +colnames(data) +leveneTest(quantity ~ animal, data = metadata ) +#Le test de Levene retourne une valeur F extremement �lev�e +#p-value est extremeent faible, indiquant que les +#variances ne sont pas homog�nes entre les groupes d�finis par animal + + +#Test de Bartlett +bartlett.test(quantity ~ animal, data = metadata) +#Les r�sultats du test de Bartlett indiquent que les variances entre +#les groupes d�finis par la variable animal ne sont pas homog�nes +#p-value < 5%, nous rejetons l'hypoth�se nulle d'homog�n�it� des variances + +#Test de Fligner-Killeen +fligner.test(quantity ~ animal, data = metadata) +#p-value= 0.05138 est proche de 5% les groupes sont marginalement homog�nes + + +#Test Welch +oneway.test(quantity ~ animal, data = metadata, var.equal = FALSE) + +#Tracer un boxplot pour inspecter les variances entre groupes +boxplot(quantity ~ animal, data = metadata, main = "Quantities by Animal", ylab = "Quantity", xlab = "Animal") +#Interpretation +#Le groupe m882 pr�sente une variabilit� beaucoup plus importante que les +#autres groupes, avec une �tendue tr�s large des valeurs(la boite et les moustaches sont tr�s �tendus) +#Cela pourrait expliquer pourquoi le test d'homog�n�it� des variances comme celui +#Bartlett ou de Fligner-Killen a d�tect� une h�t�rog�n�it� +#Les groupes m109 et 3198 montrent des valeurs de quantity beaucoup plus faibles et homog�nes +#avec une faible dispersion des donn�es +#Il semble qu'il y ait des observations extremes dans certains groupes, en particulier dans m882. +#Ces valeurs peuvent influencer les tests statistiques et les r�sultats +#Les grandes diff�rences de variabilit� entre les groupes(notament m882 vs les autres) rendent les hypoth�ses +#d'homog�n�it� des variances et de normalit� difficiles � maintenir +#L'ANOVA classique pourrait ne pas �tre appropri�e en raison de ces diff�rences importantes + + + +#Transformation des donn�es pour r�duire l'influence des valeurs extremes et stabilis�r les variances +metadata$quantity_log <- log(metadata$quantity + 1) +boxplot(quantity_log ~ animal, data = metadata, main= "Log-transformed Quantities by Animal") +#Interpretation: la transformation logarithmique a r�duit l'amplitude de la dispersion observ�e pr�c�demment +#Cependant, ce groupe reste le plus variable par rapport aux autres, ce qui pourrait encore influencer les analyses +#Les groupes m109 et m198 ont des valeurs plus resserr�es et homog�nes apr�s transformation + + + +#Analyse non param�trique +kruskal.test(quantity ~ animal, data = metadata) + +#Identifier les valeurs etremes dans m882 et �valuer leur impact +boxplot.stats(metadata$quantity[metadata$animal == "m882"]) + +#comparaison par paires +pairwise.wilcox.test(metadata$quantity, metadata$animal, p.adjust.method = "bonferroni") + +#Groupes convertis en facteurs +metadata$anima <- as.factor(metadata$animal) +table(metadata$animal) +#Normalit� des r�sidus +#Test de Shapiro-Wilk +(shapiro.test(residuals(anova_result)))