如何对矩阵执行逻辑回归分析

时间:2019-09-09 20:17:14

标签: r logistic-regression

我是R的新手,需要使用单核苷酸多态性(SNP)列表作为预测变量(也包括0或1的离散值)对每个具有离散0或1值的表型进行逻辑回归。 br /> 我已经使用两个列表制作了一个矩阵,现在希望做一个单变量分析,涵盖两组中每个实体的每种组合

phenotypes <- colnames(regressioninput)[c(2:32, 47:56)]

SNPs01 <- colnames(regressioninput)[c(74:176)]

var1 = rep(phenotypes, length(SNPs01))

var1 = var1[order(var1)]

var2 = rep(SNPs01, length(phenotypes))

df = data.frame(a = var1, b = var2)


# first attempt at analysis
glm(phenotypes ~ SNPs01, family = binomial(link = "logit"), data = regressioninput)


#second attempt
glm.formula <- mapply(var1, function(x) {paste(x, "~ var2 ")})
listglmOut<-lapply(glm.formula, function(f) glm(as.formula(f), family = binomial(link='logit'), data = df ))

错误消息读取的可变长度不同

1 个答案:

答案 0 :(得分:0)

同样,如果没有数据样本就很难理解您想要什么,所以我只能猜测这样的事情会起作用:

set.seed(777)

dat <- matrix(sample(c(0,1), 100^2, replace = TRUE), 100, 100)
dat <- as.data.frame(dat)

gr1 <- names(dat)[1:20]
gr2 <- names(dat)[21:ncol(dat)]


res <- vector(mode = "list", length = 20*80)

for (i in seq_along(gr1)){
  for (j in seq_along(gr2)){
    ind <- 80*(i-1) + j
    res[[ind]] <- summary(glm(as.formula(paste0(gr1[i],'~',gr2[j])),
                    family = binomial(link = "logit"), data = dat))
  }
}