Model statistik apa yang harus saya gunakan untuk menganalisis kemungkinan bahwa satu peristiwa memengaruhi data longitudinal


19

Saya mencoba menemukan formula, metode, atau model yang akan digunakan untuk menganalisis kemungkinan bahwa peristiwa tertentu mempengaruhi beberapa data longitudinal. Saya mengalami kesulitan mencari tahu apa yang harus dicari di Google.

Berikut ini sebuah contoh skenario:

Image Anda memiliki bisnis yang memiliki rata-rata 100 pelanggan berjalan setiap hari. Suatu hari, Anda memutuskan untuk menambah jumlah pelanggan yang datang ke toko Anda setiap hari, sehingga Anda melakukan aksi gila di luar toko Anda untuk mendapatkan perhatian. Selama minggu depan, Anda melihat rata-rata 125 pelanggan sehari.

Selama beberapa bulan ke depan, Anda kembali memutuskan bahwa Anda ingin mendapatkan lebih banyak bisnis, dan mungkin mempertahankannya sedikit lebih lama, jadi Anda mencoba beberapa hal acak lainnya untuk mendapatkan lebih banyak pelanggan di toko Anda. Sayangnya, Anda bukan pemasar terbaik, dan beberapa taktik Anda memiliki sedikit pengaruh atau tidak, dan yang lain bahkan memiliki dampak negatif.

Metodologi apa yang bisa saya gunakan untuk menentukan probabilitas bahwa setiap peristiwa individu berdampak positif atau negatif terhadap jumlah pelanggan yang datang? Saya menyadari sepenuhnya bahwa korelasi tidak selalu sama dengan penyebab, tetapi metode apa yang dapat saya gunakan untuk menentukan kemungkinan kenaikan atau penurunan perjalanan bisnis harian Anda di klien setelah peristiwa tertentu?

Saya tidak tertarik menganalisis apakah ada atau tidak ada korelasi antara upaya Anda untuk meningkatkan jumlah pengunjung yang masuk, tetapi apakah ada satu peristiwa, terlepas dari yang lainnya, berdampak.

Saya menyadari bahwa contoh ini agak dibuat-buat dan disederhanakan, jadi saya juga akan memberi Anda deskripsi singkat tentang data aktual yang saya gunakan:

Saya berusaha menentukan dampak yang dimiliki agen pemasaran tertentu di situs web klien mereka ketika mereka mempublikasikan konten baru, melakukan kampanye media sosial, dll. Untuk satu agensi tertentu, mereka mungkin memiliki 1 hingga 500 klien. Setiap klien memiliki situs web dengan ukuran mulai dari 5 halaman hingga lebih dari 1 juta. Selama 5 tahun terakhir, masing-masing agensi telah mencatat semua pekerjaan mereka untuk setiap klien, termasuk jenis pekerjaan yang dilakukan, jumlah halaman web di situs web yang dipengaruhi, jumlah jam yang dihabiskan, dll.

Dengan menggunakan data di atas, yang telah saya kumpulkan ke dalam gudang data (ditempatkan di sekelompok skema bintang / kepingan salju), saya perlu menentukan seberapa besar kemungkinan setiap pekerjaan (setiap peristiwa dalam waktu) berdampak pada lalu lintas yang mengenai setiap / semua halaman yang dipengaruhi oleh suatu karya tertentu. Saya telah membuat model untuk 40 jenis konten yang ditemukan di situs web yang menggambarkan pola lalu lintas khas halaman dengan jenis konten yang mungkin dialami dari tanggal peluncuran hingga sekarang. Dinormalisasi relatif terhadap model yang sesuai, saya perlu menentukan jumlah pengunjung naik atau turun tertinggi dan terendah yang diterima sebagai hasil dari karya tertentu.

Sementara saya memiliki pengalaman dengan analisis data dasar (regresi linier dan berganda, korelasi, dll), saya bingung bagaimana cara memecahkan masalah ini. Sedangkan di masa lalu saya biasanya menganalisis data dengan beberapa pengukuran untuk sumbu tertentu (misalnya suhu vs haus vs hewan dan menentukan dampak pada kehausan yang meningkat di seluruh hewan), saya merasa bahwa di atas, saya mencoba menganalisis dampak dari satu peristiwa di beberapa titik waktu untuk dataset longitudinal yang non-linear, tetapi dapat diprediksi (atau setidaknya mampu model). Saya bingung :(

Bantuan, tips, petunjuk, rekomendasi, atau arahan akan sangat membantu dan saya akan sangat berterima kasih!


Ada seluruh kelas analisis statistik yang ditujukan untuk memodelkan data longitudinal. Jika Anda telah mengulangi tindakan pada subjek yang sama maka model campuran sering digunakan sebagai bagian dari seni dalam ilmu sosial untuk menentukan apakah ada dampak intervensi. Jika Anda memiliki deret waktu, hanya sesuatu seperti Arima yang dapat digunakan.
B_Miner

Pendekatan RDD mungkin juga berguna bagi Anda: austinclemens.com/blog/2014/06/08/436
B_Miner

Jawaban:


11

Sebagai catatan, saya pikir ini adalah jenis pertanyaan yang sempurna untuk ilmu data Stack Exchange. Saya harap kita mendapatkan banyak contoh masalah data dunia nyata dan beberapa perspektif tentang cara terbaik untuk menyelesaikannya.

Saya mendorong Anda untuk tidak menggunakan nilai-p karena nilai itu bisa sangat menyesatkan ( 1 , 2 ). Pendekatan saya bergantung pada Anda dapat meringkas lalu lintas pada halaman tertentu sebelum dan setelah beberapa intervensi. Yang Anda pedulikan adalah perbedaan tingkat sebelum dan sesudah intervensi. Yaitu, bagaimana jumlah hit per hari berubah? Di bawah ini, saya menjelaskan pendekatan tikaman pertama dengan beberapa contoh data disimulasikan. Saya kemudian akan menjelaskan satu perangkap potensial (dan apa yang akan saya lakukan).

Pertama, mari kita pikirkan satu halaman sebelum dan sesudah intervensi. Anggap intervensi meningkatkan hit per hari sekitar 15%:

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

def simulate_data(true_diff=0):
    #First choose a number of days between [1, 1000] before the intervention
    num_before = np.random.randint(1, 1001)

    #Next choose a number of days between [1, 1000] after the intervention
    num_after = np.random.randint(1, 1001)

    #Next choose a rate for before the intervention. How many views per day on average?
    rate_before = np.random.randint(50, 151)

    #The intervention causes a `true_diff` increase on average (but is also random)
    rate_after = np.random.normal(1 + true_diff, .1) * rate_before

    #Simulate viewers per day:
    vpd_before = np.random.poisson(rate_before, size=num_before)
    vpd_after = np.random.poisson(rate_after, size=num_after)

    return vpd_before, vpd_after

vpd_before, vpd_after = simulate_data(.15)

plt.hist(vpd_before, histtype="step", bins=20, normed=True, lw=2)
plt.hist(vpd_after, histtype="step", bins=20, normed=True, lw=2)
plt.legend(("before", "after"))
plt.title("Views per day before and after intervention")
plt.xlabel("Views per day")
plt.ylabel("Frequency")
plt.show()

Distribusi hit per hari sebelum dan sesudah intervensi

Kita dapat dengan jelas melihat bahwa intervensi meningkatkan jumlah hit per hari, rata-rata. Tetapi untuk mengukur perbedaan dalam tingkat, kita harus menggunakan intervensi satu perusahaan untuk beberapa halaman. Karena kurs yang mendasarinya akan berbeda untuk setiap halaman, kami harus menghitung persentase perubahan dalam tarif (sekali lagi, kurs di sini adalah hit per hari).

Sekarang, anggap kita memiliki data untuk n = 100halaman, yang masing-masing menerima intervensi dari perusahaan yang sama. Untuk mendapatkan persentase perbedaan yang kami ambil (rata-rata (hit per hari sebelumnya) - rata-rata (hit per hari setelah)) / rata-rata (hit per hari sebelumnya):

n = 100

pct_diff = np.zeros(n)

for i in xrange(n):
    vpd_before, vpd_after = simulate_data(.15)
    # % difference. Note: this is the thing we want to infer
    pct_diff[i] = (vpd_after.mean() - vpd_before.mean()) / vpd_before.mean()

plt.hist(pct_diff)
plt.title("Distribution of percent change")
plt.xlabel("Percent change")
plt.ylabel("Frequency")
plt.show()

Distribusi perubahan persen

Sekarang kami memiliki distribusi parameter minat kami! Kami dapat meminta hasil ini dengan berbagai cara. Misalnya, kita mungkin ingin mengetahui mode, atau (perkiraan) nilai yang paling mungkin untuk perubahan persen ini:

def mode_continuous(x, num_bins=None):
    if num_bins is None:
        counts, bins = np.histogram(x)
    else:
        counts, bins = np.histogram(x, bins=num_bins)

    ndx = np.argmax(counts)
    return bins[ndx:(ndx+1)].mean()

mode_continuous(pct_diff, 20)

Ketika saya menjalankan ini, saya mendapat 0,126, yang tidak buruk, mengingat persen perubahan kami yang sebenarnya adalah 15. Kami juga dapat melihat jumlah perubahan positif, yang memperkirakan probabilitas bahwa intervensi perusahaan tertentu meningkatkan hit per hari:

(pct_diff > 0).mean()

Di sini, hasil saya adalah 0,93, jadi kita dapat mengatakan ada peluang yang cukup bagus bahwa perusahaan ini efektif.

Akhirnya, jebakan potensial: Setiap halaman mungkin memiliki beberapa tren mendasar yang mungkin harus Anda perhitungkan. Artinya, bahkan tanpa intervensi, hit per hari dapat meningkat. Untuk memperhitungkan ini, saya akan memperkirakan regresi linier sederhana di mana variabel hasil adalah hit per hari dan variabel independen adalah hari (mulai pada hari = 0 dan hanya kenaikan untuk semua hari dalam sampel Anda). Kemudian kurangi estimasi, y_hat, dari setiap jumlah klik per hari untuk membatalkan tren data Anda. Kemudian Anda dapat melakukan prosedur di atas dan yakinlah bahwa selisih persen positif bukan karena tren yang mendasarinya. Tentu saja, trennya mungkin tidak linear, jadi gunakan kebijaksanaan! Semoga berhasil!


Terima kasih banyak atas penjelasannya! Saya sangat menghargai itu. Antara Anda dan neone4373 saya bisa menyelesaikan masalah! Komunitas batu ini! Terima kasih!
Peter Kirby

10

Kembali ke masa analis data saya, jenis masalah ini cukup tipikal. Pada dasarnya, semua orang dalam pemasaran akan datang dengan ide gila bahwa dijual ke atasan sebagai peristiwa tunggal yang akan meningkatkan KPI sebesar 2000%. Para petinggi akan menyetujui mereka dan kemudian mereka akan memulai "ujian" mereka. Hasilnya akan kembali, dan manajemen akan membuangnya pada analis data untuk menentukan apa yang berhasil dan siapa yang melakukannya.

Jawaban singkatnya adalah Anda benar-benar tidak tahu apakah itu tidak dijalankan sebagai tes gaya A / B acak pada periode waktu yang sama. Tetapi saya sangat menyadari betapa tidak sempurnanya jawaban itu, terutama jika fakta bahwa jawaban murni tidak ada tidak relevan dengan urgensi keputusan bisnis di masa depan. Berikut adalah beberapa teknik yang akan saya gunakan untuk menyelamatkan analisis dalam situasi ini, ingatlah ini lebih merupakan seni daripada ilmu.

Pegangan

Pegangan adalah sesuatu yang ada dalam data yang dapat Anda pegang. Dari apa yang Anda katakan kepada saya dalam situasi Anda, Anda memiliki banyak info tentang siapa agen pemasaran itu, ketika mereka mencoba taktik, dan ke situs mana mereka menerapkannya. Ini adalah titik awal Anda dan informasi seperti ini akan menjadi batu penjuru analisis Anda.

Metodologi

Metodologi ini mungkin akan memiliki dampak terkuat di mana agensi diberi kredit untuk setiap dan semua keuntungan sehingga Anda akan perlu memastikan bahwa itu jelas menguraikan dan semua pemegang saham setuju bahwa itu masuk akal. Jika Anda tidak dapat melakukannya, akan sulit bagi orang untuk mempercayai analisis Anda.

Contohnya adalah konversi. Katakanlah departemen pemasaran membeli beberapa arahan dan mereka tiba di halaman arahan kami, kami akan melacaknya selama 3 hari, jika mereka melakukan pembelian dalam waktu itu kami akan menghitungnya sebagai telah dikonversi. Mengapa 3 hari, mengapa tidak 5 atau 1? Itu tidak penting selama semua orang setuju, Anda sekarang memiliki definisi yang bisa Anda buat.

Perbandingan

Dalam kondisi ideal, Anda akan memiliki tes A / B yang bagus untuk membuktikan hubungan yang pasti, saya akan berasumsi bahwa Anda kekurangan itu, masih, Anda dapat belajar sesuatu dari perbandingan sederhana seperti data. Ketika perusahaan mencoba untuk menentukan kemanjuran iklan radio, mereka akan sering menjalankan iklan pada bulan-bulan offset di pasar yang sama, atau selama beberapa bulan di satu pasar dan membandingkannya dengan hasil di pasar yang terpisah tetapi serupa. Ini tidak cocok untuk ilmu pengetahuan, tetapi bahkan dengan semua kebisingan itu hasil yang kuat hampir selalu terlihat.

Saya akan menggabungkan ini dalam kasus Anda untuk menentukan berapa lama acara diberikan untuk mendaftarkan efek. Setelah Anda memiliki data dari periode waktu menjalankannya terhadap prediksi lalu lintas keluar model Anda, pertumbuhan minggu ke minggu, bulan ke bulan dll. Yang, kemudian dapat memungkinkan perbandingan yang berarti antara agen, dan lintas periode waktu.

Pragmatisme

Cita-cita adalah untuk dapat memberikan pemahaman mendalam tentang sebab dan akibat, tetapi mungkin tidak realistis. Karena faktor luar yang berantakan membuat analisis Anda, Anda akan terus-menerus menghadapi pertanyaan berulang-ulang: Apakah peristiwa ini meningkatkan volume / penjualan / klik klik, atau apakah melakukan apa pun memiliki efek yang sama? Saran terbaik yang dapat saya berikan untuk ini adalah menetapkan tujuan yang sangat realistis untuk apa yang ingin Anda ukur. Titik awal yang baik adalah, dalam metodologi yang Anda miliki, peristiwa mana yang memiliki dampak terbesar. Setelah Anda membuka aperture dari sana.

Ringkasan

Setelah Anda mempertimbangkan semua aspek ini, Anda dapat membangun solusi umum yang kemudian dapat diotomatisasi. Keuntungan merancang solusi Anda dengan cara ini adalah bahwa logika bisnis sudah ada di dalamnya. Ini akan membuat hasil Anda jauh lebih mudah didekati dan intuitif bagi para pemimpin bisnis non-teknis.


@ 1 untuk orang pemasaran gila. Bekerja dalam riset pasar dan pemelintiran yang dilakukan pada statistik yang buruk membuat saya sedih ...
Christian Sauer

2

Sunting: Peringatan, saya meninggalkan pesan saya tetapi jawaban saya tampaknya salah, silakan periksa komentar di bawah!

Saya bukan ahli tapi saya kira masalah utamanya adalah menjawab pertanyaan ini:

Apakah ada / ada peristiwa yang memengaruhi jumlah hit pada hari tertentu?

Tetapi saya tidak tahu bagaimana memperlakukan banyak acara, jadi saya akan mencoba menjawab pertanyaan ini:

  • Apakah peristiwa X memengaruhi jumlah klik pada hari tertentu?

Yang dapat dijawab dengan menggunakan pengujian hipotesis dengan nilai-p (apa yang dilakukan ilmuwan untuk mengevaluasi misalnya apakah obat mempengaruhi penyakit atau tidak).

Dengan menggunakan nilai-p, Anda dapat menentukan apakah jumlah klik pada hari tertentu hanyalah acak dan dapat diterima dalam keadaan normal atau bahwa mereka harus sesuai dengan perubahan dalam model Anda.

Anda dapat membaca lebih lanjut tentang p-values ​​di Open Intro to Statistics Book , saya sebenarnya sudah mempelajarinya dari sana.

Kemudian, bagian lain dari masalah adalah bagaimana mengidentifikasi acara Anda dan menghitung parameter yang diperlukan untuk menjawab pertanyaan Anda (rata-rata / median, varians, dll.) Dan juga bagaimana menjaga agar tetap up-to-date dan berfungsi.


1

Beberapa tahun yang lalu (2015), Google menerbitkan sebuah makalah penelitian tentang efek peristiwa tertentu dalam model deret waktu. Anda dapat membaca lebih detail di sini. Menyimpulkan dampak kausal menggunakan model deret waktu struktural Bayesian .

Di halaman GitHub ini , Anda dapat menemukan contoh terperinci dan deskripsi cara kerjanya. Pendeknya,

Paket R ini menerapkan pendekatan untuk memperkirakan efek kausal dari intervensi yang dirancang pada serangkaian waktu. Misalnya, berapa banyak klik harian tambahan yang dihasilkan oleh kampanye iklan? Menjawab pertanyaan seperti ini bisa sulit ketika eksperimen acak tidak tersedia.

Anda melatih model Anda dengan data pra-peristiwa dan data setelah peristiwa dan Anda mendapatkan plot seperti ini

masukkan deskripsi gambar di sini

Panel pertama menunjukkan data dan prediksi kontrafaktual untuk periode pasca perawatan. Panel kedua menunjukkan perbedaan antara data yang diamati dan prediksi kontrafaktual. Ini adalah efek kausal pointwise, seperti yang diperkirakan oleh model. Panel ketiga menambahkan kontribusi pointwise dari panel kedua, menghasilkan plot efek kumulatif intervensi.

Menjalankan yang berikut ini summary(impact) , Anda mendapatkan ringkasan dan perkiraan dampak peristiwa tersebut dalam data deret waktu Anda.

Pustaka yang sama telah porting ke Python juga. Sebagai contoh di sini

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.