Я запускаю код для всех возможных моделей филогенетической обобщенной линейной модели. У меня возникла проблема с извлечением и сохранением бета-коэффициентов для каждой модели.
Я хочу сохранить коэффициенты в матрицу, где столбцы соответствуют определенной переменной, а строки соответствуют формуле. Проблема возникает из-за того, что переменные разные для каждой модели. Таким образом, нельзя просто привязать коэффициенты к матрице.
В приведенном ниже примере показано, где я нахожусь в проблеме:
y = rnorm(10)
inpdv = matrix(c(rnorm(10), runif(10), rpois(10, 1)), ncol = 3)
colnames(inpdv) = c("A", "B", "C")
data = cbind(y, inpdv)
model.mat = expand.grid(c(TRUE,FALSE), c(TRUE,FALSE), c(TRUE,FALSE))
names(model.mat) = colnames(inpdv)
formula = apply(model.mat, 1, function(x)
paste(colnames(model.mat)[x], collapse=" + "))
formula = paste("y", formula, sep = " ~ ")
formula[8] = paste(formula[8], 1, sep = "")
beta = matrix(NA, nrow = length(formula), ncol = 3)
for(i in 1:length(formula)){
fit = lm(formula(formula), data)
## Here I want to extract the beta coeffecients here into a n * k matrix
## However, I cannot find a way to assign the value to the right cell in the matrix
}
Поэтому я предполагаю, что каждый коэффициент нужно будет поместить в соответствующую ячейку, но я не могу придумать быстрый и эффективный способ сделать это.
Настоящий анализ будет проведен примерно 30 000 раз, поэтому любые советы по эффективности также будут оценены.
Редактировать: например, вывод для модели y ~ a + c должен быть в форме
a NA b
Где буквы обозначают коэффициент для этой модели. Следующей моделью может быть y ~ b + c, которая затем будет добавлена внизу. Таким образом, результат теперь будет выглядеть так
a NA b
NA b c