曇月靈
匯東華
統計方法實務

設置虛擬變數的 SPSS 實作與常見錯誤:從建立虛擬變數到解讀係數,Step by Step

匯東華統計顧問 · 陳秀敏 博士 · 2026/9/4

第 4 期 匯東華電子報 第 4 期|2026.09.04 看本期網頁版 →

一頁先懂|核心判斷

科別、血型、職業這類類別變數,資料檔裡代碼為數值型態,如 1、2、3、4。這些數字是代號,而非數量。若直接放入線性迴歸,模型通常會視為連續變數處理,提供你一個沒有意義的係數,而軟體不會提醒你有問題。

正確做法是將類別變數設置成虛擬變數(Dummy variable,也叫啞變數):變數個數為變數組別數(k)-1。例如,服務單位變數下有四組別,則設置三個虛擬變數放入模型,沒設置的組別即為參考組,其餘每一組之虛擬變數所得係數都在回答「目前組別比參考組之依變數平均值高 / 低多少」。

以本例之服務單位(1 = 內科、2 = 外科、3 = 急診、 4 = 加護病房)變數而言,三件在分析時最容易做錯、而且做錯時軟體都不會報錯的事:

  1. SPSS 的”建立虛擬變數”功能會產生四個變數欄位,不是三欄。但放到模型時,只能放三欄,哪一欄不放入模型,要依據你自己所指定的參考組別決定。
  2. 同一個變數所拆出的欄位要同進同出,不能因為其中一欄不顯著就拿掉;方法要選「輸入」。
  3. 若將四欄變數全放,SPSS 會依據內部容忍值判斷,主動刪除一變數。程式會照常給你一張漂亮的報表,零錯誤、零警告。而它刪掉哪一欄變數,你無法預測,也無法指定。

01|1、2、3、4 是代號,不是數量

本文用一份模擬的護理人員工作負荷資料,200 位,欄位有服務單位、性別、年資、疲勞量表總分。服務單位存成 1 到 4 四個代號:

SPSS 變數檢視畫面,第 2 列為變數 Unit(標籤「服務單位」),畫面上開著值標籤對話框,列出 1 內科病房、2 外科病房、3 急診、4 加護病房四組對應。

圖1、SPSS 變數檢視畫面。第 2 列是變數 Unit,標籤「服務單位」,值欄顯示 {1, 內科病房...}。畫面上開著「值標籤」對話框,列出四組對應:1 內科病房、2 外科病房、3 急診、4 加護病房。「1 內科病房」是本案例中所指定之參考組別。
(點擊圖片可開啟原圖放大檢視)

需要注意的有下列兩點:

第一,值標籤存在檔案裡,是唯一可信來源。 哪個代號對到哪一科,不要憑記憶,每次分析前打開變數檢視看一眼,確定所設定之參考組別與具有那些組。

第二,此四個數字之間並非等距,而是代號。 加護病房賦值為 4、內科是 1,但加護病房程度並非內科的四倍,兩者也不差三個單位。

直接把服務單位當成連續變數放進迴歸,模型會給你一個係數,意思是「代號每增加 1,疲勞分數變動多少」。在實務上,無法變成有意義的詮釋。你會拿到數字、p 值、信賴區間,全部齊全,但全部無法正確地解讀。

順帶一提,本案例之性別編碼成 0 = 男、1 = 女,已經是虛擬變數的格式,不需要再轉換。

以下為使用SPSS Windows 29版實作將類別變數轉為虛擬變數正確放入線性迴歸模型中。

說明:Logistic regression與Cox PH regression model於SPSS中內置種類(G)選項,可指定類別變數及參考組,直接將其轉為虛擬變數進行分析。

02|SPSS實作 幫你建的是四欄,不是三欄

從「轉換」下拉選單找「建立虛擬變數」:

SPSS 主視窗的「轉換」下拉選單展開,選單項目中可見「建立虛擬變數」。

圖2、SPSS 主視窗的「轉換」下拉選單展開,選單中有「建立虛擬變數」一項。
(點擊圖片可開啟原圖放大檢視)

左側變數清單有 ID、Sex、Tenure、Fatigue;右上「建立下列項目的虛擬變數」欄位裡是 Unit,紅字標註「1. 將 Unit 選入」。中段「主要效應虛擬變數」已勾選「建立主要效應虛擬項」,根名稱欄位填入 Unit_,紅字標註「2. 根名稱用 Unit_」。下方紅字標註「3. 點視窗最下方確認」:

SPSS「建立虛擬變數」對話框,左側變數清單有 ID、Sex、Tenure、Fatigue,右上欄位已選入 Unit,並勾選「建立主要效應虛擬項」,根名稱填 Unit_。

圖3、SPSS「建立虛擬變數」對話框。
(點擊圖片可開啟原圖放大檢視)

執行完回到資料檢視,這裡是重點。原本的 ID、Unit、Sex、Tenure、Fatigue 五欄之後,新增了 Unit__1、Unit__2、Unit__3、Unit__4 四欄,欄位值為 .00 或 1.00,如圖4紅框圈選處:

SPSS 資料檢視畫面,原本的 ID、Unit、Sex、Tenure、Fatigue 五欄之後,紅框圈出新增的 Unit__1、Unit__2、Unit__3、Unit__4 四欄,欄位值為 .00 或 1.00。

圖4、SPSS 資料檢視畫面
(點擊圖片可開啟原圖放大檢視)

四個服務單位,SPSS 建出四欄,不是三欄。 每一欄的意思是「是不是這一科」,例如Unit__3 這一欄,表示單位為急診之個案是 1,其餘是 0。

四欄裡任何一欄都能從另外三欄推出來:不是內科、不是外科、不是急診,那就一定是加護。若四欄同時放進模型,其中一欄變成多餘的,模型在數學上無解。

因此,四類拆四欄,但只放三欄。留在外面的那一欄,就是研究者所指定之參考組。

03|參考組是自選的,選了就決定了每一欄在回答什麼

點選分析下拉式選單的迴歸,選擇線性打開主設定視窗。應變數是 Fatigue,自變數清單依序為 Unit__2、Unit__3、Unit__4、Tenure、Sex。參考組 Unit__1 (內科)不用置入。Sex 原本編號為 0、1,已是虛擬變數格式,無需再做轉換。」:

SPSS 線性迴歸主對話框,應變數為 Fatigue,自變數清單依序為 Unit__2、Unit__3、Unit__4、Tenure、Sex,參考組 Unit__1 未置入。

圖5、SPSS 線性迴歸主對話框
(點擊圖片可開啟原圖放大檢視)

內科沒有自己的係數,因為它是參考基礎,其餘三組都是拿來跟它比的。

參考組由研究者自定,不是軟體決定。選內科當參照,報表回答「其他三科比內科的平均疲勞高 / 低多少」;若改選加護病房為參考組,就變成「其他三科比加護病房平均疲勞高 / 低多少」。

換參考組不會讓模型變好。 R²、F 值、每個人的預測值都完全一樣,所以參考組要照研究問題指定,而不是換到某一組達到顯著為止。

另外,參考組的人數不能太少。所有比較都拿其他組跟它比,它的人數少,其他單位所得信賴區間都會跟著變寬。選擇一個樣本數夠、臨床上也可解釋的組別,通常使用最常見的那一組為參考組。

04|方法要選「輸入」,不要選逐步

「方法」欄預設是「輸入」(Enter),保持該設定:

SPSS 線性迴歸主對話框下半部,「方法」欄顯示預設值「輸入」(Enter)。

圖6、SPSS 線性迴歸主對話框下半部
(點擊圖片可開啟原圖放大檢視)

同一個類別變數拆出來的幾欄,必須同進同出。 若直接採用逐步法會依 p 值一欄一欄挑選,其中一欄不顯著就會被從模型中踢掉,導致破壞虛擬變數結構。

一旦被踢掉一欄,剩下的係數就不再是「這一單位比內科高多少」,而是「比內科加上被踢掉那一科的混合體高多少」。報表照樣算出,但每一行的解釋均會改變,需要特別注意。

點選主對話框右上角的「統計量」按鈕展開視窗。迴歸係數區勾選「估計值」與「信賴區間」,層次 95;右欄已勾選「模型配適度」與「共線性診斷」,如圖7所示:

SPSS 線性迴歸的「統計量」子對話框,迴歸係數區已勾選估計值與信賴區間(層次 95),右欄已勾選模型配適度與共線性診斷。

圖7、SPSS 線性迴歸的「統計量」子對話框
(點擊圖片可開啟原圖放大檢視)

05|結果怎麼讀:外科那一行不顯著,但它必須留在模型中

SPSS輸出中的模型摘要表:R 為 .427,R² = .182 調整後 R² = .161。表下註記列出預測變數為常數、Sex 性別、Unit__2 外科病房、Tenure 年資、Unit__4 加護病房、Unit__3 急診。

SPSS 模型摘要表,R 為 .427、R 平方 .182、調整後 R 平方 .161,表下註記列出五個預測變數。

圖8、SPSS 模型摘要表
(點擊圖片可開啟原圖放大檢視)

從圖9變異數分析表可知模型之F = 8.633,顯著性小於 .001。

SPSS 變異數分析表,模型 F = 8.633,顯著性小於 .001。

圖9、SPSS 變異數分析表
(點擊圖片可開啟原圖放大檢視)

模型來看對疲勞分數具備統計學上之解釋力,五個自變數合起來解釋了疲勞分數約 18% 的變異。

迴歸係數表顯示於圖10a及10b。圖10a是SPSS 係數表左半部。包含未標準化係數 B、標準誤、標準化係數 Beta、t 值與顯著性。常數 49.303、標準誤 2.138、t 值 23.056、顯著性小於 .001;Unit__2 外科病房 1.671、標準誤 1.823、t 值 .916、顯著性 .361;Unit__3 急診 8.917、標準誤 1.924、t 值 4.634、顯著性小於 .001;Unit__4 加護病房 8.635、標準誤 1.998、t 值 4.322、顯著性小於 .001;Tenure 年資 −.443、標準誤 .149、t 值 −2.969、顯著性 .003;Sex 性別 −.027、標準誤 1.868、t 值 −.015、顯著性 .988。

SPSS 係數表左半部,含未標準化係數 B、標準誤、標準化係數 Beta、t 值與顯著性;常數 49.303、外科 1.671、急診 8.917、加護病房 8.635、年資 −.443、性別 −.027。

圖10a、SPSS 係數表左半部
(點擊圖片可開啟原圖放大檢視)

圖10b為SPSS 係數表右半部。包含 95% 信賴區間與共線性統計量。常數 45.086 至 53.521;Unit__2 外科病房 −1.925 至 5.266,容忍值 .717、VIF 1.394;Unit__3 急診 5.121 至 12.712,容忍值 .736、VIF 1.359;Unit__4 加護病房 4.694 至 12.575,容忍值 .744、VIF 1.344;Tenure 年資 −.737 至 −.149,VIF 1.010;Sex 性別 −3.711 至 3.656,VIF 1.011。

SPSS 係數表右半部,含 95% 信賴區間與共線性統計量;各虛擬變數容忍值約 .72 至 .74,VIF 介於 1.010 至 1.394。

整理成下表:

B標準誤t顯著性95% 信賴區間VIF
(常數)49.3032.13823.056<.00145.086, 53.521
外科 vs 內科1.6711.823.916.361−1.925, 5.2661.394
急診 vs 內科8.9171.9244.634<.0015.121, 12.7121.359
加護病房 vs 內科8.6351.9984.322<.0014.694, 12.5751.344
年資(每年)−.443.149−2.969.003−.737, −.1491.010
性別(女 vs 男)−.0271.868−.015.988−3.711, 3.6561.011

(表格較寬,手機可左右滑動檢視)

常數 49.303:為個案特徵是內科、年資 0 年、男性之預測疲勞分數。

急診比內科高 8.917 分(95%信賴區間 = 5.121 到 12.712),加護病房比內科高 8.635 分(95%信賴區間 = 4.694 到 12.575)。兩者均不包括 0,表示在控制性別與年資後,急診與加護病房之平均疲勞得分均較內科病房高,且達到統計學意義。

年資每多一年,疲勞分數低 0.443 分。 此係數成立之前提為年資與疲勞呈線性關係。

而外科比內科高 1.671 分,但 p = .361,信賴區間 −1.925 到 5.266 跨過 0。 這一行不顯著。那要不要將外科變數從模型中拿掉?

不要。 因為拿掉後,剩下兩組虛擬變數就無法正確解讀。Unit__2 一旦移出模型,外科的人不會從資料裡消失,他們會被預設為參考組,就會跟內科混在一起。「急診比內科高 8.917 分」會變成「急診比”內科加外科的混合體”高多少」,但分析報表不會告訴你這件事。

此為要求虛擬變數「同進同出」的實際意義:同一個類別變數拆出來的幾欄為一個整體,一起進、一起出,不因為個別 p 值而拆散。

而 p = .361 的解讀為:在這 200 人裡,控制模型中其他變數後,外科與內科有統計差異之證據不夠充分,不等於兩者在母群體中疲勞分數會相同。

06|錯誤放法:四欄全部放到模型中

四欄全放會怎樣?我們實際再跑一次。SPSS正常分析與輸出。輸出結果沒有紅字,沒有錯誤訊息,沒有任何警告。 報表照常產生,需要的判讀表格一張不缺。不過,這是錯誤的作法。

最明顯之線索是多出來的「Excluded Variables(排除的變數)」表。表中只有一列:Unit__1 Unit=內科病房。Beta In、t、顯著性、偏相關四欄都是空的(顯示為小點),容忍值 .000,VIF 欄顯示小點,最小容忍值 .000。表下註記說明應變數為 Fatigue 疲勞量表總分,以及模型中的預測變數清單。

SPSS「Excluded Variables(排除的變數)」表,表中僅一列 Unit__1(Unit=內科病房),Beta In、t、顯著性、偏相關四欄皆為空點,容忍值 .000。

圖11、SPSS「Excluded Variables(排除的變數)」表
(點擊圖片可開啟原圖放大檢視)

SPSS 主動把 Unit__1 從模型中踢掉。 表上數值 .000 為容忍值(Tolerance),意思是「這一欄能被其他欄完全推算出來,沒有帶進新資訊」,換句話說,是冗餘變數。

然後使用剩下的三欄照常跑完,共線性診斷也照常跑出,如圖12SPSS 共線性診斷表所示。六個維度。特徵值由 3.383 遞減至 .072,條件指數由 1.000 遞增至 6.856。變異數比例欄位涵蓋常數、Unit__2 外科病房、Unit__3 急診、Unit__4 加護病房、Sex 性別、Tenure 年資。最後一列(條件指數 6.856)的常數欄為 .96,Sex 性別欄為 .62。

SPSS 共線性診斷表,六個維度,特徵值由 3.383 遞減至 .072,條件指數由 1.000 遞增至 6.856。

圖12、SPSS 共線性診斷表
(點擊圖片可開啟原圖放大檢視)

跟正確做法的分析結果相同。這一次SPSS碰巧剔對了,所以結果剛好是對的。而在此種錯誤放置下,由於模型會主動篩選剔除變數,若研究者沒注意它做過這件事,可能會造成結果錯誤解讀。另外,我們也試過了解它的剔除原則,使用換變數的排列順序、換命名、甚至把類別的代碼重新編過,它剔掉的都是同一組。但換成另一份模擬資料重跑,它剔掉的就是另一組。

結論顯而易見:當置入同變數所衍生之全部虛擬變數時,無法預測它會移除哪一個,也無法指定要它留下哪一個,不是研究者所能掌握的。所以,正確置入虛擬變數才能得到預定變數之係數,且才能正確解讀結果。

結語|報表不會告訴你的那幾件事

從頭到尾講的是同一件事:虛擬變數做錯的時候,軟體不會停下來,也不會報錯。 代號直接進模型,會給你係數;四欄全放,它自己刪掉一欄再把報表跑完;用逐步法拆散同一組虛擬變數,報表照樣印得漂漂亮亮。沒有一種情況會出現紅字。

在執行線性迴歸分析前,先確定類別變數是否已正確轉為虛擬變數,步驟如下:

  • 分析前打開變數檢視,確認代號對到哪一類
  • 建立後數欄數,四類建四欄,只放三欄 (k-1)。每欄變數賦值僅為0、1
  • 跑之前方法選「輸入」,不選逐步
  • 跑完後數係數表有幾行,四類就該有三行
  • 讀的時候參考組是誰,每一行都在跟誰比

最後回到外科那一行。p = .361,不顯著,但它必須留在模型裡。這一行的存在理由,跟它顯不顯著沒有關係。 模型的結構由研究問題決定,不由個別 p 值決定。

顯著與否,跟重不重要,本來就是兩個問題。外科這一行不顯著卻不能拿掉;反過來,一個顯著到 p < .001 的結果,也可能小到臨床上沒人在意。

進一步可研討的主題為統計顯著與臨床重要性。這兩件事被混為一談的頻率,遠比想像中高。

我們把該主題做成一場直播課:

Live26-09|p < 0.05 就有效?統計與臨床意義的距離

9 月 11 日(五)夜間直播

NT$ 2,500(匯東華正式會員 2,125)

已結束

其他課程請見官網。

關於本文的示範資料

資料來源:本文使用的是模擬資料,不是真實病人資料。 200 筆,欄位為服務單位、性別、年資、疲勞量表總分,目的是讓每個操作步驟都能重跑、每個數字都能對照。

文中所有報表數字,均為此份資料在 SPSS 29 實際跑出的輸出,逐項回原始輸出核對過。第 06 節「它會剔掉哪一欄」的說法,另以數份同結構的模擬資料實測。

AI 使用聲明

本文由匯東華統計顧問有限公司 陳秀敏 博士撰稿,Claude Opus 5 協助資料模擬、分析執行與版面排版,最終內容已由作者審閱定稿。文中所有數據均為示範資料在 SPSS 實際跑出的輸出,並經逐項回原始輸出核對。日期:2026 年 9 月 4 日。

同期其他單元

聯絡我們

 統計分析

服務價目表 (未含5%營業稅)
透過嚴謹的數據整理,提供有價值的資訊,形塑知識,提高決策品質。包括信達雅三執行原則。

 信:確保資料品質可信賴
 達:確保統計方法適切性
 雅:確保圖文表格正規化
協助代執行統計分析與進一步加值服務。

在匯東華與夥伴的專業背景知識配合下,能有效地處理面對的問題。
統計分析成果

 數據串接與清洗

數據是礦藏,數據清洗是挖出鑽石的第一步,尤其是巨量知識。數據清洗或串接執行過程需要細心與專注,且有可能會消耗許多時間和精力,就由我們來替各位處理掉這個大麻煩。

全民健保研究資料庫、國外大型資料庫資料非常齊全,種類多,需要串接與清洗,進行正規化後才能更進一步進行資料探勘與統計分析。




Fig1.同一個Project資料散落在不同tables,無法使用




Fig2.整併與清理為可分析的table




Fig.3整理和分析後形成有意義的知識


概念與流程示意圖

 計畫撰寫與統計諮詢





為了讓匯東華的顧客與學員有更好的合作和消費體驗,故匯東華特別依據營業項目開發周邊產品,提供使用、購買。目前已有針對公共衛生師的題庫以及模擬試題,未來將針對醫學研究領域發展產品。

私訊我們 💬
曇月靈客服吉祥物頭部特寫(臉、眼睛與頭頂角/月相環),點擊可用 Messenger 聯絡匯東華統計顧問