Я аспирант, использующий модель линейной регрессии (подсчета), чтобы понять движущие силы движения fi sh в приливно-болотные угодья и из них. В настоящее время я пытаюсь создать сводную таблицу модели, достойную публикации, в r. Я использую функцию sel.table, которая хорошо работает для этой цели.
Однако мне не удалось создать столбец, содержащий отдельные формулы модели. Ниже мой код, основанный на некоторых хороших инструкциях по использованию пакета MuMIn. https://sites.google.com/site/rforfishandwildlifegrads/home/mumin_usage_examples
Итак, напомним, мой вопрос относится к последней строке кода ниже:
Как мне вставить формулы модели в таблицу выбора модели. **
install.packages("MuMIn")
library(MuMIn)
data = mtcars
models = list(
model1 <- lm(mpg ~ cyl, data = data),
model2 <- lm(mpg ~ cyl + hp, data = data),
model3 <- lm(mpg ~ cyl * hp, data = data)
)
#create an object “out.put” that contains all of the model selection information
out.put <- model.sel(models)
#coerce the object out.put into a data frame
sel.table <-as.data.frame(out.put)[6:10]
#add a column for model names
sel.table$Model <- rownames(sel.table)
#replace model name with formulas
for(i in 1:nrow(sel.table)) sel.table$Model[i]<- as.character(formula(paste(sel.table$Model[i])))[3]
#Any help on this topic would be greatly appreciated!
ОБНОВЛЕННЫЙ КОД
Мой метод получения названий моделей довольно неуклюжий, но в остальном этот код, кажется, генерирует то, что я задумал (полная таблица выбора модели). Кроме того, я не уверен, правильно ли отображаются коэффициенты модели, но я надеюсь продолжить это для своего окончательного ответа.
data = mtcars
#write linear models
models = list(
model1 <- lm(mpg ~ cyl, data = data),
model2 <- lm(mpg ~ cyl + hp, data = data),
model3 <- lm(mpg ~ cyl * hp + disp, data = data),
model4 <- lm(mpg ~ cyl * hp + disp + wt + drat, data = data)
)
#create an object “out.put” that contains all of the model selection information
out.put <- model.sel(models)
#coerce the object out.put into a data frame
sel.table <-as.data.frame(out.put)
#slightly rename intercept column
names(sel.table)[1]="Intercept"
#select variables to display in model summary table
sel.table <- sel.table %>%
select(Intercept,cyl,hp,disp,wt,drat,df,logLik,AICc,delta)
#round numerical coumns
sel.table[,1:6]<- round(sel.table[,1:6],2)
sel.table[,8:10]<-round(sel.table[,8:10],2)
#add a column for model (row) names
sel.table$Model <- rownames(sel.table)
#extract model formulas
form <- data.frame(name = as.character(lapply(models, `[[`, c(10,2))))
#generate a column with model (row) numbers (beside associated model formulas)
form <- form %>%
mutate(Model=(1:4))
#merge model table and model formulas
sum_table <- merge (form,sel.table,by="Model")
#rename model equation column
names(sum_table)[2]="Formula"
print <- flextable(head(sum_table))
print <- autofit(print)
print
6/1/20 ОБНОВЛЕНИЕ:
Ниже - изображение, описывающее две проблемы, возникающие у меня с кодом. Я нашел обходной путь к первому вопросу, но я все еще исследую второй. подробности см. Здесь
- Нумерация моделей заканчивается
- Для каждой модели создаются столбцы формул модели