目錄

1140227 多變量分析

作業 1,製作美國、日本和歐洲汽車里程的箱形圖(從左到右)。

前言

本次作業要求畫出教科書中的美國、日本和歐洲汽車里程的箱形圖。

https://github.com/QuantLet/MVA/tree/master/QID-1485-MVAboxcar 可下載資料集 carc.txt 以及生成圖片的 MVAboxcar.R 檔案。

資料集

我們可以在 R 中使用

1
read.table("carc.txt")

讀取資料集,以下是資料集 carc.txt 的部份資訊。

V1V2V3V4V5V6V7V8V9V10V11V12V13
1409922322.527.5112930186401213.58
2474917313.025.5113350173402582.53
3379922NaNNaN3.018.5122640168351213.08
4969017523.027.0152830189371313.20
5629523332.528.011207017436973.70

由教科書中的表 22.3 ,我們可以知道上述資料集共有 13 個參數與 74 個車輛種類,每個參數說明如下:

變數符號說明
$X_1$P價格
$X_2$M每加侖行駛英里數
$X_3$R781978 年維修記錄, 5 分標準, 5 最佳, 1 最差
$X_4$R771977 年維修記錄, 5 分標準, 5 最佳, 1 最差
$X_5$H頭部空間,英吋
$X_6$R後座腿部空間,英吋
$X_7$Tr行李箱空間,立方英尺
$X_8$W重量,磅
$X_9$L車長,英吋
$X_{10}$T轉彎直徑,英尺
$X_{11}$D排氣量,立方英吋
$X_{12}$G最高檔齒輪比
$X_{13}$C公司總部, 1 代表美國, 2 代表日本, 3 代表歐洲

箱形圖

以下是於 Github 的 QuantLet/MVA 中繪製箱形圖的範例。

 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
# clear variables and close windows
rm(list = ls(all = TRUE))
graphics.off()

# load data
x = read.table("carc.txt")

# parameter settings
k      = 0
l      = 0
m      = 0
us     = NULL
japan  = NULL
europe = NULL
M      = x[, 2]
C      = x[, 13]

for (i in 1:dim(x)[1]) {
    if (x[i, 13] == 1) {
        k = k + 1
        us[k] = x[i, 2]
    } else if (x[i, 13] == 2) {
        l = l + 1
        japan[l] = x[i, 2]
    } else if (x[i, 13] == 3) {
        m = m + 1
        europe[m] = x[i, 2]
    }
}

m1 = mean(us)
m2 = mean(japan)
m3 = mean(europe)

# plot
boxplot(us, japan, europe, axes = FALSE, frame = TRUE)
axis(side = 1, at = seq(1, 3), label = c("US", "JAPAN", "EU"))
axis(side = 2, at = seq(0, 50, 5), label = seq(0, 50, 5))
title("Car Data")
lines(c(0.6, 1.4), c(m1, m1), lty = "dotted", lwd = 1.2)
lines(c(1.6, 2.4), c(m2, m2), lty = "dotted", lwd = 1.2)
lines(c(2.6, 3.4), c(m3, m3), lty = "dotted", lwd = 1.2)

(five = quantile(x[, 2], c(0.025, 0.25, 0.5, 0.75, 0.975)))

/1140227-multivariate-analysis/image/1740626790418.png
不同製造地點對於里程數的箱形圖。

由於僅需要繪出不同地區汽車與里程的箱形圖,因此只使用 M = x[, 2]C = x[, 13] 兩參數。其中, M 代表每加侖行駛英里數 (miles) , C 代表汽車製造商的公司總部 (Company headquarter) 。

上述程式碼是原作者於 2016 年上傳到 Github 的程式碼,我們現在可以以更精簡的寫法完成繪製,程式碼如下。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 清除變數和關閉圖形視窗
rm(list = ls(all = TRUE))
graphics.off()

# 載入資料
x <- read.table("carc.txt")

# 分組並計算各組平均值
groups <- split(x[, 2], x[, 13])
means <- sapply(groups, mean)

# 繪製箱形圖
boxplot(groups, names = c("US", "JAPAN", "EU"), frame = TRUE)
title("Car Data")
axis(2, at = seq(0, 50, 5))

# 平均值虛線
for (i in 1:length(means)) {
  lines(c(i - 0.4, i + 0.4), rep(means[i], 2), lty = "dotted", lwd = 1.2)
}

quantile(x[, 2], c(0.025, 0.25, 0.5, 0.75, 0.975)) # 四分位數

運行環境

  • 作業系統:Windows 11 24H2
  • 程式語言:R 4.4.2

參考資料