Menu
CoddyTech

עיכובים ברכבות

חלק מהיחידה סטטיסטיקה ללמידת מכונה במסלול ה-Machine Learning של Coddy. שיעור 61 מתוך 64.

שני קווי רכבת פרבריים, Maple ו-Birch, חולקים תחנה. במשך 24 ימים תועד בכמה איחרה רכבת שעת העומס של כל קו, בקובץ trains.csv:

תרשימי קופסה של האיחורים בשני הקווים: הקופסה של Maple ממוקמת סביב 15 דקות, עם נקודה ב-91 המסומנת ככשל באיתות ונקודה נמוכה ב-4; הקופסה של Birch נמוכה יותר, סביב 11, עם נקודות ב-63 וב-74 המסומנות ככשלים באיתות

שלוש תקלות באיתות עיכבו רכבות בשעה או יותר: נתון אמיתי, אבל גדול מספיק כדי להטות כל ממוצע.

המנהל שואל: האם Maple באמת מאוחרת יותר, או שהפער יכול להיות מקרי? רסנו את הערכים הקיצוניים, ואז תנו לערבוב להכריע.

challenge icon

אתגר

קשה

התוכנית קוראת את גורם הגבול k; 1.5 הוא הכלל של תרשים הקופסה.

  1. תחמו את כל זמני העיכוב בגבולות Q1 - k * IQR ו-Q3 + k * IQR, ספרו את הערכים החריגים, ואז הגבילו כל זמן עיכוב באמצעות np.clip.
  2. הדפיסו את ממוצע זמני העיכוב המוגבלים של כל קו ואת ההפרש, Maple פחות Birch.
  3. ערבבו 2000 פעמים: איחדו תחילה את זמני העיכוב המוגבלים של Maple ואז את אלה של Birch, השתמשו ב-rng.permutation אחד בכל סבב, וחשבו את 24 הערכים הראשונים כאילו היו של Maple.
  4. הדפיסו את ערך ה-p, בלי להתחשב בסימן, ואת המסקנה: unlikely to be chance אם הוא קטן מ-0.05, אחרת could be chance.

עגלו ל-2 ספרות אחרי הנקודה, ואת p ל-3. עבור k = 2:

Fences: 0.25 to 26.5 (3 outliers)
Maple mean: 15.27
Birch mean: 12.21
Difference: 3.06
p-value: 0.03
Verdict: unlikely to be chance

האם המסקנה תקפה גם עבור k מחמיר יותר או מקל יותר?

נסו בעצמכם

import numpy as np
import pandas as pd

k = float(input())
df = pd.read_csv("trains.csv")
delays = df["delay_min"]

# אל תשנו את השורה שלמטה
rng = np.random.default_rng(5)

# כתבו את הקוד שלכם למטה
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה סטטיסטיקה ללמידת מכונה

תרגלו בעצמכם: קומפיילר Python אונליין