New In

Оценка систем гибкого спроса

Основные моменты

  • Генерируйте сплайновые базисные функции для нескольких переменных одновременно

  • Базисные функции B-сплайна

  • Кусочные полиномиальные базисные функции

  • Ограниченные кубические сплайн-базисные функции

  • Выберите количество узлов, предоставьте список узлов или используйте матрицу узлов

Часто мы не хотим делать предположения о функциональной форме анализируемых данных. Мы можем захотеть провести регрессию результата на набор регрессоров и не зависеть от функциональной формы регрессоров. Базисные функции сплайнов — это гибкие аппроксимации функциональной формы регрессоров. Мы также можем захотеть визуализировать связь между результатом и регрессором или между переменными. Мы можем использовать сплайны для визуализации этих отношений, не требуя линейности или других функциональных форм.

В Stata 18 вы можете использовать новую команду makespline для генерации базисных функций B-сплайна, кусочно-полиномиального сплайна и ограниченного кубического сплайна из списка существующих переменных. Например, мы можем ввести

. makespline bspline x1 x2 x3 x4 ...x100

чтобы сформировать 100 базисных функций B-сплайна третьего порядка, по одной для каждой переменной от x1 до x100. Теперь мы можем использовать любую из базисных функций для подгонки модели и не зависеть от связи ковариатов и интересующего нас результата. Или мы можем визуализировать связь интересующего нас результата и любого из компонентов базисной функции, сгенерированной makespline.

Давайте посмотрим, как это работает

Мы хотим увидеть влияние курения матери (mbsmoke) на вес младенца при рождении (bweight) с помощью команды telasso. Команда telasso позволяет нам моделировать как результат (bweight), так и лечение (mbsmoke). Мы полагаем, что существует связь между весом при рождении и возрастом матери (mage), уровнем образования матери (medu) и уровнем образования отца (fedu). Мы также считаем, что medu является хорошим предиктором того, курит ли мать во время беременности.

Мы не уверены в функциональной форме взаимосвязи веса b и mage, medu и fedu. Мы также не знаем, как связаны mbsmoke и medu. Для telasso это не имеет значения. Команда выбирает из набора кандидатов ковариаты и оценивает интересующий эффект лечения.

Мы используем makespline для формирования базисных функций от каждой из интересующих нас ковариат.

. makespline bspline mage medu fedu

Мы сгенерировали базисные функции B-сплайна третьего порядка, каждая из которых состоит из пяти переменных, от mage, medu и fedu. Сгенерированные переменные имеют общие системные имена, начинающиеся с _bsp. При желании вы можете изменить имена базисов с помощью опции basis(). Ниже мы покажем сгенерированные переменные:

Компоненты базисных функций B-сплайна от mage начинаются с_bsp_1, от medu — с _bsp_2, а от fedu — с _bsp_3. Используя эти базисные функции, мы подгоняем модель «лечение — эффект»:

. telasso (bweight c._bsp_1*##c._bsp_2* _bsp_3*) (mbsmoke _bsp_2*)

bweight — произвольная функция взаимодействия (заданного с помощью ##) базисных функций для mage и medu и базисной функции для образования отца. mbsmoke — произвольная функция базисной функции для образования матери. Ниже приведены результаты:

Переменные базисной функции, созданные с помощью makespline, и их взаимодействия дали 40 потенциальных контрольных переменных. telasso выбрал 5 из этих контрольных переменных и использовал их для расчета эффекта лечения в размере -263 грамма. Другими словами, вес младенцев при рождении будет на 263 грамма меньше, если все матери будут курить, по сравнению с контрфактическим случаем, когда ни одна мать не курит.