0

Я попытался предсказать t121 столбцы, используя команду «ой» ниже, как это,Как написать программу с помощью команды «lm»?

Model<-lm(t121 ~ t1 + t2 + ..... +t120, mydata) 

В моих данных зависимые переменные являются более чем 100, так что трудно для предсказания каждой колонки с помощью команды «ой», поэтому я хочу написать программу для моих данных, как это дано ниже я написал,

for(j in 120:179){ 
model[[j+1]]<-lm(t[j+1] ~ add1(t1:t[j]),mydata) 
} 

Вместо add1 места я использовал add.bigq,sum команды, но эти три команды не исправить, пожалуйста, скажите мне, что команда подходит для этого места?

+0

Вместо 't1 + t2 + ..' вы можете использовать 'lm (t121 ~., mydata)' Лучше показать небольшой воспроизводимый пример. – akrun

+0

, пожалуйста, сообщите мне, что я не получил – Aarthika

+0

Возможно, 'lapply (121: ncol (mydata), function (i) lm (mydata [[1]] ~., Mydata [c (i, seq (i-1)) ])) ' – akrun

ответ

1

Из чего я понимаю, вы хотите написать цикл, который позволяет использовать lm с различными формулами. Хорошая вещь о lm заключается в том, что в качестве первого аргумента она может принимать объекты класса formula. Посмотрим, как это работает.

# Create a data set 
df <- data.frame(col1=(1:10+rnorm(10)), col2 = 1:10, col3 = rnorm(10), col4 = rnorm(10)) 

Если мы хотим запустить lm на col1 как зависимая и col2 как независимой переменной, то мы можем сделать это:

model_a <- lm(col1 ~ col2, data = df) 

form_b <- as.formula("col1 ~ col2") 
model_b <- lm(form_b, data = df) 

all.equal(model_a,model_b) 
# [1] "Component “call”: target, current do not match when deparsed" 

Так что единственное, что различались между этими двумя моделями является то, что вызов функции был другим (в model_b мы использовали form_b, а не col1 ~ col2). Кроме того, модели идентичны.

Теперь вы знаете, как использовать класс formula для запуска lm. Вы можете легко построить формулы с paste, установив collapse в +

ind_vars <- paste(names(df)[-1],collapse = " + ") 
form_lm <- paste(names(df)[1], "~", ind_vars) 
form_lm 
# [1] "col1 ~ col2 + col3 + col4" 

Если мы хотим три различные модели, мы можем сделать несколько вещей, например:

lis <- list() 
for (i in 2:length(names(df))) { 
    ind_vars <- paste(names(df)[2:i], collapse="+") 
    form_lm <- paste(names(df)[1], "~", ind_vars) 
    lis[[i-1]] <- lm(form_lm,data=df) 
} 
+0

Использование 'update.formula()', вероятно, лучше, чем методы вставки для любой сложной формулы. – Thomas

+0

Спасибо, я не знал об этой функции. – Laterow

+0

@Laterow Большое спасибо .. я получил – Aarthika

Смежные вопросы