Skip to content
Snippets Groups Projects
Commit 2ef776e8 authored by Anta Diop's avatar Anta Diop
Browse files

Upload New File

parent d9b5eb17
Branches
No related tags found
No related merge requests found
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)))
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment