2016-04-29 5 views
-2

У меня есть файл .csv и входной сигнал в R используется fread() функция из библиотеки data.table.
R ступенчатая регрессия итерация модели по имени столбца (таблица данных)

Файл, который вводится в R с 8928 obs и 71 variable.

Здесь содержание данных 71 столбцов и 8928 строк, называемых DT:

01F0017S 01F0029S 01F0061S ... 01F3676S 01F3686S 01F3736S 
49.25 47.58 119.00  116.77 34.00 188.44 
.... 
52.25 49.40 199.18 ... 118.83 33.10 186.13 

Затем я создал два data.table под названием TrainDT и PracticeDT по:

TrainDT<-DT[1:round(0.7*nrow(DT),0)] 
PracticeDT<-DT[round(0.7*nrow(DT),0):nrow(DT)] 

я написал цикл для установки пошаговой регрессии модели step() и predict() it.

Подходящая модель, как последующей стадии:

Шаг 1:

Я сместить TrainDT к TrainModel data.table с 2673 obs, 72 variables и cbind() новый столбец под названием 01F0017S_y

TrainModel<-cbind(setnames(TrainDT[7:nrow(TrainDT),i,with=F],paste0(names(DT[1,i,with=FALSE]),'_y')),TrainDT[1:(nrow(TrainDT)-6),1:length(TrainDT),with=F]) 

Содержание TrainModel:

01F0017S_y 01F0017S 01F0029S 01F0061S ... 01F3676S 01F3686S 01F3736S 
43.74  49.25 47.58 119.00  116.77 34.00 188.44 
.... 
44.55  52.25 49.40 199.18 ... 118.83 33.10 186.13 

Шаг 2:

Вот моя проблема:

Я использую lm, чтобы соответствовать модели регрессии и step(lm,direction='both') скрипт следующим образом:

Fitmodel<-lm(`01F0017S_y`~.,data=TrainModel) 
stepwise<-step(Fitmodel,sacle=0,direction = 'both') 

Как я могу сделать это линейная модель для поэтапной регрессии с другим именем с колонкой _y?

Например:

Fitmodel<-lm(`01F0017S_y`~.,data=TrainModel) 
Fitmodel<-lm(`01F0029S_y`~.,data=TrainModel) 
Fitmodel<-lm(`01F0061S_y`~.,data=TrainModel) 

Цикл я пишу будет создавать эти переменные с _y автоматически, но не знаю, как назначить для итерации.

Я пытаюсь каким-то образом назначить переменную _y, но всегда терпит неудачу, потому что модель поместит переменную _y с переменной-ответом.

ex.Fitmodel<-lm(TrainModel[[1]]~.,data=TrainModel)

_y поместит с другими переменной как последуйте ПИК:

enter image description here

И я стараюсь так:

x<-paste(names(DT[1,1,with=FALSE]),'_y',sep ='') 
ModelTest_8<-lm(`x`~.,data=TrainModel) 

С информацией об ошибке:

enter image description here

Как итерация пошаговая регрессия с переменной _y переменной?

Большое спасибо.

ответ

0

В отсутствие воспроизводимых данных, вот решение с использованием диафрагмы данные:

dat <- iris[, !names(iris) %in% "Species"]  
responses<- grep("Length", names(iris), value=T) 
predictor <- grep("Width", names(iris), value=T) 
models <- lapply(responses, function(x) as.formula(paste(x, paste(predictor,collapse="+"), sep="~"))) 

models 
[[1]] 
Sepal.Length ~ Sepal.Width + Petal.Width 
<environment: 0x0000000015c28de0> 

[[2]] 
Petal.Length ~ Sepal.Width + Petal.Width 
<environment: 0x0000000015c2c9e0> 


fits <- lapply(models, lm, data=dat) 
steps <- lapply(fits, step, sacle=0, direction="both") 
Смежные вопросы