Kontekst historyczny: koncepcja dowodu społecznego (social proof) sięga prac Roberta Cialdiniego z lat 80. XX wieku, jednak masowe wdrożenie powiadomień w czasie rzeczywistym w produktach cyfrowych rozpoczęło się w 2015 roku wraz z rozwojem połączeń WebSocket i platform strumieniowych podobnych do Kafka. Klasyczne metody testów A/B często dają zniekształcone oceny z powodu efektów sieciowych (naruszenie SUTVA), gdy wynik jednego użytkownika zależy od obecności innych online. Wczesne próby oceny ograniczały się do prostego porównania sesji z widocznym widżetem i bez niego, co prowadziło do poważnej endogeniczności próbki.
Problem: przy ocenie efektu należy oddzielić rzeczywisty wpływ interwencji od endogennej zmiennej gęstości audytorium. Jeśli po prostu porównamy sesje z powiadomieniami i bez, uzyskamy zniekształcenie wyboru (selection bias): w godzinach szczytu i tak konwersja jest wyższa, a w tym momencie system generuje więcej powiadomień. Dodatkowo migracja użytkowników między aplikacją mobilną a desktopem tworzy kontaminację, zacierając granice między treatment a control.
Rozwiązanie: optymalne podejście to analiza różnic w różnicach (Difference-in-Differences, DiD) z dwu-stronnymi efektami stałymi (two-way fixed effects) według stref czasowych i kategorii produktów, uzupełniona zmienną instrumentalną (IV-approach) dla gęstości audytorium. Jako narzędzie wykorzystuje się egzogeniczny szok warunków pogodowych lub regionalne awarie internetowe, wpływające na aktywność online, ale nie związane bezpośrednio z konwersją. Alternatywnie stosuje się Synthetic Control Method, w której grupa kontrolna jest konstruowana z podobnych produktów/regionów bez wdrożenia funkcji, ważąc je według historii konwersji i sezonowości.
Na rynku elektroniki planowano wdrożenie widżetu "Obecnie ten produkt ogląda 15 osób" z rzeczywistymi danymi z ClickHouse-streamingu. Problem polegał na tym, że zespół produktowy rejestrował wzrost konwersji o 18% w godzinach szczytu, ale nie mógł oddzielić efektu powiadomień od naturalnie wysokiego popytu wieczorem. Dodatkowo obserwowano efekt "pustego pokoju": w godzinach nocnych widżet pokazywał zera lub przestarzałe dane, co potencjalnie mogło obniżać zaufanie.
Pierwsza rozważana opcja — klasyczny test A/B z segmentacją geograficzną. Plusy: prostota wdrożenia i czysta interpretacja. Minusy: efekty sieciowe zacierały się, ponieważ użytkownicy z różnych miast widzieli różny asortyment i bazową konwersję; dodatkowo, przy niskiej gęstości audytorium w małych miastach widżet pokazywał "Obecnie ogląda 0 osób", co tworzyło negative social proof i obniżało zaufanie.
Druga opcja — przerwanie regresji (Regression Discontinuity Design, RDD) według czasu uruchomienia funkcji w konkretnym regionie. Plusy: wyraźna identyfikacja przyczynowa w momencie cutoff i możliwość wizualnej weryfikacji na wykresie. Minusy: niemożność oddzielenia efektu nowości (novelty effect) od stałego efektu; dodatkowo stopniowe wdrożenie według stref czasowych tworzyło zatarte granice treatment, co narusza kluczowe założenie RDD o nagłej zmianie prawdopodobieństwa treatment.
Trzecia opcja — quasieksperyment z wykorzystaniem produktów bez rzeczywistego czasu jako grupy kontrolnej (DiD). Plusy: uwzględnienie sezonowych trendów przez efekty stałe; możliwość oceny heterogeniczności efektu według poziomu bazowego ruchu. Minusy: wymagana jest hipoteza o równoległych trendach (parallel trends assumption), która była weryfikowana przez specyfikację Event Study z leads i lags.
Wybrano rozwiązanie z DiD i zmienną instrumentalną opartą na danych pogodowych: deszczowe dni w regionach niespodziewanie zwiększały aktywność online (zaspokajając relevance narzędzia), ale nie wpływały bezpośrednio na chęć zakupu telefonu (exclusion restriction). Analiza wykazała, że prawdziwy efekt widżetu wynosi +9% konwersji tylko przy gęstości >30 użytkowników online na SKU; przy mniejszej gęstości efekt jest negatywny (-4%) z powodu wyświetlania "pustych" lub przestarzałych danych.
Na podstawie tych wyników wdrożono adaptacyjny algorytm, który wyłącza social proof przy niskim ruchu. Rezultatem była optymalizacja zasad wyświetlania: system przeszedł od stałego wyświetlania do warunkowego, co zwiększyło średnią konwersję o 7% w całej platformie i zmniejszyło odpływ z segmentu "nocnych" użytkowników o 12%. Oszczędności na infrastrukturze wyniosły 15% dzięki wyłączeniu przetwarzania strumieni dla nieaktywnych produktów.
Jak oddzielić efekt mechanizmu (intensive margin) od ogólnego efektu obecności funkcji (extensive margin)?
Kandydaci często mylą ocenę reduced form (po prostu obecność systemu) z oceną mechanizmu (jak zmiana gęstości wewnątrz treatment wpływa na wynik). Poprawne podejście to dwuetapowa ocena (Two-Stage Least Squares, 2SLS), gdzie na pierwszym etapie przewiduje się rzeczywistą częstość wyświetlania powiadomień narzędziem (pogodą), a na drugim — konwersję na podstawie przewidzianej częstości. To pozwala oddzielić czysty efekt powiadomienia od efektu "tłumu" (herding behavior), który ma odwrotną przyczynowość: wysoka konwersja przyciąga więcej wyświetleń, generując więcej powiadomień.
Dlaczego istotna jest korekta na wielokrotne testowanie przy analizie heterogeniczności według segmentów gęstości i pory dnia?
Analitycy często szukają optymalnego progu włączenia funkcji, testując efekt na 10, 20, 50 użytkownikach i wybierają próg z maksymalnym uplift'em. To prowadzi do problemu data mining i inflacjonowanego błędu typu I. Należy stosować korektę Bonferroni lub Benjamini-Hochberg procedure dla family-wise error rate, lub używać pre-analysis plan z zastrzeżeniem hipotez przed analizą. W przeciwnym razie "optymalny" próg okaże się po prostu przypadkowym odchyleniem w danych.
Jak uwzględnić negative spillover na grupę kontrolną przez wspólny inventory i ograniczenie budżetu użytkownika?
Przy dowodzie społecznym na rynku istnieje efekt przyciągania popytu: jeśli widżet przyspiesza zakupy w grupie treatment produktów, może to obniżać konwersję w grupie kontrolnej z powodu wyczerpania budżetu lub rozproszenia uwagi. Kandydaci ignorują General Equilibrium Effects. Do korekty trzeba ocenić agregowane dane na poziomie sesji użytkownika (aggregate treatment effects) lub wykorzystać modele z równowagą rynkową (market equilibrium models), uwzględniające ograniczenie uwagi użytkownika.