gretl - 虚拟交互
gretl - dummy interactions
似乎没有 "easy" 方法(例如在 R 或 python 中)在 gretl 中创建虚拟变量之间的交互项?
我们真的需要手动编写那些对很多级别来说都很难的代码吗?这是手动编码的最小示例:
open credscore.gdt
SelfemplOwnRent=OwnRent*Selfempl
# model 1
ols Acc 0 OwnRent Selfempl SelfemplOwnRent
现在我的手动交互项不适用于具有多个级别的因子,实际上甚至不适用于二元变量。
谢谢,
毫升
实现此目的的一种方法是使用列表。使用 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
-命令中轻松评估它们。
@Markus Loecher 关于你的第二个问题:
您始终可以使用 rename
命令重命名系列。因此,您必须遍历列表 INT 中的所有元素才能这样做。但是,如果您想要更短的系列名称,我宁愿建议在计算交互项之前分别重命名两个输入系列,在上面的示例中 mrt
和 med
。
似乎没有 "easy" 方法(例如在 R 或 python 中)在 gretl 中创建虚拟变量之间的交互项? 我们真的需要手动编写那些对很多级别来说都很难的代码吗?这是手动编码的最小示例:
open credscore.gdt
SelfemplOwnRent=OwnRent*Selfempl
# model 1
ols Acc 0 OwnRent Selfempl SelfemplOwnRent
现在我的手动交互项不适用于具有多个级别的因子,实际上甚至不适用于二元变量。
谢谢, 毫升
实现此目的的一种方法是使用列表。使用 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
-命令中轻松评估它们。
@Markus Loecher 关于你的第二个问题:
您始终可以使用 rename
命令重命名系列。因此,您必须遍历列表 INT 中的所有元素才能这样做。但是,如果您想要更短的系列名称,我宁愿建议在计算交互项之前分别重命名两个输入系列,在上面的示例中 mrt
和 med
。