From cc0c49984080b0034313911c8937d6510894e13c Mon Sep 17 00:00:00 2001 From: noah Date: Thu, 20 Oct 2022 16:41:05 -0500 Subject: [PATCH] Finalizing Part A: Chi-Square tests and fisher tests --- .~lock.lab_gwas_stats.docx# | 2 +- Schrick-Noah_CS-6643_Lab-6.R | 34 +++++++++++++++++++++++++++++++++- lab_gwas_stats.docx | Bin 36403 -> 36892 bytes 3 files changed, 34 insertions(+), 2 deletions(-) diff --git a/.~lock.lab_gwas_stats.docx# b/.~lock.lab_gwas_stats.docx# index 11d557a..43e9721 100644 --- a/.~lock.lab_gwas_stats.docx# +++ b/.~lock.lab_gwas_stats.docx# @@ -1 +1 @@ -,noah,NovaArchSys,20.10.2022 16:12,file:///home/noah/.config/libreoffice/4; \ No newline at end of file +,noah,NovaArchSys,20.10.2022 16:40,file:///home/noah/.config/libreoffice/4; \ No newline at end of file diff --git a/Schrick-Noah_CS-6643_Lab-6.R b/Schrick-Noah_CS-6643_Lab-6.R index bb6dc52..bd72376 100644 --- a/Schrick-Noah_CS-6643_Lab-6.R +++ b/Schrick-Noah_CS-6643_Lab-6.R @@ -21,4 +21,36 @@ genotypes.df <- data.frame(as(genotypes, "character")) colnames(genotypes.df) <- snp.ids # observed contingency table for SNP rs630969 table(phenotype,genotypes.df$rs630969, - dnn=c("phenotype","genotype")) # dnn dimension names of table \ No newline at end of file + dnn=c("phenotype","genotype")) # dnn dimension names of table +dim(genotypes.df) + +#### Part A: Chi-Square Test +# creates list of observed contingency tables for all SNPs +# sapply acts on each column of genotypes.df +observed.tables.list <- sapply(genotypes.df, function(x) + table(phenotype,x,dnn=c("phenotype","genotype"))) + +test.table <- observed.tables.list$rs634228 +genoMarg.vec <- colSums(test.table) # margin vector +phenoMarg.vec <- rowSums(test.table) # margin vector +totalSubj <- sum(genoMarg.vec) # total subjects +expect.test <- outer(phenoMarg.vec,genoMarg.vec/totalSubj,'*') + +## Fisher Test +# Fisher exact test (chi-square test) for all SNPs +fish_fn <- function(i){ + cbind(snp.ids[i], fisher.test(observed.tables.list[[i]])$p.value) +} + +# apply fisher exact test to all SNPs +fish.df <- data.frame(t(sapply(1:ncol(genotypes.df), fish_fn))) +colnames(fish.df) <- c("rs", "p_value") + +# sort SNPs by Fisher exact p-value +if (!require("dplyr")) install.packages("dplyr") +library(dplyr) +fish.results <- fish.df %>% + mutate_at("p_value", as.character) %>% + mutate_at("p_value", as.numeric) %>% + arrange(p_value) +print(fish.results) diff --git a/lab_gwas_stats.docx b/lab_gwas_stats.docx index 20fad62745341450881b6b4011db814d503c9e66..04334a7ea77fca9afb252cf80fafd627300c3c10 100644 GIT binary patch delta 12615 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 delta 12273 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