目錄

資料集探索與分析 #2

多變量分析 final project 。

封面圖片為 ChatGPT 生成的資料集探索與分析的圖片,提示詞為 “A digital illustration in a 16:9 aspect ratio, showing a young male data analyst working in a modern high-tech office, analyzing a large dataset on a widescreen monitor. The screen displays various data visualizations: bar charts, scatter plots, histograms, and data tables. The interface is sleek and futuristic, with turquoise and blue tones, glowing UI elements, and a clear emphasis on Dataset Exploration and Analysis” 。

前言

本次使用的資料集取自 kaggle 上由 Adil Shamim 所提供的數學學生成績資料集。此資料集源自 UCI 機器學習庫,最初由 P. Cortez 和 A. Silva 在題為「使用資料探勘預測中學學生成績」的研究中提出。此資料集是葡萄牙波爾圖舉行的第五屆 FUBUTEC 2008 會議上提出的研究的一部分。此資料集的 G1, G2, G3, absences 是直接來自學校提供之資料,其他變數則是透過問卷調查蒐集。

本文將以 Python 作為資料分析的程式語言,且目標為找出會影響學期成績的變數 G3

資料集

變數說明

此資料集共有 399 筆資料, 33 個變數。變數說明如下:

變數說明資料類型範圍
school學生學校二元型GP - Gabriel Pereira
MS - Mousinho da Silveira
sex學生的性別二元型F - 女性
M - 男性
age學生年齡數值型15 到 22
address學生家庭住址類型二元型U - 城市
R - 鄉村
famsize家庭規模二元型LE3 - 小於等於 3
GT3 - 大於 3
Pstatus父母的同居狀態二元型T - 同居
A - 分開
Medu母親教育程度數值型0 - 無
1 - 4 年級
2 - 5 至 9 年級
3 - 中學教育
4 - 高等教育
Fedu父親教育程度數值型0 - 無
1 - 4 年級
2 - 5 至 9 年級
3 - 中學教育
4 - 高等教育
Mjob母親的工作名目型teacher - 教師
health - 醫療相關
services - 公務員
at_home - 在家工作
other - 其他
Fjob父親的工作名目型teacher - 教師
health - 醫療相關
services - 公務員
at_home - 在家工作
other - 其他
reason選擇學校的原因名目型home - 離家近
reputation - 學校聲望
course - 課程偏好
other - 其他
guardian監護人名目型mother - 母親
father - 父親
other - 其他
traveltime通勤時間數值型1 - < 15 分鐘
2 - 15 到 30 分鐘
3 - 30 分鐘到 1 小時
4 - > 1 小時
studytime每週學習時間數值型1 - < 2 小時
2 - 2 到 5 小時
3 - 5 到 10 小時
4 - > 10 小時
failures課程失敗次數數值型0 到 3;4 表示超過 3 次
schoolsup額外教育支持二元型yes
no
famsup家庭教育支持二元型yes
no
paid額外付費課程二元型yes
no
activities課外活動二元型yes
no
nursery是否上過幼兒園二元型yes
no
higher是否想上大學二元型yes
no
internet家中是否有網路二元型yes
no
romantic是否有戀愛關係二元型yes
no
famrel家庭關係品質數值型1(非常差)到 5(非常好)
freetime放學後空閒時間數值型1(非常少)到 5(非常多)
goout與朋友外出頻率數值型1(非常少)到 5(非常多)
Dalc平日酒精消費量數值型1(非常少)到 5(非常多)
Walc週末酒精消費量數值型1(非常少)到 5(非常多)
health健康狀況數值型1(非常差)到 5(非常好)
absences缺席次數數值型0 到 93
G1第一階段成績數值型0 到 20
G2第二階段成績數值型0 到 20
G3最終成績數值型0 到 20

資料集

以下使用 Python 作為資料分析的程式語言,資料集原始內容如下:

indexschoolsexageaddressfamsizePstatusMeduFeduMjobFjobfamrelfreetimegooutDalcWalchealthabsencesG1G2G3
0GPF18UGT3A44at_hometeacher4341136566
1GPF17UGT3T11at_homeother5331134556
2GPF15ULE3T11at_homeother432233107810
3GPF15UGT3T42healthservices3221152151415
4GPF16UGT3T33otherother432125461010
......
394MSM19ULE3T11otherat_home3233355899
395MSM18UGT3T44teacherservices5321240877
396MSM17UGT3T44teacherservices5321240877
397MSM19UGT3T44teacherother5321240877
398MSM18UGT3T44teacherat_home5321240877

原資料長條圖

接下來,為了能更好的處理資料,這裡先繪製各變數長條圖,讓我們能從圖中獲取各變數的一些基本資訊。

由圖中,我們可以發現:

  1. 年齡的人數有些許不同,以 15 至 18 歲居多。若以臺灣的標準來看,這份資料應以高中生居多。
  2. 年齡存在 20、21、22 等年紀,推測有可能是留級生或有特殊因素的學生。
  3. 學生最少的每周學習時間約落於 2 小時左右。
  4. 學生放學後的空閒時間第一階段成績第二階段成績最終成績呈現類似常態分布。
  5. 缺席次數平日酒精消費量週末酒精消費量呈現右偏態。
  6. 家庭關係品質當前健康狀況呈現左偏態。
  7. 父母工作以其他公務員居多。
  8. 男女比例差不多。
gallery_made_with_nanogallery2-histogram399

資料清理

為了順利分析這筆資料,我們首先將類別型資料分類,指定為因子(factor)或獨熱編碼(one-hot encoding),同時將變數分組與指定要預測的變數 G3

組別變數
supportschoolsup, famsup, paid
familyaddress, famsize, Pstatus, guardian, traveltime, famrel
parentsMedu, Fedu, Mjob, Fjob
performancefailures, studytime, absences
alcoholDalc, Walc, health
after_classactivities, freetime, goout
school_choicereason, nursery, higher
scoreG1, G2, G3
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
## factor
factors = {
    'schoolsup': ['no', 'yes'],
    'famsup': ['no', 'yes'],
    'paid': ['no', 'yes'],
    'activities': ['no', 'yes'],
    'nursery': ['no', 'yes'],
    'higher': ['no', 'yes'],
    'internet': ['no', 'yes'],
    'romantic': ['no', 'yes']
}

## one-hot encoding
one_hot_encoding = {
    'school': ['GP', 'MS'],
    'sex': ['F', 'M'],
    'address': ['U', 'R'],
    'famsize': ['GT3', 'LE3'],
    'Pstatus': ['T', 'A'],
    'Mjob': ['other', 'at_home', 'health', 'services', 'teacher'],
    'Fjob': ['other', 'at_home', 'health', 'services', 'teacher'],
    'reason': ['other', 'home', 'course', 'reputation'],
    'guardian': ['other', 'mother', 'father']
}

接下來,為了方便資料處理,這裡將要轉換為因子的類別型變數依照弱至強的方式進行排列,要使用獨熱編碼的變數因無強弱之分,則盡量將各變數內的順序調整至一致,方便後面畫圖檢查。

在先前的長條圖中,我們發現 MS 這間學校的資料量過少,在進行資料分析時可能會因某校資料量較大而造成分析結果偏向某校,造成偏誤。因此,此處移除資料量較少的 MS 學校,並僅分析 GP 學校。

同時, G1G2G3 皆是對學生學期成績評估的總結性評量(summative assessment),這些考試結果都用於評估學生在各階段中的學習成果,此後將繪製三者間的相關係數圖,證明三者存在強烈的相關性。為了分析並找出會影響學生學期成績的變數,此處將原始資料變數另存,並移除 G1G2 ,將 G3 作為需要進行預測的目標。

資料清理後長條圖

以下是經過資料清理後的長條圖,在將 MS 學校的資料移除後,剩下的資料雖大致相同,但也能看出與原資料集的差異。而部分資料由於已從類別型變數被轉換成數值型,因此皆呈現數值。

而以下長條圖也能完整地顯示出 GP 學校的資訊。

gallery_made_with_nanogallery2-histogram349

相關係數矩陣與散佈圖

我們可以藉由找出相關係數矩陣,判斷變數兩兩間的關係。或是更進階的,繪製相關係數矩陣圖。在下圖中,顏色越紅代表越接近高度正相關;反之,顏色越藍代表越接近高度負相關。

在下圖中,我們可以很明確地看到 G1G2G3 之間有很強烈的相關性。這也是我們為什麼要將 G1G2 從資料集中移除,因為這會使資料分析時的結果總是偏向 G1G2 ,而看不出其他變數與 G3 的關係。

https://raw.githubusercontent.com/Josh-test-lab/website-assets-repository/main/posts/Dataset%20Exploration%20and%20Analysis%20EP.2/correlation%20matrix/score.png
G1 、 G2 與 G3 相關係數圖。

以下也呈現 G1G2G3 的三維散佈圖,我們可以從中發現 G1G2G3 之間有很強烈的線性關係。

若無法查看互動式三維散佈圖,或是需要全螢幕檢視,請點此處前往。

接下來呈現的是其他各組組內的相關係數圖。從以下的圖中,我們可以觀察到:

  • parents 組內,父母間的教育程度工作皆呈現高度正相關,這可以將 parents 組用於分析學生學習成績與其父母親是否有影響。
  • alcohol 組內,我們發現平日飲酒周末飲酒呈現高度的正相關,但與學生自己評估的健康狀態呈現幾乎無相關。
  • support 組內,可以發現家庭給予學生的學業支持額外的付費課程有正相關,這可能代表家庭會影響課外課程。
  • after_class 組內,可以發現放學後的空閒時間與朋友外出頻率有正相關,這可能代表學生放學後大多都會與朋友一起外出。

https://raw.githubusercontent.com/Josh-test-lab/website-assets-repository/main/posts/Dataset%20Exploration%20and%20Analysis%20EP.2/correlation%20matrix/class/correlation%20matrix%20all%20groups.png
其他各組的相關係數圖。

變數交互長條圖

以下挑選並繪製一些變數交互情形的長條圖,並觀察其資料呈現。

首先,繪製各年紀與其平均每週最少學習時間(studytime),因為已知

  • 1 表示每週少於 2 小時
  • 2 表示每週 2 到 5 小時
  • 3 表示每週 5 到 10 小時
  • 4 表示每週至少 10 小時

因此,我們可以得知

  • 1 每週至少學習 0 小時
  • 2 每週至少學習 2 小時
  • 3 每週至少學習 5 小時
  • 4 每週至少學習 10 小時

所以我們可以畫出以下各年紀與其平均每週最少學習時間長條圖。從圖中,我們可以發現 15 歲至 19 歲的學生每週平均至少會學習 2 至 3 小時,而 18 歲甚至每週至少學習 3 小時。我們推測 18 至 19 歲的學生可能因為有升學壓力,故每周學習時間較其他年齡段多;而 20 歲以上可能多為不喜歡學習或已有其他生涯打算的學生。

https://raw.githubusercontent.com/Josh-test-lab/website-assets-repository/main/posts/Dataset%20Exploration%20and%20Analysis%20EP.2/bar%20plot/Average%20Study%20Time%20by%20Age.png
各年紀與其平均每週最少學習時間長條圖。

以下繪製放學後空閒時間(freetime)和與朋友外出頻率(goout)的長條圖,我們可以發現 15 歲至 19 歲的學生的放學後空閒時間和與朋友外出頻率平均皆為 3 點左右,而 20 歲以上的學生則較 15 歲至 19 歲的學生還高。與前一張圖進行比較,我們可以發現兩張圖的 20 歲以上的學生都與 15 歲至 19 歲的學生有許多不同之處,往後的分析可以多注意 age 這個變數產生的影響。

https://raw.githubusercontent.com/Josh-test-lab/website-assets-repository/main/posts/Dataset%20Exploration%20and%20Analysis%20EP.2/bar%20plot/Average%20Go%20Out%20and%20Freetime%20by%20Age.png
各年紀的放學後空閒時間和與朋友外出頻率長條圖。

接下來繪製的是學生的升學意願(higher)與其平均 G3 成績長條圖。從此圖中,我們可以觀察到想進行升學的學生平均的 G3 成績較不想進行升學的學生高,顯示升學意願是影響學生學習成績的因素之一。

https://raw.githubusercontent.com/Josh-test-lab/website-assets-repository/main/posts/Dataset%20Exploration%20and%20Analysis%20EP.2/bar%20plot/Average%20G3%20score%20by%20higher.png
升學意願與其平均 G3 成績長條圖。

下面的這張圖是比較有意思的圖。根據葡萄牙的法律,成年年齡為 18 歲,購買與飲酒的合法年齡也同樣是 18 歲。在原始資料集的問卷中,飲酒行為的評分最低為 1 分,代表極少飲酒。因此如果學生完全不喝酒,多數分數應該要會集中在 1 。

在下圖中的各年紀健康與平日、週末平均飲酒量長條圖中,我們繪製了學生自評的健康狀況與平日、週末平均飲酒量。其中,為了能直觀的以一週飲酒量與健康狀況進行比較,我們將平日、週末平均飲酒量疊在一起,且平日佔一週的 4 天,週末則佔了 3 天。這是因為學生大多在白天於學校學習,而飲酒的時間應該多在晚間,且許多人會把週五晚間視為週末,盡情玩樂放鬆。因此,此處將平日與週末各設為 4 天與 3 天。

我們同時可以看到部分 18 歲以下的學生平均飲酒量竟然會超過 1 點,這意味著這些學生中有一部分人實際上存在飲酒行為。

https://raw.githubusercontent.com/Josh-test-lab/website-assets-repository/main/posts/Dataset%20Exploration%20and%20Analysis%20EP.2/bar%20plot/Average%20alc%20and%20Health%20by%20Age.png
各年紀健康與平日、週末平均飲酒量長條圖。

我們希望找出出現頻率最高的前 10 組由 MeduFeduMjobFjob 組成的組合,並計算每個組合對應的平均 G3

在下方的兩張圖中,左側的藍色長條顯示每個組合出現的次數,右側的紅色長條則顯示該組合的平均 G3

https://raw.githubusercontent.com/Josh-test-lab/website-assets-repository/main/posts/Dataset%20Exploration%20and%20Analysis%20EP.2/bar%20plot/Occurrence%20and%20AvgG3%20combined.png
父母工作與教育程度組合前 10 對應學生成績長條圖。

在計算出前 10 個最常出現的組合的平均 G3 之後,我們接著想找出平均 G3 最高的前 10 組合。

https://raw.githubusercontent.com/Josh-test-lab/website-assets-repository/main/posts/Dataset%20Exploration%20and%20Analysis%20EP.2/bar%20plot/top10%20avgG3%20combination.png
父母工作與教育程度組合對應學生成績前 10 長條圖。

我們可以看到,當 MeduFedu 均為較高時,且 MjobFjob 都是老師(teachers),學生的平均 G3 為 13.00;當 Fjob 為其他(other)時,平均 G3 為 9.00;而當 Mjob 為服務業(services)時,平均 G3 為 15.20。

因此我們可以看出,在相同的教育程度下,不同的 MjobFjob 組合也會影響 G3

多維尺度分析

原始資料集中共有 33 個變數,且大多數變數之間的相關性相當低(接近於零),因此難以直接判斷哪些變數與 G3 成績相關。為了解決變數過多且解釋力分散的問題,我們首先依照先前對於變數的屬性與意義進行分組,再對每一組的變數套用多維尺度分析(MDS)以進行降維處理。

在 MDS 過程中,我們比較組內各筆學生資料的距離,將原本處於高維空間中的變數壓縮至二維,同時盡可能保留樣本間的相對關係,減少了變數數量,┼同時提升了各組對 G3 解釋能力。每組經過 MDS 降維後所產生的兩個新變數,會以該組名稱為前綴,並分別命名為 _dim1_dim2

以下同時繪製各組經 MDS 降維後的結果,並同時將不同學生樣本以對應的 G3 成績上色,以視覺化呈現不同維度與學業表現之間的潛在關係。

gallery_made_with_nanogallery2-mds

雖然我們不分析 G1G2G3 ,但我們仍繪製出該變數經 MDS 降維後的樣本圖,可以與上面一起做比較。

https://raw.githubusercontent.com/Josh-test-lab/website-assets-repository/main/posts/Dataset%20Exploration%20and%20Analysis%20EP.2/MDS/class/score.png
score 組經 MDS 降維後的樣本。

經過 MDS 後,我們再繪製相關係數圖,用於查看降維後各變數間的關係。

若無法查看互動式相關係數圖,或是需要全螢幕檢視,請點此處前往。

成對圖

以下繪製成對圖,讓我們看看經過 MDS 後的變數有無較高的關聯性。

https://raw.githubusercontent.com/Josh-test-lab/Josh-test-lab.github.io/main/posts/Dataset%20Exploration%20and%20Analysis%20EP.2/pairs%20plot/pairs%20plot.png
經 MDS 後的成對圖。

主成分分析

在進行主成分分析(PCA)前,我們先將變數進行標準化。將目標變數 G3 以外的變數進行標準化後會呈現如下形式:

indexagesupport_dim1support_dim2family_dim1family_dim2school_choice_dim1school_choice_dim2internetromanticsex_M
01.2170151.087782-2.045391-0.911204-0.5701280.238088-0.047286-2.38988-0.69196-0.952
10.393879-0.207043-0.8360190.0607691.5464350.8173250.6152020.41843-0.69196-0.952
2-1.25239-2.043003-0.6950220.5146050.288704-1.8138551.8422710.41843-0.69196-0.952
3-1.25239-0.6976401.0090370.877950-0.557109-0.8145910.8679460.418431.44516-0.952
4-0.42925-0.6976401.0090370.7000910.735734-0.8145910.867946-2.38988-0.69196-0.952
3441.217015-0.207043-0.8360190.0277450.2406710.238088-0.0472860.41843-0.69196-0.952
3451.2170151.386098-0.426182-0.6009780.964057-1.8033881.8536570.418431.44516-0.952
3461.2170151.386098-0.426182-1.1356620.9297720.238088-0.0472860.418431.445161.049
3471.217015-0.6976401.009037-0.6009780.9640570.238088-0.0472860.418431.445161.049
3480.393879-0.6976401.0090370.0277450.2406711.254272-1.0003970.418431.44516-0.952
提醒
此處的資料集是有經過 MDS 處理的。

以下顯示經過 PCA 處理後各主成分的權重(loadings),並且同時寫出每一個主成分的解釋變異量(Explained Variance)、重要變數(Most Important Feature)以及累積解釋變異量(Cumulative Explained Variance)。

其中,重要變數的選擇是每一個主成分中的 loadings 取絕對值後最大的一個變數。

agesupport_dim1support_dim2family_dim1family_dim2parents_dim1parents_dim2performance_dim1performance_dim2alcohol_dim1after_class_dim1after_class_dim2school_choice_dim1school_choice_dim2internetromanticsex_MExplained VarianceCumulative Explained VarianceMost Important Feature
PC1-0.31428-0.01492-0.091420.024710.070270.00225-0.014280.562910.56998-0.132610.126350.182850.12075-0.14428-0.12218-0.247750.058170.1237390.123739performance_dim2
PC20.05854-0.15301-0.05277-0.01508-0.081010.118340.12734-0.20177-0.15329-0.333080.27279-0.081470.55584-0.46000-0.060470.01056-0.359190.1045420.228281school_choice_dim1
PC3-0.25162-0.332880.124030.259120.04080-0.21617-0.19674-0.10099-0.08990-0.257780.422660.06376-0.243700.415330.163500.03533-0.273230.0890620.317343after_class_dim1
PC40.180890.23004-0.21277-0.12089-0.064240.551540.121920.086210.02896-0.156340.18814-0.14339-0.298920.29881-0.423650.07793-0.258120.0829540.400297parents_dim1
PC50.097280.23079-0.27532-0.350410.51664-0.11613-0.15667-0.16518-0.18069-0.060370.033370.389230.024740.002860.015170.102560.145210.0760420.476339family_dim2
PC60.16847-0.203770.52457-0.376020.416670.089910.338650.109070.18200-0.12810-0.16270-0.13117-0.066960.059620.241550.02600-0.208550.0666980.543037support_dim2
PC7-0.134030.165530.037400.34388-0.028060.257390.60921-0.03758-0.04892-0.081870.131690.40514-0.019080.003500.283330.253590.244620.0603660.603402parents_dim2
PC80.372150.325790.020330.262360.03516-0.07732-0.359510.232840.23434-0.24334-0.00137-0.071070.03513-0.097240.277420.51081-0.136650.0581270.661529romantic
PC9-0.04030-0.395340.04481-0.07430-0.225860.09811-0.060350.075400.071280.42277-0.202390.264010.05025-0.02830-0.174330.56876-0.174780.0540810.715610romantic
PC100.327270.172520.616290.01171-0.15288-0.13744-0.047510.01093-0.025390.120110.409030.115500.07008-0.01209-0.35258-0.049260.290730.0497240.765334support_dim2
PC110.22969-0.26312-0.00117-0.06563-0.09572-0.07595-0.05341-0.035540.03893-0.45823-0.199300.58174-0.099970.01158-0.27012-0.07807-0.030960.0462350.811570after_class_dim2
PC120.25752-0.177880.002750.607560.520360.23676-0.08113-0.069170.019760.27676-0.087600.071450.02855-0.07412-0.17312-0.23242-0.120770.0411500.852720family_dim1
PC130.184360.122620.09962-0.08477-0.350410.33747-0.243720.01910-0.053770.13521-0.072000.31544-0.03596-0.005680.48422-0.43045-0.226210.0352310.887951internet
PC14-0.23559-0.186530.09688-0.219860.195140.50116-0.39481-0.01050-0.015210.058640.363080.027470.04392-0.106030.106830.145870.266350.0344100.922361parents_dim1
PC150.51158-0.48800-0.35236-0.03468-0.11947-0.008020.113310.093240.08548-0.028160.20338-0.17840-0.11567-0.016380.21865-0.036660.412580.0329900.955352age
PC160.122070.07406-0.20073-0.166520.07581-0.292010.212680.084100.093510.426240.463950.18854-0.14068-0.131910.07381-0.02104-0.399300.0245050.979856after_class_dim1
PC170.11616-0.00761-0.09411-0.038050.02841-0.001190.038880.17998-0.035320.093700.022280.056600.677910.663630.04566-0.01960-0.001630.0138240.993680school_choice_dim1
PC180.008320.06218-0.03136-0.03381-0.064350.02330-0.01424-0.685190.701130.043660.029550.001290.082530.129810.02290-0.000600.028830.0063201.000000performance_dim2

繪製變異數圖可以協助我們更好地分析這一筆資料。其中黑線表示各成分的解釋變異量,藍線表示剩餘的解釋變異量,紅線則表示累積的解釋變異量。

https://raw.githubusercontent.com/Josh-test-lab/website-assets-repository/main/posts/Dataset%20Exploration%20and%20Analysis%20EP.2/PCA/PCA_variance_plot_fullsize.png
主成分分析的變異數圖。

當然,我們也可以將經過 PCA 轉換後的所有變數算出來,呈現如下。

IndexPC1PC2PC3PC4PC5PC6PC7PC15PC16PC17PC18
0-5.5108391.127293-4.1176573.1076692.8647561.596422-5.2517269.1380330.8072221.8551210.349057
1-3.4775491.540630-4.3393574.6399651.9259904.441370-1.3019919.3723590.9384312.6875170.665990
2-7.9962240.857119-2.2366784.2701451.4551932.076697-0.3576738.2809731.6820652.160862-3.14570
3-1.713179-0.138464-1.6455062.5853130.9840782.730721-2.5434668.9356482.0446991.4327262.032150
4-3.2505390.438469-3.4617794.1082251.2059124.030496-0.4749448.9564922.5569461.9102590.608520
344-4.2996001.316663-4.7637583.7391671.1776314.059481-1.51109910.0224042.2601722.2070691.525158
345-7.601288-0.275631-3.9542444.2201852.4969793.148704-2.2241658.2150321.7551022.1049870.928338
346-8.0955151.264441-3.1964501.1151714.8488701.962490-3.0987679.1389252.6979711.8100290.542200
347-1.969261-1.791564-6.2571890.9027140.9099355.697392-2.81285410.2342613.1803432.5344472.330287
348-1.0546890.131606-5.5224331.7435040.3745655.017756-1.2483759.3652343.5942212.5354742.333115

以下繪製 PC1 、 PC2 以及 PC3 累積變異量的每個變數的三維權重散佈圖。

若無法查看 PC1 vs. PC2 vs. PC3 權重散佈圖,或是需要全螢幕檢視,請點此處前往。

迴歸模型

Python 有許多模組都提供計算迴歸模型的工具,如 sklearnstatsmodels 等模組。其中

  • sklearn 偏向機器學習設計,強調預測與泛化能力,但許多統計指標都需要自行使用程式碼撰寫。

  • statsmodels 偏向統計建模與推論,更適合做學術或統計分析,並提供簡單的模型摘要(summary)。

以下使用 statsmodels 模組進行分析與繪圖。

原始資料集

這裡先對整理後的原始資料進行迴歸,我們可以發現:

  • 原始資料的 $R^2$ 為 0.269 ,這表示此迴歸模型的解釋力偏低。且 Adj. $R^2$ 更低,表示部分變數可能是冗餘的。
  • P-value = $1.80 \times 10^{-9}$,這表示有變數對 G3 有顯著影響。
    • failures 的 P-value 是 0.000,且其係數為,這表示 failuresG3顯著負面影響,失敗次數越多,成績越差。
    • goout 的 P-value 是 0.001,且其係數為,這表示外出頻率對 G3顯著負面影響
    • schoolsup 的 P-value 是 0.000,且其係數為,這表示接受學校額外支援者成績較差,可能因學習困難需要支援。
    • romantic 的 P-value 是 0.019,且其係數為,這表示戀愛經驗對 G3顯著負面影響
    • sex_M 的 P-value 是 0.015,且其係數為,這表示男性的成績顯著高於女性。
    • address_0 的 P-value 是 0.005,且其係數為,這表示住在都市區的學生成績較高。
    • famsize_1 的 P-value 是 0.004,且其係數為,這表示大家庭學生的成績顯著較好。
    • Pstatus_1 的 P-value 是 0.020,且其係數為,這表示父母分居的學生成績顯著較高。
    • Mjob_2(母親為醫療人員)的 P-value 是 0.047,且其係數為,這表示此職業對子女成績有正向影響。
    • Mjob_3(母親為公務員)的 P-value 是 0.012,且其係數為,這表示此職業對子女成績有顯著正面影響。
執行結果參考
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
                             OLS Regression Results                            
==============================================================================
Dep. Variable:                     G3   R-squared:                       0.269
Model:                            OLS   Adj. R-squared:                  0.195
Method:                 Least Squares   F-statistic:                     3.634
Date:                Fri, 13 Jun 2025   Prob (F-statistic):           1.80e-09
Time:                        17:00:54   Log-Likelihood:                -974.55
No. Observations:                 349   AIC:                             2015.
Df Residuals:                     316   BIC:                             2142.
Df Model:                          32                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
age           -0.2420      0.215     -1.123      0.262      -0.666       0.182
Medu           0.2619      0.353      0.742      0.459      -0.433       0.957
Fedu          -0.2358      0.300     -0.786      0.432      -0.826       0.355
traveltime    -0.3604      0.374     -0.964      0.336      -1.096       0.375
studytime      0.4272      0.305      1.403      0.162      -0.172       1.027
failures      -1.9093      0.345     -5.538      0.000      -2.588      -1.231
famrel         0.3023      0.272      1.110      0.268      -0.233       0.838
freetime       0.3111      0.255      1.219      0.224      -0.191       0.813
goout         -0.8290      0.241     -3.437      0.001      -1.303      -0.354
Dalc          -0.4425      0.368     -1.204      0.230      -1.166       0.281
Walc           0.4851      0.262      1.854      0.065      -0.030       1.000
health        -0.1634      0.175     -0.932      0.352      -0.508       0.182
absences       0.0537      0.030      1.791      0.074      -0.005       0.113
schoolsup     -1.7586      0.489     -3.598      0.000      -2.720      -0.797
famsup        -1.7586      0.489     -3.598      0.000      -2.720      -0.797
paid          -1.7586      0.489     -3.598      0.000      -2.720      -0.797
activities    -1.7586      0.489     -3.598      0.000      -2.720      -0.797
nursery       -1.7586      0.489     -3.598      0.000      -2.720      -0.797
higher        -1.7586      0.489     -3.598      0.000      -2.720      -0.797
internet       0.4218      0.694      0.608      0.544      -0.943       1.786
romantic      -1.1990      0.509     -2.354      0.019      -2.201      -0.197
sex_M          1.2575      0.514      2.445      0.015       0.246       2.269
address_0      1.0845      0.386      2.813      0.005       0.326       1.843
address_1      0.6741      0.427      1.579      0.115      -0.166       1.514
famsize_0      0.7028      0.358      1.965      0.050      -0.001       1.406
famsize_1      1.0557      0.359      2.937      0.004       0.348       1.763
Pstatus_0      0.6980      0.448      1.557      0.120      -0.184       1.580
Pstatus_1      1.0606      0.453      2.343      0.020       0.170       1.951
Mjob_0         0.0788      0.442      0.178      0.859      -0.791       0.948
Mjob_1        -0.4112      0.688     -0.598      0.550      -1.765       0.942
Mjob_2         1.4522      0.729      1.992      0.047       0.018       2.887
Mjob_3         1.1294      0.448      2.518      0.012       0.247       2.012
Mjob_4        -0.4907      0.654     -0.750      0.454      -1.778       0.796
Fjob_0        -0.3711      0.481     -0.772      0.441      -1.317       0.575
Fjob_1         0.1896      0.944      0.201      0.841      -1.667       2.046
Fjob_2         0.6282      0.896      0.701      0.484      -1.135       2.392
Fjob_3        -0.2106      0.513     -0.410      0.682      -1.220       0.799
Fjob_4         1.5225      0.789      1.929      0.055      -0.030       3.075
reason_0       1.0306      0.678      1.520      0.129      -0.303       2.364
reason_1       0.1274      0.432      0.295      0.768      -0.723       0.977
reason_2      -0.0459      0.434     -0.106      0.916      -0.899       0.807
reason_3       0.6465      0.446      1.450      0.148      -0.231       1.524
guardian_0     0.7979      0.724      1.103      0.271      -0.626       2.221
guardian_1     0.6490      0.383      1.695      0.091      -0.104       1.402
guardian_2     0.3117      0.466      0.668      0.505      -0.606       1.229
==============================================================================
Omnibus:                       20.903   Durbin-Watson:                   2.172
Prob(Omnibus):                  0.000   Jarque-Bera (JB):               23.006
Skew:                          -0.618   Prob(JB):                     1.01e-05
Kurtosis:                       3.234   Cond. No.                     1.22e+16
==============================================================================

Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
[2] The smallest eigenvalue is 9.56e-28. This might indicate that there are
strong multicollinearity problems or that the design matrix is singular.
MSE:
 62.58324935862237

經 MDS 轉換後的資料集

  • P-value = $4.23 \times 10^{-8}$,表示此模型整體對 G3 的預測是顯著的。
    • age 的 P-value 是 0.011,且係數為,表示年齡越大,成績可能愈差。
    • support_dim1 的 P-value 是 0.009,且係數為,表示支援相關特徵(如學校支援、家庭支援)第一維與 G3 有顯著正向關聯。
    • support_dim2 的 P-value 是 0.005,且係數為,表示支援第二維亦有顯著正向影響。
    • family_dim2 的 P-value 是 0.009,且係數為,表示家庭相關因素的第二維度與 G3 有顯著正向關聯。
    • parents_dim1 的 P-value 是 0.046,且係數為,表示某些父母背景因素可能對 G3 有顯著負面影響。
    • performance_dim1 的 P-value 是 0.030,且係數為,可能表示某些學業表現背景對 G3 有負面關聯。
    • after_class_dim1 的 P-value 是 0.014,且係數為,表示課後活動第一維度對 G3 有顯著正面影響。
    • after_class_dim2 的 P-value 是 0.034,且係數為,表示課後活動第二維度也有顯著正向影響。
    • romantic 的 P-value 是 0.008,且係數為,表示有戀愛關係對 G3 有顯著負面影響。
執行結果參考
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
                             OLS Regression Results                            
==============================================================================
Dep. Variable:                     G3   R-squared:                       0.188
Model:                            OLS   Adj. R-squared:                  0.143
Method:                 Least Squares   F-statistic:                     4.232
Date:                Fri, 13 Jun 2025   Prob (F-statistic):           4.23e-08
Time:                        17:00:54   Log-Likelihood:                -992.98
No. Observations:                 349   AIC:                             2024.
Df Residuals:                     330   BIC:                             2097.
Df Model:                          18                                         
Covariance Type:            nonrobust                                         
======================================================================================
                         coef    std err          t      P>|t|      [0.025      0.975]
--------------------------------------------------------------------------------------
const                 19.2013      3.565      5.386      0.000      12.189      26.214
age                   -0.5347      0.210     -2.552      0.011      -0.947      -0.122
support_dim1           1.1434      0.434      2.633      0.009       0.289       1.998
support_dim2           1.3208      0.471      2.804      0.005       0.394       2.247
family_dim1            0.1546      0.254      0.608      0.544      -0.346       0.655
family_dim2            0.6712      0.254      2.643      0.009       0.172       1.171
parents_dim1          -0.2608      0.130     -2.003      0.046      -0.517      -0.005
parents_dim2          -0.0731      0.141     -0.518      0.605      -0.351       0.205
performance_dim1      -0.2394      0.110     -2.175      0.030      -0.456      -0.023
performance_dim2       0.0689      0.069      0.996      0.320      -0.067       0.205
alcohol_dim1          -0.1183      0.169     -0.701      0.484      -0.450       0.213
alcohol_dim2           0.1784      0.184      0.971      0.332      -0.183       0.540
after_class_dim1       0.5180      0.211      2.460      0.014       0.104       0.932
after_class_dim2       0.5403      0.254      2.129      0.034       0.041       1.039
school_choice_dim1     0.7140      0.468      1.526      0.128      -0.206       1.634
school_choice_dim2     0.5168      0.492      1.050      0.295      -0.452       1.485
internet               0.2191      0.685      0.320      0.749      -1.129       1.567
romantic              -1.3662      0.513     -2.665      0.008      -2.375      -0.358
sex_M                  0.7956      0.520      1.531      0.127      -0.227       1.818
==============================================================================
Omnibus:                       20.982   Durbin-Watson:                   2.109
Prob(Omnibus):                  0.000   Jarque-Bera (JB):               23.167
Skew:                          -0.623   Prob(JB):                     9.32e-06
Kurtosis:                       3.200   Cond. No.                         260.
==============================================================================

Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
MSE:
 77.57679234040314

經 MDS 和 PCA 轉換後的資料集

以下將所有資料點經 PCA 轉換後,再進行迴歸。由迴歸模型,我們可以發現:

  • PCA 轉換後的資料點所進行的 MSE 與前一個模型相同。
  • 使用各成分進行迴歸,可以發現 PC1 、 PC4 、 PC9 、 PC10 、 PC15 對 G3 有較顯著影響。

從先前對各主成分中重要變數的分析,我們可以發現對此模型有影響的變數是

PC1PC4PC9PC10PC15
重要變數performance_dim2parents_dim1romanticsupport_dim2age
影響+--+-
執行結果參考
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
                             OLS Regression Results                            
==============================================================================
Dep. Variable:                     G3   R-squared:                       0.188
Model:                            OLS   Adj. R-squared:                  0.143
Method:                 Least Squares   F-statistic:                     4.232
Date:                Fri, 13 Jun 2025   Prob (F-statistic):           4.23e-08
Time:                        17:00:54   Log-Likelihood:                -992.98
No. Observations:                 349   AIC:                             2024.
Df Residuals:                     330   BIC:                             2097.
Df Model:                          18                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
const         19.2013      3.565      5.386      0.000      12.189      26.214
PC1            0.4910      0.167      2.947      0.003       0.163       0.819
PC2           -0.3802      0.242     -1.574      0.117      -0.856       0.095
PC3            0.1271      0.252      0.504      0.614      -0.368       0.623
PC4           -0.7924      0.341     -2.323      0.021      -1.464      -0.121
PC5            0.3656      0.230      1.590      0.113      -0.087       0.818
PC6            0.2171      0.321      0.677      0.499      -0.414       0.848
PC7            0.4347      0.292      1.486      0.138      -0.141       1.010
PC8           -0.4930      0.352     -1.402      0.162      -1.185       0.199
PC9           -1.5652      0.382     -4.092      0.000      -2.318      -0.813
PC10           1.2666      0.438      2.893      0.004       0.405       2.128
PC11          -0.1674      0.302     -0.555      0.579      -0.761       0.426
PC12           0.1927      0.319      0.603      0.547      -0.436       0.821
PC13           0.4138      0.506      0.818      0.414      -0.581       1.409
PC14           0.3158      0.287      1.099      0.273      -0.249       0.881
PC15          -1.0856      0.463     -2.346      0.020      -1.996      -0.175
PC16          -0.2603      0.375     -0.694      0.488      -0.998       0.478
PC17           0.6920      0.621      1.115      0.266      -0.529       1.913
PC18           0.3474      0.179      1.942      0.053      -0.005       0.699
==============================================================================
Omnibus:                       20.982   Durbin-Watson:                   2.109
Prob(Omnibus):                  0.000   Jarque-Bera (JB):               23.167
Skew:                          -0.623   Prob(JB):                     9.32e-06
Kurtosis:                       3.200   Cond. No.                         260.
==============================================================================

Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
MSE:
 77.57679234040309

經 MDS 和 PCA 轉換後選取 80% 變異量的資料集

以下使用 PCA 前 80% 解釋變異量的 PC 進行迴歸分析,我們可以發現:

  • 前 80% 解釋變異量的 PC 轉換後的資料點的 $R^2$ 為 0.137 ,相比於原始資料的模型解釋力下降。
  • 使用各成分進行迴歸,可以發現 PC1 、 PC4 、 PC5 、 PC9 對 G3 有較顯著影響。
PC1PC4PC5PC9
重要變數performance_dim2family_dim2romantic
影響+-++

由於此資料集仍能夠完整送入迴歸模型進行建模,因此我們不需要使用 PCA 方法進行降維後再建模,因為這反而會降低模型對資料集的解釋力、增加平均平方誤差。

執行結果參考
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
                             OLS Regression Results                            
==============================================================================
Dep. Variable:                     G3   R-squared:                       0.137
Model:                            OLS   Adj. R-squared:                  0.109
Method:                 Least Squares   F-statistic:                     4.861
Date:                Fri, 13 Jun 2025   Prob (F-statistic):           5.57e-07
Time:                        17:00:54   Log-Likelihood:                -1003.5
No. Observations:                 349   AIC:                             2031.
Df Residuals:                     337   BIC:                             2077.
Df Model:                          11                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
const         14.5323      2.774      5.238      0.000       9.075      19.990
PC1            0.4738      0.145      3.264      0.001       0.188       0.759
PC2           -0.3475      0.212     -1.641      0.102      -0.764       0.069
PC3            0.0787      0.230      0.342      0.733      -0.374       0.531
PC4           -0.5873      0.200     -2.935      0.004      -0.981      -0.194
PC5            0.4230      0.212      1.993      0.047       0.005       0.841
PC6           -0.1392      0.263     -0.528      0.598      -0.657       0.379
PC7            0.3270      0.251      1.301      0.194      -0.167       0.821
PC8           -0.5106      0.316     -1.616      0.107      -1.132       0.111
PC9           -1.2705      0.313     -4.060      0.000      -1.886      -0.655
PC10           0.6292      0.327      1.922      0.055      -0.015       1.273
PC11          -0.0189      0.270     -0.070      0.944      -0.550       0.512
==============================================================================
Omnibus:                       28.505   Durbin-Watson:                   2.110
Prob(Omnibus):                  0.000   Jarque-Bera (JB):               33.089
Skew:                          -0.734   Prob(JB):                     6.53e-08
Kurtosis:                       3.348   Cond. No.                         148.
==============================================================================

Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
MSE:
 92.68730265317721

QQ plots

以下繪製上述四模型的 QQ plots 。根據下圖四種模型的 QQ-plot,可觀察殘差是否近似常態分布:

  • 原始資料(有刪除 MSG1G2) + 迴歸:整體擬合最佳,但右尾偏離明顯,表示存在極端高分預測誤差。
  • MDS + 迴歸:模型簡單,但殘差尾部有較大偏差,表示極端值影響較大。
  • MDS + PCA + 迴歸:尾部偏離略有改善,但中尾仍未貼近理想直線,殘差分布仍不理想。
  • MDS + PCA (80% 解釋變異量) + 迴歸:偏離常態較明顯,特別在右尾,可能是 PCA 資訊壓縮過多。

四種模型皆未完全滿足殘差常態性假設,但以原始資料集的表現最接近常態。

https://raw.githubusercontent.com/Josh-test-lab/website-assets-repository/main/posts/Dataset%20Exploration%20and%20Analysis%20EP.2/MLR/qqplot_2x2.png
四個模型的 QQ plots 。

逐步挑選變數

還記得我們的目標嗎?我們想要找出究竟有那些變數會影響 G3 。因此,在這裡我們打算將變數逐步放入迴歸模型中,並建立模型,以逐步查看加入該變數是否能有效提升迴歸模型對於 G3 的擬合能力。

這聽起來很熟悉嗎?沒錯,這裡打算使用類似於 R 語言中的 step() 函數進行實作,以下將會實作出 Bidirectional elimination (雙向淘汰)的逐步迴歸分析函數(stepwise regression),並用於挑選變數。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# Stepwise variables selection
import statsmodels.api as sm

def bidirectional_elimination(X, y, p_threshold=0.05):
    selected_feature = []
    remaining_feature = list(X.columns)
    best_aic = float('inf')
    
    while remaining_feature or selected_feature:
        improved = False
        
        # Forward Step
        forward_candidates = []
        for f in remaining_feature:
            model = sm.OLS(y, sm.add_constant(X[selected_feature + [f]])).fit()
            forward_candidates.append((model.aic, f))
        
        forward_candidates.sort()
        best_forward_aic, best_candidate = forward_candidates[0]
        
        if best_forward_aic < best_aic:
            best_aic = best_forward_aic
            selected_feature.append(best_candidate)
            remaining_feature.remove(best_candidate)
            improved = True
        
        # Backward Step
        model = sm.OLS(y, sm.add_constant(X[selected_feature])).fit()
        p_values = model.pvalues.iloc[1:]  # ignore intercept
        max_p_value = p_values.max()
        
        if max_p_value > p_threshold:
            worst_feature = p_values.idxmax()
            selected_feature.remove(worst_feature)
            remaining_feature.append(worst_feature)
            improved = True
        
        if not improved:
            break
            
    return selected_feature

逐步迴歸包含三個部分:

  • 前向逐步: 在初始設定中,迴歸模型中沒有變數。因此,我們隨後逐步加入變數,然後將這些選定的變數組合成預測變數。

  • 後向消除: 我們在初始步驟中列出所有預測變數。然後,逐一消除變數,檢查模型是否成立。

  • 雙向消除: 它像前向逐步一樣添加預測變數,但也會剔除任何在此過程中變得無關緊要的變數。

透過設定 p-value$ = 0.05$ 的門檻值並逐步挑選完變數,我們可以得到以下結果:

方法選擇變數
原始資料(有刪除 MSG1G2) + 迴歸failures, goout, Mjob_1, Mjob_0, sex_M
MDS + 迴歸parents_dim1, after_class_dim1, family_dim2, romantic, support_dim2, after_class_dim2, support_dim1, age, performance_dim1, const
MDS + PCA + 迴歸PC9, PC1, PC15, PC10, PC8, PC18
MDS + PCA (80% 解釋變異量) + 迴歸PC4, PC9, PC1, PC8, PC10

再次 PCA

此處使用經過 MDS 且挑選過的變數再次進行 PCA ,結果如下:

PCparents_dim1after_class_dim1family_dim2romanticsupport_dim2after_class_dim2support_dim1ageperformance_dim1constExplained VarianceCumulative Explained VarianceMost Important Feature
PC10.213121-0.205577-0.0605270.4340940.056771-0.2864770.2238250.623287-0.4431020.00.1661520.166152age
PC20.448179-0.0836590.074404-0.061783-0.5402310.1330700.5885150.0212200.3555640.00.1439470.310098support_dim1
PC3-0.406978-0.4151600.6239540.1169110.0221110.4758530.1284470.110293-0.058623-0.00.1291110.439210family_dim2
PC40.0814920.512700-0.0447060.497163-0.3188400.496922-0.143583-0.122033-0.311816-0.00.1138250.553034after_class_dim1
PC50.2582200.5898950.613767-0.2181130.319698-0.1055880.1075900.189307-0.017143-0.00.1048480.657882family_dim2
PC60.248523-0.047805-0.1807890.4028150.6019670.3239110.0326640.0527850.5194910.00.1002500.758132support_dim2
PC7-0.6003070.359132-0.2765120.0294570.122379-0.0302600.6437470.0437910.033295-0.00.0910650.849197support_dim1
PC8-0.1289700.0150510.3370690.578870-0.116411-0.555072-0.001069-0.3864530.2518550.00.0833950.932592romantic
PC9-0.2756800.189882-0.0038290.033395-0.331180-0.042056-0.3733400.6277890.4917980.00.0674081.000000age
PC100.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000001.00.0000001.000000const

從以上表格可能無法很好看出各變數之間的關係。因此,這裡再次繪製經變數挑選後進行主成分分析的變異數圖。可以發現至少要選取到 PC7 ,才能夠解釋超過 80% 的累積變異量。

https://raw.githubusercontent.com/Josh-test-lab/website-assets-repository/main/posts/Dataset%20Exploration%20and%20Analysis%20EP.2/PCA/SW_PCA_plot_fullsize.png
經變數挑選後進行主成分分析的變異數圖。

以下繪製原資料集與經變數挑選後的 PC1 與 PC2 樣本散佈圖,並以 G3 作為上色標準。其中,為了能有效看出高分群與低分群的差異,這裡將 G3 中 15 分至 20 分作為高分區,並以紅色表示; 0 至 5 分作為低分區,並以藍色表示。

https://raw.githubusercontent.com/Josh-test-lab/website-assets-repository/main/posts/Dataset%20Exploration%20and%20Analysis%20EP.2/PCA/PC1_PC2_withG3.png
PC1 、 PC2 散佈圖的比較。

在上圖中,左圖為原整理後的資料集進行 PCA 後的結果,右圖為挑選變數後的 PCA(SW PCA)。

PCA:PC1 vs. PC2

  • 高分、中分與低分樣本在平面上混雜分布,無明顯的群聚或分界。
  • 雖然 PC1 和 PC2 捕捉了最多的總變異量,但它們未必與 G3 直接相關。
  • 這顯示對全體原始變數進行 PCA 時,前兩個主成分對 G3 並沒有強烈的區分能力。

SW PCA:PC1 vs. PC2

  • 高分群主要集中在PC1 為正值的區域。
  • 低分群則集中在PC1 為負值的區域。

這表示在變數選擇後再進行 PCA,能讓主成分(特別是 PC1)更有效地區分不同分數層級。

QQ plots

經過以上變數挑選後,進行迴歸分析的 QQ plots 如下:

https://raw.githubusercontent.com/Josh-test-lab/website-assets-repository/main/posts/Dataset%20Exploration%20and%20Analysis%20EP.2/MLR/qqplot_2x2_sw.png
挑選變數後四個模型的 QQ plots 。

模型比較

已知經過 PCA 後但只取前 n% 變異量所含的資訊,一定比完整 PCA 還損失更多資訊。因此,此處暫不討論。

以下比較上述所提出的六個模型。

模型$R^2$Adj. $R^2$MSEP-valueAIC
原始資料(有刪除 MSG1G2) + 迴歸0.2689870.19496062.5832490.9157222015.098094
MDS + 迴歸0.1875540.14323977.5767920.7493952023.958578
MDS + PCA + 迴歸0.1875540.14323977.5767920.6142972023.958578
原始資料(有刪除 MSG1G2) + 逐步迴歸0.1971380.185435293.5471880.0366541993.817204
MDS + 逐步迴歸0.1693840.147332140.1223890.0200782013.677881
MDS + PCA + 逐步迴歸0.1693840.147332140.1223890.5112942013.677881

由上表,我們可以發現使用原始資料(有刪除 MSG1G2) + 迴歸的模型,對於 G3 能有較好的擬合能力,使得模型解釋能力 $R^2$ 和 Adj. $R^2$ 是所有模型中最高的,且平均平方誤差最低,代表模型能較好地解釋資料變異並具備較小的預測誤差。另一方面,我們也可以發現原始資料(有刪除 MS G1G2) + 逐步迴歸MDS + PCA + 逐步迴歸的模型擁有相對較低的 P-value ,顯示這些模型中的變數對 G3 有統計上顯著的影響。這意味著這些模型能挑選出對應變數具高解釋力的自變數。進一步比較 AIC 值,原始資料(有刪除 MSG1G2) + 逐步迴歸模型的 AIC 最低,代表該模型在考量解釋力與模型複雜度後,整體表現最為理想。

以下顯示各模型具有影響力的前三大變數。

模型Top1Top2Top3
原始資料(有刪除 MSG1G2) + 迴歸failuresschoolsuppaid
MDS + 迴歸romanticsupport_dim2support_dim1
MDS + PCA + 迴歸PC9PC10PC15
原始資料(有刪除 MSG1G2) + 逐步迴歸Mjob_1failuresMjob_0
MDS + 逐步迴歸romanticsupport_dim2support_dim1
MDS + PCA + 逐步迴歸PC9PC7PC5

綜上所述,這裡選取原始資料(有刪除 MSG1G2) + 逐步迴歸模型作為評判 G3 的模型。從此模型,我們可以知道影響學生的變數為母親的工作課程失敗次數,顯示家庭與學生在學校課程的表現是動搖最終成績的關鍵。

結語

透過此次的合作資料分析,我們學習到了許多過去未曾接觸過的分析方法。透過腦力激盪,我們能挖掘出資料中隱藏但具有重要意義的資訊。由於本次資料集主要由類別型變數組成,如何將其適當地轉換為數值型變數,並進一步進行分析,是本專案的核心挑戰之一。不恰當的轉換可能導致資訊流失,因此選擇合適的處理方式至關重要,也是我們所學到的資料分析技巧。

感謝 Wang, Xuan-Chun 與 Sin, Wen-Lee 的協助分析,讓此專案能順利進行。

延伸學習

參考資料