Vectors & Matrices

Objek Fundamental dan Operasinya

NoteWhy This Matters for Your Work

Setiap dataset yang pernah kamu analisis adalah sebuah matriks. Setiap observasi adalah vektor baris, setiap variabel adalah vektor kolom. OLS, logistic regression, PCA, neural networks — semua beroperasi dalam bahasa matriks dan vektor.

Lebih konkret: - Data matrix \(X \in \mathbb{R}^{n \times p}\): \(n\) observasi, \(p\) features - Koefisien OLS: \(\hat{\boldsymbol{\beta}} = (X^TX)^{-1}X^T\mathbf{y}\) — sepenuhnya matrix operations - Forward pass di neural network: serangkaian matrix multiplications - Mahalanobis distance di anomaly detection: \(d^2 = (\mathbf{x} - \boldsymbol{\mu})^T\Sigma^{-1}(\mathbf{x} - \boldsymbol{\mu})\)

Pahami ini dengan baik, dan semua hal lainnya akan jauh lebih masuk akal.


1 1. Vectors

1.1 Definisi

Vektor adalah array terurut dari bilangan real. Kita hampir selalu bekerja dengan column vectors:

\[\mathbf{v} = \begin{bmatrix} v_1 \\ v_2 \\ \vdots \\ v_n \end{bmatrix} \in \mathbb{R}^n\]

Row vector adalah transposenya: \(\mathbf{v}^T = \begin{bmatrix} v_1 & v_2 & \cdots & v_n \end{bmatrix}\).

Konvensi penting: dalam notasi statistik dan ML, vektor selalu column vector kecuali dinyatakan lain. Observasi ke-\(i\) dari data matrix \(X\) adalah row vector \(\mathbf{x}_i^T \in \mathbb{R}^p\).

1.2 Interpretasi Geometris

Vektor \(\mathbf{v} \in \mathbb{R}^2\) bisa diinterpretasikan sebagai panah dari titik asal \(\mathbf{0}\) ke titik \((v_1, v_2)\). Dalam \(\mathbb{R}^n\), vektor adalah panah di ruang \(n\)-dimensi.

Ini bukan sekadar visualisasi. Operasi seperti penjumlahan vektor dan proyeksi punya makna geometris yang sangat intuitif.

1.3 Operasi Dasar

Penjumlahan: dua vektor dijumlahkan komponen per komponen: \[\mathbf{u} + \mathbf{v} = \begin{bmatrix} u_1 + v_1 \\ u_2 + v_2 \\ \vdots \\ u_n + v_n \end{bmatrix}\]

Secara geometris: aturan jajaran genjang (parallelogram rule).

Perkalian skalar: kalikan setiap komponen dengan skalar \(c \in \mathbb{R}\): \[c\mathbf{v} = \begin{bmatrix} cv_1 \\ cv_2 \\ \vdots \\ cv_n \end{bmatrix}\]

\(c > 1\): stretch. \(0 < c < 1\): shrink. \(c < 0\): flip direction.

Kombinasi linear: \(c_1\mathbf{v}_1 + c_2\mathbf{v}_2 + \cdots + c_k\mathbf{v}_k\) untuk skalar \(c_i\) dan vektor \(\mathbf{v}_i\). Konsep ini fundamental — column space, spanning sets, dan basis semuanya dibangun dari kombinasi linear.

1.4 Dot Product (Inner Product)

Dot product antara dua vektor \(\mathbf{u}, \mathbf{v} \in \mathbb{R}^n\):

\[\mathbf{u} \cdot \mathbf{v} = \mathbf{u}^T\mathbf{v} = \sum_{i=1}^n u_i v_i = u_1v_1 + u_2v_2 + \cdots + u_nv_n\]

Ini adalah skalar. Interpretasi geometris:

\[\mathbf{u}^T\mathbf{v} = \|\mathbf{u}\|\|\mathbf{v}\|\cos\theta\]

di mana \(\theta\) adalah sudut antara kedua vektor. Dot product mengukur seberapa sejajar dua vektor.

ImportantDefinisi: Norm (Panjang Vektor)

Euclidean norm (panjang vektor) \(\mathbf{v} \in \mathbb{R}^n\):

\[\|\mathbf{v}\| = \sqrt{\mathbf{v}^T\mathbf{v}} = \sqrt{\sum_{i=1}^n v_i^2}\]

Properti: - \(\|\mathbf{v}\| \geq 0\), dan \(\|\mathbf{v}\| = 0 \iff \mathbf{v} = \mathbf{0}\) - \(\|c\mathbf{v}\| = |c|\|\mathbf{v}\|\) - Triangle inequality: \(\|\mathbf{u} + \mathbf{v}\| \leq \|\mathbf{u}\| + \|\mathbf{v}\|\)

Unit vector: \(\hat{\mathbf{v}} = \mathbf{v}/\|\mathbf{v}\|\) punya norm 1.

Di statistik, kita sering pakai \(L^2\) norm untuk OLS loss: \(\|\mathbf{y} - X\hat{\boldsymbol{\beta}}\|^2 = \sum_{i=1}^n (y_i - \hat{y}_i)^2\).

1.5 Orthogonality

Dua vektor orthogonal (tegak lurus) jika:

\[\mathbf{u} \perp \mathbf{v} \iff \mathbf{u}^T\mathbf{v} = 0\]

Ini karena \(\cos(90°) = 0\). Orthogonality adalah properti yang sangat berguna — vektor yang orthogonal “tidak mengandung informasi satu sama lain” dalam arti tertentu.

Contoh: dalam OLS, residuals \(\mathbf{e}\) orthogonal terhadap setiap kolom dari \(X\): \[X^T\mathbf{e} = X^T(\mathbf{y} - X\hat{\boldsymbol{\beta}}) = \mathbf{0}\]

1.6 Projection (Proyeksi)

Proyeksi \(\mathbf{u}\) ke arah \(\mathbf{v}\):

\[\text{proj}_{\mathbf{v}}\mathbf{u} = \frac{\mathbf{u}^T\mathbf{v}}{\|\mathbf{v}\|^2}\mathbf{v} = \frac{\mathbf{u}^T\mathbf{v}}{\mathbf{v}^T\mathbf{v}}\mathbf{v}\]

Ini adalah komponen \(\mathbf{u}\) yang “searah” dengan \(\mathbf{v}\). Residual (komponen yang tegak lurus \(\mathbf{v}\)): \(\mathbf{u} - \text{proj}_{\mathbf{v}}\mathbf{u}\).

OLS adalah generalisasi proyeksi ini ke subspace yang lebih tinggi dimensinya.


2 2. Matrices

2.1 Definisi

Matriks \(A \in \mathbb{R}^{m \times n}\) adalah array persegi panjang dari bilangan real dengan \(m\) baris dan \(n\) kolom:

\[A = \begin{bmatrix} a_{11} & a_{12} & \cdots & a_{1n} \\ a_{21} & a_{22} & \cdots & a_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{m1} & a_{m2} & \cdots & a_{mn} \end{bmatrix}\]

Elemen \((i,j)\): \(a_{ij}\) atau \([A]_{ij}\). Kolom ke-\(j\) dari \(A\): \(\mathbf{a}_j \in \mathbb{R}^m\).

2.2 Matriks-matriks Spesial

Identity matrix \(I_n \in \mathbb{R}^{n \times n}\): diagonal 1, lainnya 0. Sifat: \(AI = IA = A\).

Diagonal matrix: hanya elemen diagonal yang nonzero. \(\text{diag}(d_1, \ldots, d_n)\).

Symmetric matrix: \(A = A^T\), artinya \(a_{ij} = a_{ji}\). Covariance matrices selalu symmetric. Symmetric matrices punya sifat luar biasa: eigenvalues selalu real, eigenvectors selalu orthogonal.

Orthogonal matrix \(Q\): \(Q^TQ = QQ^T = I\), artinya \(Q^{-1} = Q^T\). Kolom-kolomnya adalah orthonormal vectors. Transformasi orthogonal preserve panjang dan sudut — mereka hanya merotasi (dan mungkin merefleksikan), tidak meng-stretch.

Triangular matrix: upper triangular (\(a_{ij} = 0\) untuk \(i > j\)) atau lower triangular (\(a_{ij} = 0\) untuk \(i < j\)). Berguna dalam decompositions.

2.3 Transpose

Transpose \(A^T\): flip matriks di diagonal utama. Elemen \((i,j)\) dari \(A^T\) adalah \(a_{ji}\).

Properti penting: - \((A^T)^T = A\) - \((A + B)^T = A^T + B^T\) - (AB)^T = B^T A^T ← urutan terbalik! Ini sering bikin salah. - \((cA)^T = cA^T\)

2.4 Matrix Multiplication

Hasil kali \(C = AB\) di mana \(A \in \mathbb{R}^{m \times k}\) dan \(B \in \mathbb{R}^{k \times n}\) memberikan \(C \in \mathbb{R}^{m \times n}\).

Ukuran inner dimensions harus match: \((m \times k)(k \times n) = (m \times n)\).

Elemen \((i,j)\) dari \(C\): \[c_{ij} = \sum_{l=1}^k a_{il} b_{lj} = \mathbf{a}_i^T \mathbf{b}_j\]

(dot product dari baris ke-\(i\) dari \(A\) dengan kolom ke-\(j\) dari \(B\)).

Interpretasi geometris: matrix multiplication adalah komposisi linear transformations. \(B\) dulu, lalu \(A\). \(AB\mathbf{x}\) berarti: transformasi \(\mathbf{x}\) dengan \(B\), lalu hasilnya transformasi dengan \(A\).

ImportantDefinisi: Matrix Multiplication Tidak Komutatif

\[AB \neq BA \text{ secara umum}\]

Bahkan ketika keduanya terdefinisi, \(AB\) dan \(BA\) hampir tidak pernah sama. Contoh penting: \((X^TX)^{-1}X^T \neq X^T(X^TX)^{-1}\) — keduanya berbeda dimensi.

Tapi ada beberapa kasus spesial di mana \(AB = BA\): ketika \(A\) dan \(B\) diagonal, atau ketika satu adalah fungsi dari yang lain (\(A^kA^l = A^{k+l}\)), dll.


3 3. Worked Examples

Hitung \(C = AB\) di mana: \[A = \begin{bmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \end{bmatrix} \in \mathbb{R}^{2 \times 3}, \quad B = \begin{bmatrix} 7 & 8 \\ 9 & 10 \\ 11 & 12 \end{bmatrix} \in \mathbb{R}^{3 \times 2}\]

Hasil \(C \in \mathbb{R}^{2 \times 2}\).

\(c_{11}\): baris 1 dari \(A\) \(\cdot\) kolom 1 dari \(B\): \[c_{11} = (1)(7) + (2)(9) + (3)(11) = 7 + 18 + 33 = 58\]

\(c_{12}\): baris 1 dari \(A\) \(\cdot\) kolom 2 dari \(B\): \[c_{12} = (1)(8) + (2)(10) + (3)(12) = 8 + 20 + 36 = 64\]

\(c_{21}\): baris 2 dari \(A\) \(\cdot\) kolom 1 dari \(B\): \[c_{21} = (4)(7) + (5)(9) + (6)(11) = 28 + 45 + 66 = 139\]

\(c_{22}\): baris 2 dari \(A\) \(\cdot\) kolom 2 dari \(B\): \[c_{22} = (4)(8) + (5)(10) + (6)(12) = 32 + 50 + 72 = 154\]

Jadi: \[C = AB = \begin{bmatrix} 58 & 64 \\ 139 & 154 \end{bmatrix}\]

Verifikasi di R:

A <- matrix(c(1,2,3,4,5,6), nrow=2, byrow=TRUE)
B <- matrix(c(7,8,9,10,11,12), nrow=3, byrow=TRUE)
C <- A %*% B
print(C)
# Output:
#      [,1] [,2]
# [1,]   58   64
# [2,]  139  154

Buktikan bahwa \(d^2 = (\mathbf{x} - \boldsymbol{\mu})^T\Sigma^{-1}(\mathbf{x} - \boldsymbol{\mu})\) adalah skalar, dan verifikasi secara numeris.

Bukti dimensi: - \((\mathbf{x} - \boldsymbol{\mu}) \in \mathbb{R}^p\), jadi sebagai column vector: \((p \times 1)\) - \((\mathbf{x} - \boldsymbol{\mu})^T\): \((1 \times p)\) - \(\Sigma^{-1} \in \mathbb{R}^{p \times p}\): \((p \times p)\) - Produk \((\mathbf{x} - \boldsymbol{\mu})^T\Sigma^{-1}\): \((1 \times p)(p \times p) = (1 \times p)\) - Produk akhir \((\mathbf{x} - \boldsymbol{\mu})^T\Sigma^{-1}(\mathbf{x} - \boldsymbol{\mu})\): $(1 p)(p ) = (1 ) = $ skalar ✓

Makna statistik: Mahalanobis distance mengukur jarak titik \(\mathbf{x}\) dari mean \(\boldsymbol{\mu}\) dalam satuan “standar deviasi”, dengan memperhitungkan korelasi antar variabel. Ketika \(\Sigma = I\) (variabel independent, variance 1), ini reduce ke Euclidean distance.

Verifikasi R:

# Setup: 2D data
mu <- c(1, 2)
Sigma <- matrix(c(4, 1, 1, 2), nrow = 2)  # covariance matrix
Sigma_inv <- solve(Sigma)

x <- c(3, 4)

# Mahalanobis distance
diff <- x - mu
d_squared <- t(diff) %*% Sigma_inv %*% diff
cat("d^2 =", d_squared, "\n")
cat("Dimensi hasil:", dim(d_squared), "\n")  # 1x1 matrix

# Atau pakai fungsi bawaan R
d_builtin <- mahalanobis(x, mu, Sigma)
cat("Built-in Mahalanobis:", d_builtin, "\n")

# Bandingkan: Euclidean distance
d_euclidean <- sqrt(sum((x - mu)^2))
cat("Euclidean distance:", d_euclidean, "\n")
# Mahalanobis berbeda karena Sigma != I

Output yang diharapkan: d^2 adalah nilai tunggal (skalar), bukan matriks.


4 4. Operasi Matriks di R

# === Membuat matriks ===
A <- matrix(c(1,2,3,4,5,6), nrow=2, byrow=TRUE)
# A =
# [1,] 1 2 3
# [2,] 4 5 6

B <- matrix(c(7,8,9,10,11,12), nrow=3, byrow=TRUE)

# === Matrix multiplication ===
A %*% B          # matrix product (BUKAN element-wise!)
A * A            # element-wise multiplication (jarang dipakai)

# === Transpose ===
t(A)             # transpose of A

# === Gram matrix (penting banget di OLS!) ===
crossprod(A)     # t(A) %*% A  (lebih efficient)
tcrossprod(A)    # A %*% t(A)

# === Inverse (akan dibahas di modul 03) ===
M <- matrix(c(2,1,1,3), nrow=2)
solve(M)         # inverse dari M
solve(M) %*% M   # harus = I

# === Eigendecomposition (modul 04) ===
eigen(M)

# === Dot product dua vektor ===
u <- c(1, 2, 3)
v <- c(4, 5, 6)
sum(u * v)       # dot product
t(u) %*% v      # sama, tapi returns matrix (1x1)
crossprod(u, v)  # juga sama

# === Norm ===
sqrt(sum(u^2))   # Euclidean norm
norm(as.matrix(u), type="F")  # atau pakai norm()

# === Projection ===
proj <- function(u, v) {
  (sum(u*v) / sum(v*v)) * v
}
proj(c(3,1), c(1,0))  # proyeksi (3,1) ke sumbu x → (3,0)

5 5. Koneksi ke Econometrics

CautionConnection: Data Matrix dan OLS

Dalam regresi linear dengan \(n\) observasi dan \(p\) predictors (termasuk intercept):

\[X = \begin{bmatrix} 1 & x_{11} & x_{12} & \cdots & x_{1,p-1} \\ 1 & x_{21} & x_{22} & \cdots & x_{2,p-1} \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ 1 & x_{n1} & x_{n2} & \cdots & x_{n,p-1} \end{bmatrix} \in \mathbb{R}^{n \times p}\]

Beberapa matrix products penting:

Gram matrix \(X^TX \in \mathbb{R}^{p \times p}\): mengandung sum of squares dan cross-products dari semua predictors. Elemen \((j,k)\): \(\sum_{i=1}^n x_{ij}x_{ik}\).

Cross-product \(X^T\mathbf{y} \in \mathbb{R}^p\): elemen ke-\(j\) adalah \(\sum_{i=1}^n x_{ij}y_i\) — covariance (tidak ter-normalize) antara predictor ke-\(j\) dan \(y\).

OLS estimator: \(\hat{\boldsymbol{\beta}} = (X^TX)^{-1}X^T\mathbf{y}\) — system of linear equations yang di-solve oleh \((X^TX)\).

Fitted values: \(\hat{\mathbf{y}} = X\hat{\boldsymbol{\beta}} = X(X^TX)^{-1}X^T\mathbf{y} = H\mathbf{y}\)

di mana \(H = X(X^TX)^{-1}X^T\) adalah hat matrix (projection matrix). \(H\) adalah symmetric dan idempotent (\(H^2 = H\)).

# OLS dari scratch menggunakan matrix operations
n <- 100; p <- 3
X <- cbind(1, matrix(rnorm(n*(p-1)), n, p-1))
beta_true <- c(1, 2, -1)
y <- X %*% beta_true + rnorm(n)

# OLS estimator
beta_hat <- solve(t(X) %*% X) %*% t(X) %*% y
cat("beta_hat:", beta_hat, "\n")

# Sama dengan lm()
lm_fit <- lm(y ~ X[,-1])
cat("lm coef:", coef(lm_fit), "\n")

6 6. Practice Problems

Problem 1: Hitung dot product dan norm

Given \(\mathbf{u} = \begin{bmatrix}3 \\ 4\end{bmatrix}\) dan \(\mathbf{v} = \begin{bmatrix}1 \\ -2\end{bmatrix}\): - (a) Hitung \(\mathbf{u}^T\mathbf{v}\) - (b) Hitung \(\|\mathbf{u}\|\) dan \(\|\mathbf{v}\|\) - (c) Apakah \(\mathbf{u}\) dan \(\mathbf{v}\) orthogonal? - (d) Hitung \(\text{proj}_{\mathbf{v}}\mathbf{u}\)

Solusi Problem 1: - (a) \(\mathbf{u}^T\mathbf{v} = (3)(1) + (4)(-2) = 3 - 8 = -5\) - (b) \(\|\mathbf{u}\| = \sqrt{9+16} = 5\), \(\|\mathbf{v}\| = \sqrt{1+4} = \sqrt{5}\) - (c) Tidak, karena \(\mathbf{u}^T\mathbf{v} = -5 \neq 0\) - (d) \(\text{proj}_{\mathbf{v}}\mathbf{u} = \frac{-5}{5}\mathbf{v} = -\begin{bmatrix}1 \\ -2\end{bmatrix} = \begin{bmatrix}-1 \\ 2\end{bmatrix}\)


Problem 2: Buktikan \((AB)^T = B^TA^T\)

Untuk matriks \(A \in \mathbb{R}^{m \times k}\) dan \(B \in \mathbb{R}^{k \times n}\):

Bukti: Elemen \((i,j)\) dari \((AB)^T\) adalah elemen \((j,i)\) dari \(AB\): \[[(AB)^T]_{ij} = [AB]_{ji} = \sum_{l=1}^k a_{jl}b_{li}\]

Elemen \((i,j)\) dari \(B^TA^T\): \[[B^TA^T]_{ij} = \sum_{l=1}^k [B^T]_{il}[A^T]_{lj} = \sum_{l=1}^k b_{li}a_{jl}\]

Keduanya sama (jumlah bilangan real komutatif). \(\square\)

Implikasi penting: \((X^TX)^T = X^T(X^T)^T = X^TX\) → Gram matrix selalu symmetric.


Problem 3: Kapan \(AB = BA\)?

\(AB = BA\) ketika: 1. Salah satu adalah identity: \(AI = IA = A\) 2. Salah satu adalah scalar multiple of I: \(A(cI) = cA = (cI)A\) 3. Keduanya diagonal: diagonal matrices commute 4. Salah satu adalah fungsi polinomial dari yang lain: \(A \cdot f(A) = f(A) \cdot A\) 5. Keduanya orthogonal projections ke subspace yang sama

Secara umum, \(AB = BA\) adalah kasus khusus, bukan rule. Selalu hati-hati dengan urutan dalam perkalian matriks!


Problem Bonus (R): Verifikasi bahwa hat matrix \(H = X(X^TX)^{-1}X^T\) adalah: - (a) Symmetric: \(H^T = H\) - (b) Idempotent: \(H^2 = H\) - (c) Rank = \(p\) (jumlah kolom \(X\))

n <- 50; p <- 3
X <- cbind(1, matrix(rnorm(n*(p-1)), n, p-1))
H <- X %*% solve(t(X) %*% X) %*% t(X)

# (a) Symmetric
max(abs(H - t(H)))  # harus mendekati 0

# (b) Idempotent
max(abs(H %*% H - H))  # harus mendekati 0

# (c) Rank
qr(H)$rank  # harus = p = 3