Использование вектора символьных переменных в определенной части функции lm() R

#r #function #vector #linear-regression #lm

#r #функция #вектор #линейная регрессия #lm

Вопрос:

Я выполняю регрессионный анализ в R, который выглядит следующим образом:

 lm_carclass_mod <- lm(log(count_faves 1)~log(views 1) dateadded group_url license log(precontext.nextphoto.views 1) log(precontext.prevphoto.views 1) log(oid.Bridge 1) log(oid.Face 1) log(oid.Quail 1) log(oid.Sky 1) log(oid.Car 1) log(oid.Auditorium 1) log(oid.Font 1) log(oid.Lane 1) log(oid.Bmw 1) log(oid.Racing 1) log(oid.Wheel 1),data=flickrcar_wo_country)
confint(lm_carclass_mod,level=0.95)
summary(lm_carclass_mod)
  

Зависимая переменная, а также некоторые независимые переменные довольно изменчивы на протяжении всего моего анализа, вот почему я хотел бы продолжать вставлять их вручную.

Тем не менее, я ищу способ заменить все «oid. …» переменные с одной единственной функцией.

На данный момент я пришел к следующему:

 g <- paste("log(",variables," 1)", collapse=" ")
  

К сожалению, это не работает внутри функции lm (). Также не используется формула, подобная этой:

 g <- as.formula(
  paste("log(",variables," 1)", collapse=" ")
  )
  

Векторные переменные содержат следующие элементы:

 variables <- ("oid.Bridge", "oid.Face", "oid.Quail", "oid.Off-roading", "oid.Sky", "oid.Car", "oid.Auditorium", "oid.Font", "oid.Lane", "oid.Bmw", "oid.Racing", "oid.Wheel")     
  

В конце моя регрессионная модель должна выглядеть примерно так:

 lm_carclass_mod <- lm(log(count_faves 1)~log(views 1) dateadded group_url license log(precontext.nextphoto.views 1) log(precontext.prevphoto.views 1) g,data=flickrcar_wo_country)
confint(lm_carclass_mod,level=0.95)
summary(lm_carclass_mod)
  

Заранее спасибо за вашу помощь!

Ответ №1:

Вам нужно было бы преобразовать обе части в строку, а затем составить формулу:

 #the manual bit
manual <- "log(count_faves 1)~log(views 1) dateadded group_url license log(precontext.nextphoto.views 1) log(precontext.prevphoto.views 1)"

#the variables:
oid_variables <- c("oid.Bridge", "oid.Face", "oid.Quail", "oid.Off-roading", "oid.Sky", "oid.Car", "oid.Auditorium", "oid.Font", "oid.Lane", "oid.Bmw", "oid.Racing", "oid.Wheel")     

#paste them together 
g <- paste("log(", oid_variables, " 1)", collapse=" ")

#make the formula
myformula <- as.formula(paste(manual, ' ', g))
  

Затем вы добавляете формулу в lm :

 lm_carclass_mod <- lm(myformula, data=flickrcar_wo_country         
  

Комментарии:

1. Отлично, большое вам спасибо! Это именно то, что я искал:)

2. Рад помочь 🙂