Semua Tentang Belajar Teknologi Digital Dalam Kehidupan Sehari - Hari

Jumat, 21 Maret 2025

Mengulik Prediksi Statistik : Kesalahan Regresi Linear di Rekor Lari 100m

Seperti kita sudah pahami Regresi Linear adalah metode statistik yang digunakan untuk memodelkan hubungan antara variabel dependen (misalnya, waktu rekor dunia) dan satu atau lebih variabel independen (misalnya, tahun). Tujuannya adalah untuk menemukan "garis yang paling sesuai" yang meminimalkan kesalahan antara nilai yang diprediksi dan nilai aktual.

Anda dapat menggunakan persamaan garis lurus y=mx+b, di mana:

  • y: Variabel dependen (waktu rekor dunia)
  • x: Variabel independen (tahun)
  • m: Kemiringan (laju perubahan waktu rekor dunia per tahun)
  • b: Intersep (waktu rekor dunia yang diprediksi pada tahun 0)
Perhatikan contoh berikut berupa data rekor dunia lari 100 meter pria:

YEAR
TIME (SECONDS)
1912
10.6
1921
10.4
1930
10.3
1936
10.2
1956
10.1
1960
10.0
1968
9.95
1983
9.93
1988
9.92
1991
9.86
1994
9.85
1996
9.84
1999
9.79
2005
9.77
2008
9.72
2009
9.58

 

Dari  kumpulan data di atas, kita bisa menurunkan model regresi linear sebagai berikut:

Buatlah titik-titik data pada grafik dengan tahun pada sumbu x dan waktu rekor dunia pada sumbu y. Pasang model regresi linier pada data tersebut. Ini melibatkan penghitungan kemiringan (m) dan intersep (b). Untuk mempermudah, Anda dapat menggunakan perangkat lunak seperti Excel, Python (dengan scikit-learn), atau bahkan kalkulasi pena dan kertas untuk menemukan garis yang paling sesuai.

Misalnya, dengan menggunakan alat seperti Excel atau Python, Anda mungkin menemukan:


y=−0,01x+29,5


di mana y adalah waktu rekor dunia yang diprediksi, dan x adalah tahun.


Sekarang, kita lanjutkan menggunakan model regresi linier untuk memprediksi:

Berapakah rekor dunia lari 100m pria  pada tahun 2050?
Kapan rekor dunia akan mencapai 0 detik (yang jelas tidak mungkin).


Contoh Prediksi:

Untuk tahun 2050:
y=−0,01(2050)+29,5=9,0 detik.
Untuk saat rekor mencapai 0 detik:
Pecahkan 0=−0,01x+29,5:
x=2950.


Jelas, prediksi ini tidak realistis. Seorang manusia yang berlari 100 meter dalam 0 detik melanggar hukum fisika!

Mari kita bahas mengapa model regresi linier gagal dalam konteks ini?

  • Batasan Biologis dan Fisik: Performa manusia memiliki batasan alami karena biologi, fisiologi, dan fisika. Model linier mengasumsikan peningkatan tak terbatas, yang tidak realistis.
  • Tren Nonlinier: Peningkatan rekor dunia cenderung melambat seiring waktu saat atlet mendekati batas fisik mereka. Model linier tidak dapat menangkap tren perlambatan ini.
  • Objek Luar Biasa dan Kejutan: Terkadang, ada objek luar biasa (misalnya, rekor Usain Bolt 9,58 detik pada tahun 2009). Ini dapat mendistorsi model linier dan membuatnya kurang akurat.

Untuk mengilustrasikan ini, plot residual (selisih antara nilai aktual dan nilai prediksi) dan tunjukkan bagaimana mereka meningkat seiring waktu, yang menunjukkan kerusakan model.



Model Nonlinier

Sebagai tambahan,  model nonlinier (misalnya, peluruhan logaritmik atau eksponensial) yang lebih baik menangkap tren perlambatan dalam peningkatan rekor dunia. Misalnya:

y=aln(x)+b
atau
y=aebx+c

Model-model ini memperhitungkan hasil yang semakin berkurang dan memberikan prediksi yang lebih realistis.

Lalu ada pertanyaan :

  • Mengapa regresi linier gagal memprediksi rekor dunia di masa mendatang secara akurat?
  • Faktor apa yang memengaruhi perkembangan rekor dunia (misalnya, metode pelatihan, teknologi, genetika)?
  • Dapatkah kita memprediksi kapan batas akhir kinerja manusia akan tercapai? Mengapa atau mengapa tidak?
Rangkuman:

  • Regresi linier adalah alat yang ampuh untuk memodelkan hubungan tetapi memiliki keterbatasan.
  • Data dunia nyata sering kali menunjukkan pola kompleks yang tidak dapat ditangkap oleh model linier.
  • Memahami keterbatasan ini sangat penting untuk membuat prediksi yang tepat.


Pemodelan Python :


import matplotlib.pyplot as plt
import numpy as np

# Historical data
years = [1912, 1921, 1930, 1936, 1956, 1960, 1968, 1983, 1988, 1991, 1994, 1996, 1999, 2005, 2008, 2009]
times = [10.6, 10.4, 10.3, 10.2, 10.1, 10.0, 9.95, 9.93, 9.92, 9.86, 9.85, 9.84, 9.79, 9.77, 9.72, 9.58]

# Linear regression model
m = -0.01  # Slope
b = 29.5   # Intercept

# Generate predicted values
future_years = np.linspace(1900, 3000, 10)
predicted_times = m * future_years + b

# Plot
plt.figure(figsize=(10, 6))
plt.scatter(years, times, color='blue', label='Actual World Records')
plt.plot(future_years, predicted_times, color='red', label='Linear Regression Prediction')
plt.axhline(0, color='black', linestyle='--', linewidth=1)  # Horizontal line at y=0
plt.title("Failure of Linear Regression: Men's 100m World Record")
plt.xlabel("Year")
plt.ylabel("World Record Time (seconds)")
plt.legend()
plt.grid(True)
plt.ylim(-1, 12)  # Set y-axis limits to show negative predictions
plt.show()

Terus pemodelan regresi linear lainnya yg benar kayak gimana ? Perhatikan contoh okupansi parkir berikut :


#ini coba parkir
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression

# Step 1: Sample Data (Monthly Parking Lot Occupancy)
months = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]).reshape(-1, 1)  # Month numbers (1 = January, 12 = December)
occupancy = np.array([80, 75, 65, 70, 62, 55, 45, 52, 45, 52, 68, 72])    # Occupancy percentages

# Step 2: Fit Linear Regression Model
model = LinearRegression()
model.fit(months, occupancy)

# Extract slope (m) and intercept (b)
m = model.coef_[0]  # Slope
b = model.intercept_  # Intercept

print(f"Linear Regression Model: y = {m:.2f} * x + {b:.2f}")

# Step 3: Predict Occupancy for Next Year (Months 13 to 24)
next_year_months = np.array(range(13, 25)).reshape(-1, 1)  # Months for the next year
predicted_occupancy = model.predict(next_year_months)

# Print Predictions
for month, pred in zip(range(13, 25), predicted_occupancy):
    print(f"Month {month}: Predicted Occupancy = {pred:.2f}%")

# Step 4: Visualize Results
plt.figure(figsize=(10, 6))

# Plot Historical Data
plt.scatter(months, occupancy, color='blue', label='Historical Data')

# Plot Regression Line for Historical Data
x_range = np.array(range(1, 25)).reshape(-1, 1)  # Extend line to cover both years
y_range = model.predict(x_range)
plt.plot(x_range, y_range, color='red', label='Linear Regression Fit')

# Plot Predictions for Next Year
plt.scatter(next_year_months, predicted_occupancy, color='green', label='Next Year Predictions')

# Add Labels and Legend
plt.title("Parking Lot Occupancy Prediction")
plt.xlabel("Month Number")
plt.ylabel("Occupancy (%)")
plt.axvline(x=12.5, color='gray', linestyle='--', linewidth=1, label='End of First Year')  # Separator between years
plt.legend()
plt.grid(True)
plt.show()

Hasilnya lebih masuk akal seperti berikut :






- powered by qwen ai -
Share:

0 komentar:

Posting Komentar

Kontak Penulis



12179018.png (60×60)
+628155737755

Mail : ahocool@gmail.com

Site View

Categories

555 (8) 7 segmen (3) adc (4) amplifier (2) analog (19) android (14) antares (11) arduino (28) artikel (11) attiny (3) attiny2313 (19) audio (5) baterai (5) blog (1) bluetooth (1) chatgpt (2) cmos (2) crypto (2) dasar (46) digital (11) dimmer (5) display (3) esp8266 (26) euro2020 (13) gcc (1) gis (3) gsm (1) iklan (1) infrared (2) Input Output (3) iot (78) jam (7) jualan (12) kereta api (1) keyboard (1) keypad (3) kios pulsa (2) kit (6) komponen (17) komputer (3) komunikasi (1) kontrol (8) lain-lain (8) lcd (2) led (14) led matrix (6) line tracer (1) lm35 (1) lora (11) lorawan (2) MATV (1) memory (1) metal detector (4) microcontroller (70) micropython (6) mikrokontroler (2) mikrokontroller (14) mikrotik (5) modbus (9) mqtt (3) ninmedia (5) ntp (1) paket belajar (19) palang pintu otomatis (1) parabola (88) pcb (2) power (1) praktek (2) project (33) proyek (1) python (9) radio (28) raspberry pi (9) remote (1) revisi (1) rfid (1) robot (1) rpm (2) rs232 (1) script break down (3) sdcard (3) sensor (2) sharing (3) signage (1) sinyal (1) sms (6) software (18) solar (1) solusi (1) statistik (5) tachometer (2) technology (1) teknologi (2) telegram (2) telepon (9) televisi (167) television (28) telkomiot (5) transistor (2) troubleshoot (3) tulisan (94) tutorial (108) tv digital (6) tvri (2) unesa (8) vu meter (2) vumeter (2) wav player (3) wayang (1) wifi (3) yolo (9)

Arsip Blog

Diskusi


kaskus
Forum Hobby Elektronika