2015-05-29 66 views
0

我有一個數據集(樣品列和數據包括下面),用於我使用運行在SAS迴歸以下:SAS吸收功能中的R

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

你能發佈你的結果和一些虛擬數據的鏈接嗎? – itzy

+0

我們大多數人沒有SAS許可證(畢竟我們有R)。顯示輸出並解釋SAS代碼的功能。 – Roland

+0

根據[sas文檔](http://support.sas.com/documentation/cdl/en/statug/63033/HTML/default/viewer.htm#statug_glm_sect032.htm),您不需要吸收聲明,所以我想你可以用另一種方式,然後翻譯成r @ – rawr

回答

0

如果你有門店的數量相對較少就用lm(units~ price+factor(stores), data=data)

的「按類別」,在SAS語句可以通過在一個子集的說法lm(units~ price+factor(stores), data=data, subset=category=="Drinks")每個類別執行。每個類別必須在子集參數中連續插入。

如果你有許多商店:

的在SAS吸收語句是等同於固定效應的做法,在plm功能實現。首先,數據集必須在你的數據集的第一和第二列設有專賣店和日期組織,然後進行排序據此作出此過程運行:

datanew<-data[order(data$stores,data$Date),] 

然後用:

library(plm) 
plm(units~ price, data=datanew, subset=category=="Drinks", 
effect="individual",model="within",index=c("stores","date")) 

現在如果您將「個人」更改爲「雙向」,您甚至可以進一步控制時間段。