[程式] SAS跑迴歸

看板Statistics作者 (小刀)時間15年前 (2010/12/29 02:07), 編輯推噓6(607)
留言13則, 5人參與, 最新討論串1/1
[軟體程式類別]: SAS [程式問題]: 小弟目前知道跑回歸的方法有 PROC REG跟 PROC GLM 但目前的問題是 PROC REG不知怎麼輸入類別變數 而用PROC GLM 則不能像PROC REG有很多方法選模 (至少我不會...)像STEPWISE 向前向後..ETC 用PROC REG時 我的程式是 PROC REG DATA=ABC; model price=area; proc print; run; 其中AREA是地區的意思 有12個類別 但LOG顯示 ERROR: Variable area in list does not match type prescribed for this list. 用PROC GLM時 卻沒辦法選出2~3個模型 但我一定要選出2~3個模型,再去選出最好的,這就是我的主要問題... 請高手幫忙 謝謝 [軟體熟悉度]: 新手(不到1個月) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 163.13.144.29

12/29 10:05, , 1F
請練習看SAS help檔 對你有幫助 >sas/stat > proc reg
12/29 10:05, 1F

12/29 10:42, , 2F
在PROC REG DATA=ABC;後換行加上CLASS 類別變數名即可。
12/29 10:42, 2F
其實我有看sas help檔,裡頭的qualitative範例,但檔中的類別變數是0、1,而 sas只是直接model y=x; 如此而已,所以我還是不懂... 另外,class我只能用在proc glm耶,proc reg我用class他顯示錯誤 ※ 編輯: chris1 來自: 118.160.21.243 (12/29 14:17)

12/29 15:33, , 3F
因為reg不支援class 要改用GLM 通用線性模型
12/29 15:33, 3F

12/29 15:34, , 4F
另外你要選擇stepwise那種在model後面打上 SELECTION=
12/29 15:34, 4F

12/29 15:35, , 5F
例如 model y = x / SELECTION=STEPWISE;
12/29 15:35, 5F

12/29 15:36, , 6F
help裡面找reg主題 syntax各指令說明的model項目會提到
12/29 15:36, 6F

12/29 15:39, , 7F
至於GLM為什麼沒有Selection 有時候用途不同
12/29 15:39, 7F
謝謝你,PROC REG後面的SELECTION有向前向後等等其他的指令,這些我有 可是我的問題就在,我必須要SELECT出幾個侯選模型,再去看AIC BIC CP等這些值 來挑出最好的,而PROC GLM卻不行,PROC REG卻不知怎麼用類別變數..因為不能CLASS ※ 編輯: chris1 來自: 118.160.21.243 (12/29 15:42)

12/29 15:41, , 8F
不會只是單純選擇變數而會去探討變數內分組的不同差異
12/29 15:41, 8F

12/29 17:23, , 9F
REG的檔案對兩類以上的變項可以自己做dummy coding
12/29 17:23, 9F
其實我做過,我的有12類,設成0~11,但用reg還是顯示不行耶... ※ 編輯: chris1 來自: 118.160.21.243 (12/29 17:35)

12/29 17:39, , 10F
不然你列一下你的部分DATA 讓大家幫你看看問題在哪
12/29 17:39, 10F

12/29 20:15, , 11F
0-11...你可以貼你設定dummy的程式上來嗎?
12/29 20:15, 11F
data abb; set abc; if area=A1 then area=0; if area=A2 then area=1; if area=A3 then area=2; if area=A4 then area=3; if area=A5 then area=4; if area=A6 then area=5; if area=A7 then area=6; if area=A8 then area=7; if area=A9 then area=8; if area=A10 then area=9; if area=A11 then area=10; proc print; run; proc reg data=abb; model price=area; proc print; run; 這是程式的一部分,其中PRICE是價格,連續型的變數,AREA是區域,有12區,我 設定成數字0~11,再跑PROC REG,但一樣不行... ※ 編輯: chris1 來自: 163.13.33.12 (12/29 20:33)

12/29 20:37, , 12F
建議你上網瀏覽一下dummy variable的coding方式,或爬文
12/29 20:37, 12F
謝謝你..我想應該是有頭緒了... ※ 編輯: chris1 來自: 163.13.33.12 (12/29 20:46)

12/29 22:40, , 13F
if area='A11' then areax=10; 後面變數名稱換一下
12/29 22:40, 13F
文章代碼(AID): #1D6YTe4A (Statistics)