2013-05-01 1 views
3

Проблема:Является ли моя формула R эквивалентной статистической модели, которую я имею в виду?

Построение статистических моделей с использованием formula является мощной и элегантной особенностью языка R. Одна из причин, почему я не использовал formula столько, сколько должен, так это то, что синтаксис немного запутан (например, x*y не означает «продукт x и y»).

Вопрос:

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

Пример:

Скажем, я хочу, чтобы найти параметры a и b модели y = a + b*(x1*x2) путем линейной регрессии. Наивно, я ввожу это в R

df <- data.frame(y=seq(5), x1=runif(5), x2=runif(5)) # toy data 
lm(y~x1*x2, data=df) # this is wrong 

Я могу сказать от выхода lm, что это не то, что я хотел из-за дополнительных коэффициентов для x1 и x2. Но нужно будет отлаживать формулу перед вызовом функции подстановки. (Правильный путь, чтобы соответствовать этой модели будет lm(y~x1:x2, data=df))

ответ

4

Один из способов отладки формула, прежде чем запустить модель с помощью formula и update:

f <- formula(y ~ x1*x2) 
update(f , terms(f)) 
# y ~ x1 + x2 + x1:x2 

f <- formula(y ~ x1:x2) 
update(f , terms(f)) 
# y ~ x1:x2 

совпадению Вы можете также указать перехватывать член в модели (т.е. коэффициент a) путем включения 1 (1 * a = a), так что это эквивалентно:

f <- formula(y ~ 1 + x1:x2) 
update(f , terms(f)) 
# y ~ x1:x2 
Смежные вопросы