11  Pemodelan Regresi

Pemodelan regresi adalah salah satu metode statistik paling fundamental yang digunakan untuk menganalisis hubungan antara satu atau lebih variabel independen (prediktor) dengan variabel dependen (respon). Tujuan utama dari regresi adalah memprediksi, menjelaskan, atau mengestimasi nilai dari variabel respon berdasarkan informasi dari variabel prediktor (; ).

11.1 Regresi Linear Sederhana

Regresi Linear Sederhana adalah metode untuk memodelkan hubungan antara satu variabel independen (X) dan satu variabel dependen (Y) menggunakan persamaan garis lurus:

Y=β0+β1X+ε

Keterangan: - Y: variabel dependen
- X: variabel independen
- β0: intercept (titik potong)
- β1: slope (kemiringan garis)
- ε: error (noise)

Persamaan ini diasumsikan memiliki hubungan linier antara X dan Y, dengan error ε yang berdistribusi normal dengan rata-rata nol dan variansi konstan (homoskedastisitas) (; ).

11.1.1 Studi Kasus 1

Prediksi produksi ore (bijih) harian berdasarkan jam operasi alat berat.

  • Variabel bebas (X): Jam operasi alat berat per hari (jam)
  • Variabel terikat (Y): Produksi ore per hari (ton)

11.1.2 Data Kasus 1

Misal data pengukuran 10 hari operasi alat berat di tambang adalah:

i Xi (Jam Operasi) Yi (Produksi Ore)
1 5 50
2 7 65
3 8 70
4 6 60
5 9 80
6 4 45
7 7 68
8 10 90
9 6 62
10 8 75

11.1.3 Rata-rata RX¯ & Y¯

X¯=1ni=1nXi,Y¯=1ni=1nYi

X¯=5+7+8+6+9+4+7+10+6+810=7010=7.0

Y¯=50+65+70+60+80+45+68+90+62+7510=66510=66.5

11.1.4 Koefisien Slope b1

b1=i=1n(XiX¯)(YiY¯)i=1n(XiX¯)2

Xi Yi XiX¯ YiY¯ (XiX¯)(YiY¯) (XiX¯)2
5 50 57=2 5066.5=16.5 (2)×(16.5)=33 4
7 65 0 -1.5 0 0
8 70 1 3.5 3.5 1
6 60 -1 -6.5 6.5 1
9 80 2 13.5 27 4
4 45 -3 -21.5 64.5 9
7 68 0 1.5 0 0
10 90 3 23.5 70.5 9
6 62 -1 -4.5 4.5 1
8 75 1 8.5 8.5 1

Jumlah:

(XiX¯)(YiY¯)=33+0+3.5+6.5+27+64.5+0+70.5+4.5+8.5=218

(XiX¯)2=4+0+1+1+4+9+0+9+1+1=30

Maka,

b1=21830=7.27

11.1.5 Intercept b0:

b0=Y¯b1X¯=66.57.27×7=66.550.89=15.61

11.1.6 Model Regresi Linear

Y^=b0+b1×X=15.61+7.27×X

11.1.7 Contoh Prediksi

Jika jam operasi alat berat = 8 jam, maka estimasi produksi ore:

Y^=15.61+7.27×8=15.61+58.16=73.77 ton

11.1.8 Visualisasi 2D

import pandas as pd
import numpy as np
import plotly.graph_objs as go
from sklearn.linear_model import LinearRegression

# Data tambang
data = {
    'Jam_Operasi': [5, 7, 8, 6, 9, 4, 7, 10, 6, 8],
    'Produksi_Ore': [50, 65, 70, 60, 80, 45, 68, 90, 62, 75]
}
df = pd.DataFrame(data)

# Model regresi linear
X = df[['Jam_Operasi']]
y = df['Produksi_Ore']
model = LinearRegression()
model.fit(X, y)

intercept = model.intercept_
slope = model.coef_[0]

df['Produksi_pred'] = model.predict(X)
df['epsilon'] = df['Produksi_Ore'] - df['Produksi_pred']

# Garis regresi
x_line = np.linspace(df['Jam_Operasi'].min()-1, df['Jam_Operasi'].max()+1, 100)
y_line = intercept + slope * x_line

line_regresi = go.Scatter(
    x=x_line,
    y=y_line,
    mode='lines',
    name='Garis Regresi',
    line=dict(color='red', width=3)
)

# Titik data aktual
scatter_actual = go.Scatter(
    x=df['Jam_Operasi'],
    y=df['Produksi_Ore'],
    mode='markers',
    name='Data Aktual',
    marker=dict(color='blue', size=8)
)

# Garis residual epsilon (vertikal)
residual_lines = []
for i, row in df.iterrows():
    residual = go.Scatter(
        x=[row['Jam_Operasi'], row['Jam_Operasi']],
        y=[row['Produksi_pred'], row['Produksi_Ore']],
        mode='lines',
        line=dict(color='gray', width=2, dash='dot'),
        showlegend=(i==0),
        name='Error ε'
    )
    residual_lines.append(residual)

# Label epsilon
epsilon_labels = go.Scatter(
    x=df['Jam_Operasi'] + 0.1,
    y=(df['Produksi_Ore'] + df['Produksi_pred']) / 2,
    mode='text',
    text=[f'ε{i+1}' for i in range(len(df))],
    showlegend=False,
    textposition='middle right',
    textfont=dict(color='black', size=12)
)

# Anotasi formula model dan keterangan data aktual
annotations = [
    dict(
        x=0, y=1.12, xref='paper', yref='paper',
        text=f"<b>Model Regresi:</b><br>Ŷ = {intercept:.2f} + {slope:.2f} × Jam_Operasi",
        showarrow=False,
        font=dict(size=14, color='darkred'),
        align='left'
    ),
    dict(
        x=0.95, y=1.2, xref='paper', yref='paper',
        text="<b>Data Aktual:</b><br>Y = Produksi Ori",
        showarrow=False,
        font=dict(size=14, color='blue'),
        align='right'
    )
]

layout = go.Layout(
    title='Regresi Linear Sederhana: Produksi Ore vs Jam Operasi',
    xaxis=dict(title='Jam Operasi (jam)'),
    yaxis=dict(title='Produksi Ore (ton)'),
    annotations=annotations,
    margin=dict(t=100)
)

fig = go.Figure(data=[scatter_actual, line_regresi] + residual_lines + [epsilon_labels], layout=layout)
fig.show();
ε1ε2ε3ε4ε5ε6ε7ε8ε9ε1034567891011405060708090
Data AktualGaris RegresiError εRegresi Linear Sederhana: Produksi Ore vs Jam OperasiJam Operasi (jam)Produksi Ore (ton)Model Regresi:Ŷ = 15.63 + 7.27 × Jam_OperasiData Aktual:Y = Produksi Ori

11.1.9 Visualisasi 3D

import pandas as pd
import numpy as np
import plotly.graph_objs as go
from sklearn.linear_model import LinearRegression

# Data tambang: Jam operasi dan produksi ore harian
data = {
    'Jam_Operasi': [5, 7, 8, 6, 9, 4, 7, 10, 6, 8],
    'Produksi_Ore': [50, 65, 70, 60, 80, 45, 68, 90, 62, 75]
}
df = pd.DataFrame(data)

# Model regresi linear
X = df[['Jam_Operasi']]
y = df['Produksi_Ore']
model = LinearRegression()
model.fit(X, y)

intercept = model.intercept_
slope = model.coef_[0]

df['Produksi_pred'] = model.predict(X)
df['epsilon'] = df['Produksi_Ore'] - df['Produksi_pred']

# Permukaan regresi linear 3D (x = Jam operasi, y = Prediksi produksi, z=0)
x_surface = np.linspace(df['Jam_Operasi'].min(), df['Jam_Operasi'].max(), 20)
y_surface = intercept + slope * x_surface
z_surface = np.zeros_like(x_surface)

surface_line = go.Scatter3d(
    x=x_surface,
    y=y_surface,
    z=z_surface,
    mode='lines',
    name='Garis Regresi (Permukaan)',
    line=dict(color='red', width=5)
)

# Scatter titik data aktual di z = residual
scatter_actual = go.Scatter3d(
    x=df['Jam_Operasi'],
    y=df['Produksi_Ore'],
    z=df['epsilon'],
    mode='markers',
    marker=dict(size=6, color='blue'),
    name='Data Aktual (Jam Operasi, Produksi, ε)'
)

# Garis residual vertikal dari permukaan regresi ke titik aktual
residual_lines = []
for i in range(len(df)):
    residual_line = go.Scatter3d(
        x=[df['Jam_Operasi'][i], df['Jam_Operasi'][i]],
        y=[df['Produksi_pred'][i], df['Produksi_Ore'][i]],
        z=[0, df['epsilon'][i]],
        mode='lines',
        line=dict(color='gray', width=2, dash='dot'),
        showlegend=(i==0),
        name='Error (ε)'
    )
    residual_lines.append(residual_line)

# Label residual epsilon
epsilon_labels = go.Scatter3d(
    x=df['Jam_Operasi'] + 0.1,
    y=(df['Produksi_Ore'] + df['Produksi_pred']) / 2,
    z=df['epsilon'] / 2,
    mode='text',
    text=[f'ε{i+1}' for i in range(len(df))],
    textposition='middle right',
    showlegend=False,
    textfont=dict(size=12, color='black')
)

# Formula model regresi
formula_text = f"Ŷ = {intercept:.2f} + {slope:.2f} × Jam_Operasi"

layout = go.Layout(
    title="Visualisasi Regresi Linear Sederhana: Produksi Ore vs Jam Operasi",
    width=1600,
    height=700,
    scene=dict(
        xaxis=dict(title='Jam Operasi (jam)'),
        yaxis=dict(title='Produksi Ore (ton)'),
        zaxis=dict(title='Residual ε'),
    ),
    annotations=[
        dict(
            showarrow=False,
            text=f"<b>Model Regresi:</b><br>{formula_text}",
            x=0,
            y=1,
            xref='paper',
            yref='paper',
            align='left',
            font=dict(size=14, color='darkred')
        )
    ]
)

fig = go.Figure(data=[scatter_actual, surface_line] + residual_lines + [epsilon_labels], layout=layout)
fig.show();
Data Aktual (Jam Operasi, Produksi, ε)Garis Regresi (Permukaan)Error (ε)Visualisasi Regresi Linear Sederhana: Produksi Ore vs Jam OperasiModel Regresi:Ŷ = 15.63 + 7.27 × Jam_Operasi

11.2 Regresi Linear Berganda

Regresi Linear Berganda (RLB) adalah perluasan dari regresi linear sederhana yang digunakan untuk memodelkan hubungan antara satu variabel dependen (Y) dengan dua atau lebih variabel independen (X1,X2,,Xp). Model ini digunakan untuk memprediksi, mengestimasi, atau menjelaskan variabel respon berdasarkan beberapa prediktor sekaligus.

Regresi Linear Berganda adalah metode statistik yang digunakan untuk memodelkan hubungan antara satu variabel dependen (Y) dengan dua atau lebih variabel independen (X1,X2,,Xp). Model ini memungkinkan analisis pengaruh simultan dari beberapa prediktor terhadap variabel respon ().

11.2.1 Bentuk Umum Model

Persamaan umum RLB:

Y=β0+β1X1+β2X2++βpXp+ε

Keterangan:

  • Y: variabel dependen (respon)
  • X1,X2,,Xp: variabel independen (prediktor)
  • β0: intercept
  • β1,,βp: koefisien regresi
  • ε: galat atau error acak

11.2.2 Tujuan RLB

  • Mengukur pengaruh simultan beberapa variabel bebas terhadap variabel respon.
  • Memprediksi nilai Y berdasarkan nilai-nilai dari X1,X2,...,Xp.
  • Menentukan variabel mana yang paling signifikan dalam mempengaruhi Y ().

11.2.3 Asumsi RLB

  1. Linearitas: Hubungan antara Xi dan Y bersifat linier.
  2. Independensi: Observasi bersifat independen satu sama lain.
  3. Homoskedastisitas: Variansi error konstan di seluruh nilai prediktor.
  4. Normalitas Error: Galat (ε) berdistribusi normal.
  5. Tidak ada multikolinearitas tinggi antar variabel independen ().

11.3 Evaluasi Model RLB

Beberapa ukuran evaluasi yang umum digunakan:

  • R2 (Koefisien Determinasi): Menunjukkan proporsi variabilitas Y yang dijelaskan oleh model.
  • Adjusted R2: Menyesuaikan R2 berdasarkan jumlah prediktor.
  • Uji F: Menguji signifikansi model secara keseluruhan.
  • Uji t: Menguji signifikansi masing-masing koefisien βi ().

11.3.1 Studi Kasus2

Regresi Linear Berganda (3 Variabel) - Kasus Tambang

Sebuah perusahaan tambang ingin mengetahui pengaruh jumlah jam kerja alat berat (X₁), jumlah operator (X₂), dan jumlah solar yang dikonsumsi (X₃) terhadap produksi ore harian (Y).

11.3.2 Data Kasus 2

Data dari 10 hari terakhir tercatat sebagai berikut:

Hari Jam Kerja Alat Berat (X1) Jumlah Operator (X2) Konsumsi Solar (liter) (X3) Produksi Ore (ton) (Y)
1 8 5 120 75
2 7 6 115 72
3 9 5 130 80
4 6 4 110 65
5 10 6 140 85
6 7 5 118 70
7 8 6 125 78
8 5 4 105 60
9 9 6 135 83
10 6 5 112 68

11.3.3 Pertanyaan

  1. Hitunglah model regresi linear berganda: Y=b0+b1X1+b2X2+b3X3

  2. Tentukan nilai dari koefisien regresi b0, b1, b2, dan b3 dengan cara:

    • Menggunakan metode matriks normal equation
    • Atau software seperti Python (opsional)
  3. Tafsirkan masing-masing koefisien regresi secara kontekstual.

  4. Prediksikan produksi ore (Y) jika:

    • X1=8 (jam kerja)
    • X2=5 (jumlah operator)
    • X3=125 (liter solar)

11.3.4 Model Umum

Y=b0+b1X1+b2X2+b3X3

11.3.5 Langkah-langkah

Matriks Persamaan Normal

Gunakan persamaan:

B=(XTX)1XTY

Matriks Koefisien

Hasil dari perhitungan:

b0=19.81b1=3.18b2=1.93b3=0.16

Model Regresi

Y^=19.81+3.18X1+1.93X2+0.16X3

11.3.5.1 Interpretasi Koefisien

  • b1=3.18: Setiap penambahan 1 jam kerja alat berat (X1), produksi ore meningkat sekitar 3.18 ton (dengan asumsi variabel lain konstan).
  • b2=1.93: Setiap penambahan 1 operator, produksi ore meningkat 1.93 ton.
  • b3=0.16: Setiap penambahan 1 liter solar, produksi ore meningkat 0.16 ton.

Prediksi

Jika diketahui:

  • X1=8 (jam kerja)
  • X2=5 (jumlah operator)
  • X3=125 (liter solar)

Maka:

Y^=19.81+3.18(8)+1.93(5)+0.16(125)=19.81+25.44+9.65+20.50=75.46 ton

11.4 Referensi

Bevans, R. (2023). Simple linear regression | an easy introduction & examples. Scribbr. https://www.scribbr.com/statistics/simple-linear-regression/
Chen, G. (2019). Multiple linear regression. San Jose State University; https://www.sjsu.edu/faculty/guangliang.chen/Math261a/Ch3slides-multiple-linear-regression.pdf.
Tranmer, M., & Murphy, J. (2020). Multiple linear regression (2nd edition). University of Manchester. https://hummedia.manchester.ac.uk/institutes/cmist/archive-publications/working-papers/2020/multiple-linear-regression.pdf
University, P. S. (n.d.). 2.1 - what is simple linear regression? | STAT 462. https://online.stat.psu.edu/stat462/node/91/
Weisberg, S. (2011). Applied linear regression (4th ed.). John Wiley & Sons. https://www.stat.purdue.edu/~qfsong/teaching/525/book/Weisberg-Applied-Linear-Regression-Wiley.pdf
Wikipedia contributors. (2025). Simple linear regression. https://en.wikipedia.org/wiki/Simple_linear_regression.