Условное выражение для переменной if, присутствующей в модели - PullRequest
3 голосов
/ 13 декабря 2010

Что я хочу сделать, это создать условие, если в линейной модели есть определенная переменная

Пример. Если есть B в линейной модели

model <- lm(Y ~ A + B + C)

Я хочу что-то сделать. Я использовал функцию суммирования прежде, чтобы обратиться к R-квадрату.

summary(model)$r.squared

Вероятно, я ищу что-то вроде этого

if (B %in% summary(model)$xxx)

или

if (B %in% summary(model)[xxx])

Но я не могу найти ххх. Пожалуйста, помогите =)

Ответы [ 5 ]

4 голосов
/ 13 декабря 2010

Попробуйте это:

if ("B" %in% all.vars(formula(model))) ...
2 голосов
/ 13 декабря 2010

Еще один способ:

if ("B" %in% variable.names(model)) ...
2 голосов
/ 13 декабря 2010

Другой способ:

if ("B" %in% names(coef(model)))
1 голос
/ 13 декабря 2010

Один из вариантов - извлечь термины модели из подобранной модели и запросить атрибут term.labels. Используя некоторые фиктивные данные:

set.seed(1)
DF <- data.frame(Y = rnorm(100), A = rnorm(100), B = rnorm(100), C = rnorm(100))
model <- lm(Y ~ A + B + C, data = DF)

Термин объект содержит метки в атрибуте:

> attr(terms(model), "term.labels")
[1] "A" "B" "C"

Поэтому проверьте, входит ли "B" в этот набор меток:

> if("B" %in% attr(terms(model), "term.labels")) {
+     summary(model)$r.squared
+ }
[1] 0.003134009
0 голосов
/ 13 декабря 2010

Возможные решения (несколько не элегантные):

length(grep("\\bB\\b",formula(model))) > 0

, где \\b соответствует границе слова, а B - имя переменной, которую вы ищете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...