Гретл - фиктивные взаимодействия

Кажется, не существует "простого" способа (например, в R или Python) создавать термины взаимодействия между фиктивными переменными в gretl? Нужно ли нам кодировать те вручную, что будет сложно для многих уровней? Вот минимальный пример ручного кодирования:

open credscore.gdt
SelfemplOwnRent=OwnRent*Selfempl
# model 1
ols Acc 0 OwnRent Selfempl SelfemplOwnRent

Теперь мой термин "ручное взаимодействие" не будет работать для факторов со многими уровнями и фактически даже не выполняет работу для бинарных переменных.

Спасибо, ML

1 ответ

Решение

Один из способов сделать это - использовать списки. Использовать dummify-команда для создания манекенов для каждого уровня и ^-оператор для создания взаимодействий. Пример:

open griliches.gdt

discrete med

list X = dummify(med)
list D = dummify(mrt)
list INT = X^D

ols lw 0 X D INT

Команда discrete превращает вашу переменную в дискретную переменную и позволяет использовать dummify (этот шаг не нужен, если ваша переменная уже дискретна). Теперь все термины взаимодействия хранятся в списке INT и вы можете легко оценить их в следующем ols-command.

@Markus Loecher по вашему второму вопросу: вы всегда можете использовать renameкоманда для переименования серии. Поэтому для этого вам придется перебрать все элементы в списке INT. Однако я бы предпочел переименовать обе входные серии в приведенном выше примереmrt а также med соответственно, перед вычислением условий взаимодействия, если вам нужны более короткие названия серий.

Другие вопросы по тегам