Гретл - фиктивные взаимодействия
Кажется, не существует "простого" способа (например, в 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
соответственно, перед вычислением условий взаимодействия, если вам нужны более короткие названия серий.