2016-11-22 27 views
0

Я хотел бы применить модель гаммы в наборе данных с указанием типов используемых функций.Определение функции функции гаммы

Было бы что-то вроде: y ~ cst1 * (s(var1)-s(var2)) * (1 - exp(var3*cst2))

s должна быть та же функция, как для var1 и var2. У меня нет предварительной идеи о семействе функций s. Если я вернусь, модель найдет константы (cst1 и cst2) плюс функция s.

Возможно ли это? Если нет, есть ли способ (другой тип моделей), который я могу использовать для выполнения того, что я ищу?

Заранее благодарим за ответы.

+0

var1 и var2 являются одной из объясняющих переменных и cst1, cst2 являются мультипликативными константами (номера, если вы хотите). У моего набора данных есть 4 столбца y, var1, var2 и var3, где y - цель. – mhaddad

+1

Обычно в GAM 's()' расширяется до набора линейных базисных функций для вашей модели, которые служат для создания гибкой, гладкой, но не технически нелинейной функции предиктора. Если вы хотите объединить их с мультипликативными терминами, вы можете попасть в трудные воды. –

+0

Я вижу ... что я должен использовать тогда? Спасибо за ваш ответ. – mhaddad

ответ

1

Эта модель может быть оснащена nls, нелинейным пакетом наименьших квадратов. Это позволит вам моделировать формулу, которую вы хотите напрямую. Однако сплайны должны выполняться вручную. This question gets at what you would be trying to do.

Насколько получать шлицы быть одинаковым для var1 и var2, вы можете сделать это путем вычитания базисных матриц. В основном вы хотите вычислить вектор коэффициентов A, где этот термин равен A * s(var1) + A * s(var2) = A * (s(var1) - s(var2)). Вы не хотели бы просто делать s(var1 - var2); в целом, f(x) - f(y) != f(x - y). Для этого в R, вы

  1. Compute сплайн базисных матриц с ns() для var1 и var2, давая им те же узлы. Вам необходимо указать оба параметра knots и Boundary.knots, чтобы два сплайна разделили один и тот же базис.

  2. Вычтите две матрицы сплайновых базиса (выход из функции ns()).

  3. Адаптируйте полученную вычитаемую матрицу сплайнов для формулы nls, как и в предыдущем вопросе.

+0

действительно полезно. Я собираюсь попробовать это, но это, похоже, отвечает на мой вопрос. Большое спасибо. – mhaddad

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