Studi kasus: EDA & imputasi

Menulis Function dan Stored Procedure di SQL Server

Meghan Kwartler

IT Consultant

Masalah bisnis perjalanan taksi

  1. Firma ekuitas privat UE mencari peluang investasi di Transportasi AS.
  2. Berapa rata-rata ongkos per jarak, jumlah perjalanan, & total waktu perjalanan untuk tiap borough NYC per hari dalam seminggu?
  3. Lokasi penjemputan mana di dalam borough yang harus dijadwalkan untuk tiap shift pengemudi?

foto taksi kuning.jpg

Menulis Function dan Stored Procedure di SQL Server

EDA esensial

  • Dataset transaksi terdistribusi bisa memuat skenario tak mungkin akibat kalibrasi pengumpulan data
    • Tanggal di masa depan
    • Tanggal akhir sebelum tanggal mulai
SELECT * 
FROM CapitalBikeShare 
WHERE 
  StartDate > GetDate() 
  OR EndDate > GetDate() 
  OR StartDate > EndDate
Menulis Function dan Stored Procedure di SQL Server

Imputasi data

  • Error pembagian dengan nol saat menghitung Avg Fare/TripDistance
  • EDA menemukan ratusan catatan TaxiRide dengan Trip Distance = 0
  • Metode imputasi data untuk mengatasinya
    • Mean
    • Hot Deck
    • Peniadaan
Menulis Function dan Stored Procedure di SQL Server

Imputasi mean

  • Ganti nilai hilang dengan mean
  • Tidak mengubah nilai mean
  • Meningkatkan korelasi dengan kolom lain
CREATE PROCEDURE dbo.ImputeDurMean 
AS
BEGIN
DECLARE @AvgTripDuration AS float

SELECT @AvgTripDuration = AVG(Duration) 
FROM CapitalBikeShare
WHERE Duration > 0

UPDATE CapitalBikeShare
SET Duration =  @AvgTripDuration
WHERE Duration = 0
END;
Menulis Function dan Stored Procedure di SQL Server

Imputasi Hot Deck

  • Nilai hilang diisi dengan nilai acak
  • Klausa TABLESAMPLE pada klausa FROM
CREATE FUNCTION dbo.GetDurHotDeck()
RETURNS decimal (18,4)
AS BEGIN
RETURN (SELECT TOP 1 Duration
FROM CapitalBikeShare
TABLESAMPLE (1000 rows)
WHERE Duration >0)
END

SELECT StartDate, "TripDuration" = CASE WHEN Duration > 0 THEN Duration ELSE dbo.GetDurHotDeck() END FROM CapitalBikeShare;
Menulis Function dan Stored Procedure di SQL Server
SELECT 
  DATENAME(weekday, StartDate) AS DayofWeek, 
  AVG(Duration) AS 'AvgDuration' 
FROM CapitalBikeShare 
WHERE Duration > 0 
GROUP BY DATENAME(weekday, StartDate) 
ORDER BY AVG(Duration) desc
+-----------+-------------+
| DayofWeek | AvgDuration |
|-----------+-------------|
| Saturday  | 1476        |
| Sunday    | 1391        |
| Monday    |  979        |
| Friday    |  957        |
| Thursday  |  956        |
| Wednesday |  807        |
| Tuesday   |  763        |
+-----------+-------------|
Menulis Function dan Stored Procedure di SQL Server

Giliran Anda!

Menulis Function dan Stored Procedure di SQL Server

Preparing Video For Download...