2015-07-02 7 views
1

Я пытаюсь написать алгоритм, который выполняет следующее: в RВыполните выбор модели с шагом функцией и запись результата в 0/1 вектор (R)

  1. На набор данных dat Используйте step функции для выполнения glm Выбор модели j ковариатов из набора переменных J-кандидата
  2. Взять окончательный call из j вариантов и сравнить с полным вектором J. Записать результат в вектор 1xJ, где 1 указывает, что переменная находится в окончательном call и 0 elsewise.

Пример:

В следующем примере трех переменных (x,y,z) являются кандидатами для прогнозирования переменной dep. Step используется для выбора переменных. Моя цель состоит в том, чтобы наконец иметь вектор, указывающий, какая из входных переменных заканчивается в окончательной модели, так что здесь c(1,0,1).

n=1000 
x <- rnorm(n,0,1) 
y <- rnorm(n,0,1) 
z <- rnorm(n,0,1) 

dep <- 1 + 2 * x + 3* z + rnorm(n,0,1) 

m<-step(lm(dep~x+y+z),direction="backward") 

У меня есть трудности, извлекая имена переменных из конечного m$call и создания вектора.

+0

Покажите свой фактический код вместе с вводом образца (и рассмотрит мечение на ваш вопрос [тег: г] теги в то же время) – Tensibai

+0

я не могу показать свой фактический вклад, но Я займу минутку, чтобы подготовить имитационный пример. – tomka

+0

И на этой стороне мы не можем делать предсказания, чтобы угадать ваш ввод и ваш код, чтобы понять, где вы застряли: D – Tensibai

ответ

1

Я думаю, что это делает это:

n=1000 

x <- rnorm(n,0,1) 
y <- rnorm(n,0,1) 
z <- rnorm(n,0,1) 

dep <- 1 + 2*x + 3*z + rnorm(n,0,1) 

m<-step(lm(dep~x+y+z),direction="backward") 

matt <- attributes(m$terms) 
matt$term.labels 
#[1] "x" "z" 

v <- c("x","y","z") 
as.integer(v %in% matt$term.labels) 
#[1] 1 0 1 
+1

- это не лучший ответ? –

+1

Это хороший. Я не знал значение $ term.labels – tomka

+1

, вам нужно учиться погружению с корзиной 'str'. Взгляните на книгу Хэдли Уикхэма «Продвинутый R», доступную онлайн. –