我有一个数据集(下面包含示例列和数据),我使用以下方法在SAS中运行回归:
proc glm data = dataset;
model units = price;
by category;
absorb store;
run;
数据集包含多个类别和每个类别的多个商店。我从SAS得到的系数与我在R中运行回归时得到的系数不同:
lm(units~ price, data=data)
据我所知,这两种模式不同。但是,我如何复制使用吸收的SAS模型并在R?
中按类别运行模型Date Store Category units price
05/29/15 1500261 Drinks -1.579668674 1.455073877
05/29/15 1500314 Drinks -1.356171009 1.429736919
05/29/15 1500361 Drinks -1.033295892 1.359770698
答案 0 :(得分:0)
如果您的商店数量相对较少,那么只需使用count
SAS中的“by category”语句可以通过子集参数lm(units~ price+factor(stores), data=data)
中的每个类别来实现。必须在子集参数中连续插入每个类别。
如果你有很多商店:
SAS中的吸收语句等同于lm(units~ price+factor(stores), data=data, subset=category=="Drinks")
函数中实现的固定效应方法。首先,数据集必须在数据集的第一列和第二列中使用存储和日期进行组织,然后进行相应的排序以使此过程运行:
plm
然后使用:
datanew<-data[order(data$stores,data$Date),]
现在,如果将“个人”更改为“twoways”,您甚至可以进一步控制时间段。