2014-01-21 2 views
0

Как выполнить несколько функций линейной регрессии, таких как lm в R, чтобы соответствовать правилу предсказания y = cx^a_1x^b_2 (где x1 и x2 являются атрибутами, a, b, c являются параметрами, и y - предсказанная метка) моему учебному набору, состоящему из наблюдений ((xi, 1, xi, 2), yi), i = 1, ..., n, причем yi все положительные?множественная линейная регрессия в R

ответ

3

Это очень трудно читать ваше уравнение, но если вы имеете в виду:

у = с × х × х б

то есть (по крайней мере,) два варианта:

  1. Использование lm(...) с Формула: log(y) ~ log(x1) + log(x2). Это будет генерировать оценку перехвата (log(c)) и коэффициенты log(x1) и log(x2) (a и b соответственно). Этот подход является рискованным, поскольку он зависит от ответа (log(y) в этом случае), имеющего ошибки, которые являются нормальными с постоянной дисперсией. Если ошибка в y является нормальной с постоянной дисперсией, то ошибки в log(y) не будет, поэтому вам нужно тщательно изучить остаточный график Q-Q, чтобы убедиться, что это ограничение выполнено.
  2. Используйте уравнение непосредственно в нелинейной модели,

Например,

fit = nls(y ~ c*x1^a*x2^b, data=mydata, start=c(a=1, b=1, c=1)) 

Проблема nls(...) в том, что она не может сходиться, если ваши первоначальные оценки а, Ь, c (здесь, 1, 1 и 1) слишком далеки от наилучших значений. Обычно я бы рекомендовал нелинейную регрессию для этого типа проблем.

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