SAS在R中吸收功能

时间:2015-05-29 14:20:38

标签: r glm lm

我有一个数据集(下面包含示例列和数据),我使用以下方法在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

1 个答案:

答案 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”,您甚至可以进一步控制时间段。