2015-05-28 3 views
0

У меня есть 40 SNP и вы хотите увидеть эффект каждого отдельного SNP на возраст менопаузы. Для этого мне нужно сделать несколько линейных регрессий каждого из отдельных SNP. Я хочу, чтобы не вводить одну и ту же команду 40 раз (так как в будущем я буду делать это с еще большим количеством SNP).Множественная множественная линейная регрессия

То, что я хочу сделать, это список из ОНП в csv файл и называем это x:

x <- read.csv("snps.csv") 

Затем я хочу использовать этот список в этой команде;

fit <- lm(a_menopause ~ "snps" + country, data=mydata) 

Где snps мой список из SNP, мне нужно проанализировать, но должно быть сделано один SNP в то время. Я бы идеально хотел напечатать результаты в файле csv.

+0

Почему вы нужны отдельные модели? Объедините все в одной модели. – Roland

+0

Мне нужно увидеть влияние каждого отдельного SNP на возраст менопаузы –

+0

зациклиться на списке и подгонять модель к каждому 'x', если хотите разные перехваты – jenesaisquoi

ответ

1

Смотрите ниже пример:

#dummy data 
set.seed(123) 
#phenotype 
phenotype <- data.frame(
    a_menopause=sample(c(0,1),10,replace=TRUE), 
    country=sample(letters[1:3],10,replace=TRUE)) 
#genotype 
genotype <- 
read.table(text="SNP1 SNP2 SNP3 SNP4 
1 0 1 1 
      2 0 2 1 
      0 0 0 1 
      0 0 0 1 
      0 1 0 1 
      1 1 0 1 
      1 2 0 1 
      1 2 1 2 
      0 0 0 1 
      0 1 0 1 
      ",header=TRUE) 
#data for lm 
fitDat <- cbind(phenotype,genotype) 

#get fit for all SNPs 
fitAllSNPs <- 
    lapply(colnames(fitDat)[3:6], function(SNP){ 
    fit <- lm(paste("a_menopause ~ country + ", SNP), 
       data=fitDat) 
    }) 

#extract coef for each SNP 
lapply(fitAllSNPs,coef) 

#output 
# [[1]] 
# (Intercept)  countryb  countryc   SNP1 
# 1.000000e+00 -2.633125e-16 -1.000000e+00 9.462903e-17 
# 
# [[2]] 
# (Intercept)  countryb  countryc   SNP2 
# 1.000000e+00 -1.755417e-16 -1.000000e+00 2.780094e-19 
# 
# [[3]] 
# (Intercept)  countryb  countryc   SNP3 
# 1.000000e+00 -2.633125e-16 -1.000000e+00 1.079985e-16 
# 
# [[4]] 
# (Intercept)  countryb  countryc   SNP4 
# 1.000000e+00 -1.755417e-16 -1.000000e+00 4.269835e-31 
Смежные вопросы