SPSS 

迴歸分析筆記 虛擬變數 Dummy Variable

虛擬變數在迴歸分析裡算是個蠻重要的概念
但是光看它名字其實不太知道這是要幹嘛用的
所以就從為什麼要有這東西開始講吧!
(Dummy: 假的、啞的)

話說這東西其實如果常寫程式的話應該會很習慣
不過跟虛擬碼Pseudo Code是無關的兩回事就是了

 

一樣舉拉麵為例子......
如果說我們想要知道一間拉麵店的當天營業額
想說用一個方程式來預測
包括湯的鹹度(鈉含量)、麵的軟硬度(蛋白質含量)、當天氣溫等等
(當然是假想的~煮麵當然不只有這些啦!!)
比方說設計出一個像這樣的方程式來估算當天營業額
(數字我亂打的──27000就是常數項,後面的2000、4000那些則是係數)

當天營業額 = 27000 + 2000 x 湯鹹度 + 4000 x 麵硬度 - 300 x 當天氣溫

像這樣就是一個線性迴歸方程式
來幫助我們預測營業額的數目
而湯鹹度、麵硬度、氣溫這些是採用連續的數值
比方鹹度硬度固定
氣溫每多一度
則營業額就會跌300塊錢的意思
畢竟熱的時候吃不太下

 

 

但是
如果想要用類別(不是連續)的變數來估測看看當天營業額呢?

比方說茂虎流麵店有賣豚骨拉麵、揚州炒麵、鍋燒烏龍麵三種麵
看看三種麵營業額的差異
(為方便起見假設這三種麵都賣一樣價錢好了)

一開始的想法大概就是把這三個分別用數字來代換
比方:豚=1、炒=2、鍋=3
那就把當天營業額的迴歸寫成這樣 (B1是係數)

營業額 = 常數 + B1 x 麵類

問題是店裡當日麵點
雖然用數字來代換
可是他的1、2、3並沒有分高低
而是單純的類別而已
這樣就沒有辦法像前面那種連續變數的解釋(若...增加多少,則營業額增加多少)
那這樣那個係數B1 也就不知道如何有意義的解釋他了!!
那要怎辦!!!???

 

所以這時我們就要把這個特價麵類的變數拆開
原本不是想成說「賣出哪一種麵」嗎?
那其實我們換個角度想
是不是就可以想成賣出的是:
豚骨拉麵?
揚州炒麵?
鍋燒烏龍?

然後這三個問題答案也就是「有賣出」跟「沒有賣出」這兩個差別
那就把「有賣出」當作1
「沒有賣出」當作0
就都用0跟1來代

那他們之間關係就像這樣:

  豚有賣出? 炒有賣出? 鍋有賣出?
1豚  1  0  0
2炒  0  1  0
3鍋  0  0  1

因為其中一個有賣(有→1)的話
其他兩個就一定沒賣(沒有→0)

所以剛開始會想說把方程式寫成這樣

營業額 = 常數 + B1 x 豚有沒有賣出 +  B2 x 炒有沒有賣出 + B3 x 鍋有沒有賣出

有或沒有就選1或0
如果0的話也就代表當天賣哪種麵跟他無關也就不會影響到營業額
只有有賣的那種當日麵點才有影響
而且他影響的金額就是他前面的係數!!
這樣很合理對不對?

但這樣是不對的!!
為什麼?

因為有沒有發現
其實在第三個

  豚有沒有賣 炒有沒有賣 鍋有沒有賣
1豚  1  0  0
2炒  0  1  0
3鍋  0  0  1

我們知道一天就賣一種麵而已
所以如果前面兩種有其中一種麵有賣
則第三種就一定沒賣
相對的如果前面兩個都0
那第三種麵就一定是當日麵點
總之知道前兩個的值就一定知道第三種麵是0還是1

也就是說第三個鍋燒麵那個變數
要說的事跟前面兩種麵說的一樣
我們就不需要再放那個第三個變數進去
不然方程式解不出來(就像只有三個式子卻要解四個未知數一樣)
(當然聰明的SPSS程式會自動幫忙避免掉這種問題)
(或者就不設常數項,當然解釋上而言就與有設常數項不太相同,可想想差異在哪)

改一下

  D1:豚有沒有賣出 D2:炒有沒有賣出
1豚  1  0
2炒  0  1
3鍋  0  0

我們只需要這樣就足矣
兩個變數
分別命名叫做「D1(豚有沒有賣出)」、「D2(炒有沒有賣出)
如果當天是豚骨,就把D1代1、D2代0
如果當天是炒麵,就把D1代0、D2代1
如果當天是鍋燒,就把D1代0、D2也代0

這種變數的編碼
就是這篇的主角
Dummy Variable!!

 

所以方程式就長這樣啦:

當天營業額Y = 常數 + B1 x D1 +  B2 x D2

 

不過要怎麼算出係數B1 、B2跟常數項?
那我們就要先看一下實際的數字了
假設我們把這一季促銷的銷售總整理一下

  特賣日營業額平均
 32000
 29000
 30000

當然營業額的估測值要盡量接近實際的值
也就是那種麵特價日的營業額的平均

所以我們可以得到下列三條方程式:

豚:32000 = 常數 + B1 x 1 + B2 x 0
炒:29000 = 常數 + B1 x 0 + B2 x 1
鍋:30000 = 常數 + B1 x 0 + B2 x 0

 

所以可以解出:

常數 = 30000
B1=2000
B2=-1000

 

所以整個迴歸方程式就是:

營業額 = 30000 + 2000 x D1 - 1000 x D2

解釋上就是說
豚骨拉麵當天營業額比鍋燒多2000元
炒麵營業額比鍋燒少了1000元

※這邊有個重要意義,就是鍋燒是被當作「參考值」

 

這樣解釋應該是對吧......?
另外我沒有貶低炒麵的意思~我也很愛吃炒麵!!
以後有機會再分享炒麵的食譜

 

 

 

 .

 .

 .

 .

 .

 .

 . 

 .

 .

創作者介紹
創作者 belleaya (愛) 的頭像
belleaya (愛)

B E L L E A Y A 雜七雜八創作小窩

belleaya (愛) 發表在 痞客邦 留言(22) 人氣()