nls sslogis: использование фиктивной переменной в качестве условия взаимодействия для сравнения двух сигмовидных моделей
Я использую в своем коде следующую модель:
model <- nls(y ~ SSlogis(x, Asym, xmid, scal),
data = data.frame(x, y))
Есть переменная (V
) с двумя уровнями: V1
а также V2
- Модель 1: Подгонка Y к X с помощью сигмоидной функции, когда V=V1 -> asymptote1
- Модель 2: Подгонка Y к X с помощью сигмоидной функции, когда V=V2 -> asymptote2
где asymptote1
а также asymptote2
не равны.
Как мы можем показать, что асимптоты существенно различаются?
Есть ли способ использовать V
как член взаимодействия и получить коэффициент взаимодействия? Я вводил в модель V-Dummy, и он генерировал следующую ошибку:
Ошибка в (attr(object, "initial"))(mCall = mCall, data = data, LHS = LHS): слишком мало отдельных входных значений для соответствия логистической модели
Если нет, то что вы предлагаете в качестве альтернативного подхода?
1 ответ
Использовать nlme::gnls
:
model <- gnls(y ~ SSlogis(x, Asym, xmid, scal),
data = data.frame(x, y),
params = list(Asym ~ V))
По умолчанию это вернет два параметра для Asym
: один для базового уровня (V1
по умолчанию) и один для разницы в асимптотах между V1 и V2. summary()
должен включать всю обычную информацию вывода (стандартная ошибка, значение p и т. д.)
От ?nlme::gnls
:
params: необязательная двусторонняя линейная формула вида 'p1+...+pn~x1+...+xm' или список двусторонних формул вида 'p1~x1+...+xm', с возможно разные модели для каждого параметра. 'P1,...,pn' представляют параметры, включенные в правую часть 'модели', а 'x1+...+xm' определяют линейную модель для параметров (когда левая часть формулы содержит несколько параметров, предполагается, что все они следуют одной и той же линейной модели, описываемой выражением в правой части). "1" в правой части формулы (й) указывает на один фиксированный эффект для соответствующего параметра (ов). По умолчанию параметры берутся из имен start.