Tek bir olayın boyuna verileri etkileme olasılığını analiz etmek için hangi istatistiksel modeli kullanmalıyım?


19

Belirli bir olayın bazı boyuna verileri etkileme olasılığını analiz etmek için kullanılacak bir formül, yöntem veya model bulmaya çalışıyorum. Google'da ne arayacağımı bulmakta zorlanıyorum.

Örnek bir senaryo:

Her gün ortalama 100 gömme müşteriye sahip bir işletmenizin olduğunu görün. Bir gün, mağazanıza her gün gelen müşteri sayısını artırmak istediğinize karar verirsiniz, böylece dikkat çekmek için mağazanızın dışına çılgın bir dublör çekersiniz. Önümüzdeki hafta, günde ortalama 125 müşteri görüyorsunuz.

Önümüzdeki birkaç ay boyunca, tekrar biraz daha fazla iş almak ve belki de biraz daha uzun süre devam etmek istediğinize karar veriyorsunuz, böylece mağazanızda daha fazla müşteri elde etmek için başka rastgele şeyler deniyorsunuz. Ne yazık ki, en iyi pazarlamacı değilsiniz ve bazı taktiklerinizin etkisi çok az veya hiç değil, hatta bazıları olumsuz bir etkiye sahip.

Tek bir olayın içeri giren müşteri sayısını olumlu veya olumsuz etkileme olasılığını belirlemek için hangi metodolojiyi kullanabilirim? Korelasyonun nedensellikle eşit olması gerekmediğinin tamamen farkındayım, ancak belirli bir etkinliği takiben müşterinizin günlük yürüyüşündeki olası artışı veya azalmayı belirlemek için hangi yöntemleri kullanabilirim?

Alıştırma müşteri sayısını artırma girişimleriniz arasında bir ilişki olup olmadığını analiz etmekle ilgilenmiyorum, aksine tek bir olayın diğerlerinden bağımsız olarak etkili olup olmadığını analiz etmekle ilgilenmiyorum.

Bu örneğin oldukça basit ve basit olduğunu anlıyorum, bu yüzden size kullandığım gerçek verilerin kısa bir açıklamasını da vereceğim:

Yeni bir içerik yayınlarken, sosyal medya kampanyaları vb. Gerçekleştirirken belirli bir pazarlama ajansının müşterilerinin web sitesi üzerindeki etkisini belirlemeye çalışıyorum. Belirli bir ajans için 1 ila 500 müşterisi olabilir. Her müşterinin boyutu 5 sayfadan 1 milyondan fazla olan web sitelerine sahiptir. Son 5 yıl boyunca, her ajans, yapılan iş türü, etkilenen bir web sitesindeki web sayfası sayısı, geçirilen saat sayısı vb.

Bir veri ambarına (bir grup yıldız / kar tanesi şemasına yerleştirilmiş) monte ettiğim yukarıdaki verileri kullanarak, herhangi bir iş parçasının (zaman içindeki herhangi bir olay) üzerinde ne kadar etkili olabileceğini belirlemem gerekiyor belirli bir iş parçasından etkilenen tüm sayfalara / trafiğe çarpan trafik. Bir web sitesinde, söz konusu içerik türüne sahip bir sayfanın lansman tarihinden bugüne kadar yaşayabileceği tipik trafik modelini tanımlayan 40 farklı içerik türü için modeller oluşturdum. Uygun modele göre normalize edilmiş, belirli bir işin sonucu olarak belirli bir sayfanın aldığı en yüksek ve en düşük sayıda ziyaretçi sayısını azaltmam gerekiyor.

Temel veri analizi (doğrusal ve çoklu regresyon, korelasyon, vb.) İle ilgili deneyimim olsa da, bu sorunun çözümünde nasıl yaklaşılacağımı yitirdim. Geçmişte, belirli bir eksen için tipik olarak birden fazla ölçümle verileri analiz ettiğimde (örneğin, hayvana karşı susuzluğa karşı sıcaklık ve hayvanlarda artan ılımanın susuzluk üzerindeki etkisini belirledim), yukarıda, etkiyi analiz etmeye çalıştığımı hissediyorum. doğrusal olmayan, ancak öngörülebilir (veya en azından modele uygun), uzunlamasına bir veri kümesi için belirli bir zamanda tek bir olay. Çok üzüldüm :(

Herhangi bir yardım, ipuçları, işaretçiler, öneriler veya talimatlar son derece yararlı olacaktır ve sonsuza dek minettar olurum!


Boyuna verilerin modellenmesine yönelik bir grup istatistiksel analitik vardır. Aynı konularda tekrarlanan önlemler aldıysanız, bir müdahalenin etkisi olup olmadığını belirlemek için sosyal bilimlerde en son teknoloji olarak karma modeller kullanılır. Bir zaman diziniz varsa, sadece Arima gibi bir şey kullanılabilir.
B_Miner

Bir RDD yaklaşımı sizin için de yararlı olabilir: austinclemens.com/blog/2014/06/08/436
B_Miner

Yanıtlar:


11

Kayıt için, bu veri bilimi Stack Exchange için mükemmel bir soru türü olduğunu düşünüyorum. Umarım bir sürü gerçek dünya veri problemi örneği ve bunları en iyi nasıl çözeceğimize dair birkaç perspektif elde ederiz.

Sana teşvik edecek değil onlar oldukça (yanıltıcı olabildiğince p-değerleri kullanmak 1 , 2 ). Yaklaşımım, belirli bir sayfadaki trafiği bazı müdahalelerden önce ve sonra özetleyebilmenize bağlı. Önem verdiğiniz şey, müdahaleden önceki ve sonraki orandaki farktır . Yani, günlük isabet sayısı nasıl değişir? Aşağıda, bazı simüle edilmiş örnek verilerle ilk bıçak yaklaşımını açıklıyorum. Daha sonra potansiyel bir tuzağı (ve bu konuda ne yapacağımı) açıklayacağım.

İlk olarak, müdahaleden önce ve sonra bir sayfa düşünelim. Müdahale günlük isabet sayısını yaklaşık% 15 artırıyormuş gibi yap:

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()

Müdahalelerin müdahaleden önce ve sonra günlük dağılımı

Müdahalenin günde ortalama isabet sayısını artırdığını açıkça görebiliyoruz. Ancak oranlardaki farkı ölçmek için, bir şirketin birden fazla sayfa için müdahalesini kullanmalıyız. Temel oran her sayfa için farklı olacağından, orandaki yüzde değişikliğini hesaplamalıyız (yine, buradaki oran günlük isabettir).

Şimdi, n = 100her biri aynı şirketten müdahale alan sayfalara ilişkin verilerimiz olduğunu varsayalım. Aldığımız yüzde farkını elde etmek için (ortalama (önceki gün başına isabet) - ortalama (sonraki gün isabet)) / ortalama (önceki gün isabet):

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()

Yüzde değişiminin dağılımı

Şimdi faiz parametremizin dağılımına sahibiz! Bu sonucu farklı şekillerde sorgulayabiliriz. Örneğin, bu yüzde değişikliği için en olası değerin modunu veya (yaklaşık olarak) değerini bilmek isteyebiliriz:

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)

Bunu çalıştırdığımda, gerçek yüzde değişimimiz 15 göz önüne alındığında, kötü olmayan 0.126 aldım. Ayrıca, belirli bir şirketin müdahalesinin günlük isabet oranını iyileştirme olasılığını tahmin eden olumlu değişikliklerin sayısını da görebiliriz:

(pct_diff > 0).mean()

Burada, sonucum 0.93, bu yüzden bu şirketin etkili olması için oldukça iyi bir şans olduğunu söyleyebiliriz.

Son olarak, potansiyel bir tuzak: Her sayfanın muhtemelen hesaba katmanız gereken bazı eğilimleri vardır. Yani, müdahale olmadan bile, günlük isabetler artabilir. Bunu hesaba katmak için, sonuç değişkeninin günlük isabet olduğu ve bağımsız değişkenin gün olduğu basit bir doğrusal regresyon tahmin ediyorum (gün = 0'dan başlayın ve sadece numunenizdeki tüm günler için artar). Ardından, verilerinizin eğilimini kaldırmak için günlük her isabet sayısından tahmini y_hat değerini çıkarın. O zaman yukarıdaki prosedürü yapabilir ve pozitif bir yüzde farkının altta yatan eğilimden kaynaklanmadığından emin olabilirsiniz. Tabii ki, eğilim doğrusal olmayabilir, bu yüzden takdir kullanın! İyi şanslar!


Böyle kapsamlı bir açıklama için çok teşekkür ederim! Gerçekten onu takdir ederim. Kendiniz ve neone4373 arasında sorunu çözebildim! Bu topluluk sallanıyor! Teşekkürler!
Peter Kirby

10

Veri analisti günlerimde bu tür bir sorun oldukça tipikti. Temel olarak, pazarlamadaki herkes, KPI'ları% 2000 artıracak tek etkinlik olarak daha yüksek seviyelere satıldığına dair çılgın bir fikir ortaya çıkaracaktı. Yüksek yükselişler onları onaylar ve sonra "testlerine" başlarlar. Sonuçlar geri dönecek ve yönetim neyin işe yaradığını ve kimin yaptığını belirlemek için veri analistlerine dökecekti.

Kısa cevap, gerçekten zaman aralıklarında rastgele bir A / B tarzı testi olarak çalıştırılmadığını gerçekten bilemezsiniz. Ancak bu cevabın ne kadar eksik olduğunun çok farkındayım, özellikle de saf bir cevabın olmaması, gelecekteki iş kararlarının aciliyeti ile alakasızsa. İşte bu durumda analizi kurtarmak için kullanacağım bazı teknikler, unutmayın ki bu bir bilimden çok bir sanattır.

Kolları

Tanıtıcı, üzerinde tutabileceğiniz verilerde bulunan bir şeydir. Durumunuzda bana ne söylediğinizden, pazarlama ajansının kim olduğu, bir taktiği denediklerinde ve hangi siteye başvurdukları hakkında çok fazla bilginiz var. Bunlar sizin başlangıç ​​noktanızdır ve bunun gibi bilgiler analizinizin köşe taşı olacaktır.

metodoloji

Metodoloji muhtemelen hangi ajansların herhangi bir ve tüm kazanımlar için kredi verildiği üzerinde en güçlü etkiyi yaratacaktır, bu yüzden açıkça ana hatlarının açık olduğundan ve tüm paydaşların mantıklı olduğunu kabul etmelisiniz. Bunu yapamazsanız, insanların analizinize güvenmesi zor olacaktır.

Buna örnek olarak dönüşümler verilebilir. Pazarlama departmanının bazı potansiyel müşteriler satın aldığını ve açılış sayfamıza ulaştıklarını, 3 gün boyunca izleyeceğimizi, bu süre içinde bir satın alma işlemi gerçekleştirdiklerinde dönüştürülmüş olarak sayacağımızı varsayalım. Neden 3 gün, neden 5 veya 1 değil? Bu herkes kabul ettiği sürece önemli değil, artık geliştirebileceğiniz bir tanımınız var.

Karşılaştırmalar

İdeal olarak, kesin bir ilişkiyi kanıtlamak için güzel bir A / B testiniz olurdu, bunlarda yetersiz kaldığınızı varsayacağım, yine de, benzer verilerin basit bir karşılaştırmasından bir şeyler öğrenebilirsiniz. Şirketler radyo reklamcılığının etkinliğini belirlemeye çalışırken, genellikle aynı pazardaki ofset aylarda veya bir pazarda birkaç ay boyunca reklam yayınlayacak ve bunu ayrı ancak benzer bir pazardaki sonuçlarla karşılaştıracaklardır. Bilim için geçmez, ancak tüm bu gürültüde bile güçlü sonuçlar neredeyse her zaman fark edilir olacaktır.

Bir etkiyi kaydetmek için bir olayın ne kadar süre verildiğini belirlemek için bunları sizin durumunuzda birleştiririm. Bu döneme ait verileri aldıktan sonra, modellenmiş trafik tahmininize, haftadan haftaya büyüme, aydan aya vb. Karşı çalıştırın. Bu, daha sonra ajanslar arasında ve zaman periyotları arasında anlamlı bir karşılaştırmaya izin verebilir.

pragmatizm

İstek, neden ve sonuç hakkında derin bir anlayış sağlayabilmektir, ancak muhtemelen gerçekçi değildir. Dış etkenlerin analizinizi ne kadar karmaşık hale getirdiği nedeniyle, soruyu sürekli olarak tekrar tekrar gözden geçireceksiniz: Bu olay hacim / satış / tıklama sayısını artırdı mı, yoksa herhangi bir şey yapmak da aynı etkiyi yaratır mı? Bunun için verebileceğim en iyi tavsiye, ölçmek istediğiniz şey için çok gerçekçi hedefler belirlemektir. İyi bir başlangıç ​​noktası, sahip olduğunuz metodoloji dahilinde hangi olayın en büyük etkiye sahip olduğudur. Bir kez diyaframı oradan açtığında.

özet

Tüm bu yönleri ortaya çıkardıktan sonra, otomatik hale getirilebilecek genel bir çözüm oluşturmaya devam edebilirsiniz. Çözümünüzü bu şekilde tasarlamanın avantajı, iş mantığının zaten yerleşik olmasıdır. Bu, sonuçlarınızı teknik olmayan iş liderlerine daha ulaşılabilir ve sezgisel hale getirecektir.


@ Çılgın pazarlama çocuklar için 1. Pazar araştırması ve kötü istatistiklere yapılan bükümler beni üzüyor ...
Christian Sauer

2

Düzenleme: Uyarı, mesajımı bırakıyorum ama cevabım yanlış görünüyor, lütfen aşağıdaki yorumu kontrol edin!

Ben uzman değilim ama sanırım asıl sorun şu soruyu cevaplamak:

Herhangi bir etkinlik, belirli bir günde isabet sayısını etkiledi mi?

Ama birden fazla olayı nasıl tedavi edeceğimi bilmiyorum, bu yüzden bu soruya cevap vermeye çalışacağım:

  • X olayı belirli bir günde gerçekleşen isabet sayısını etkiliyor mu?

Bu, p-değerleri ile hipotez testi kullanılarak cevaplanabilir (örneğin bir ilacın bir hastalığı etkileyip etkilemediğini değerlendirmek için bilim insanının ne yaptığını).

P-değerlerini kullanarak, belirli bir günde gerçekleşen isabet sayısının normal şartlar altında rastgele ve kabul edilebilir olup olmadığını veya modelinizdeki bir değişikliğe karşılık gelmesi gerektiğini belirleyebilirsiniz.

P-değerleri hakkında daha fazla bilgiyi İstatistiklere Açık Giriş Kitabında okuyabilirsiniz , aslında onları oradan öğreniyorum.

Daha sonra, sorunun diğer kısımları olaylarınızı nasıl belirleyeceğiniz ve sorunuzu cevaplamak için gerekli parametreleri nasıl hesaplayacağınız (ortalama / medyan, varyans, vb.) Ve aynı zamanda güncel ve çalışmaya nasıl devam edeceğinizdir.


1

Birkaç yıl önce (2015), Google, belirli bir etkinliğin zaman serisi modelinde yarattığı etki hakkında bir araştırma makalesi yayınladı. Daha fazla bilgiyi burada Bayes yapısal zaman serisi modellerini kullanarak nedensel etkiyi ortaya çıkarmak .

Bu GitHub sayfasında , nasıl çalıştığına dair ayrıntılı bir örnek ve açıklama bulabilirsiniz. Kısacası,

Bu R paketi, tasarlanmış bir müdahalenin bir zaman serisi üzerindeki nedensel etkisini tahmin etmek için bir yaklaşım uygular. Örneğin, bir reklam kampanyası tarafından kaç günlük ek tıklama oluşturuldu? Rastgele bir deney olmadığında böyle bir soruyu cevaplamak zor olabilir.

Modelinizi olay öncesi veriler ve olay sonrası verilerle eğitiyorsunuz ve bunun gibi bir çizim elde ediyorsunuz

resim açıklamasını buraya girin

İlk panel, tedavi sonrası döneme ilişkin verileri ve karşı olgusal öngörüyü gösterir. İkinci panel, gözlemlenen veriler ve karşı olgusal tahminler arasındaki farkı gösterir. Bu, model tarafından tahmin edildiği gibi, noktasal nedensel etkidir. Üçüncü panel, ikinci panelden noktasal katkıları toplayarak müdahalenin kümülatif etkisinin bir grafiğini ortaya çıkarır.

Aşağıdakileri çalıştırarak, summary(impact)olayın zaman serisi verilerinizdeki özetini ve tahmini etkisini elde edersiniz.

Aynı kütüphane Python'a da taşındı. Örneğin burada

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.