Spis treści
- Czym jest Google Meridian i co wyróżnia go wśród narzędzi MMM
- Jakie dane wejściowe przyjmuje Google Meridian
- Jak przygotować dane z polskich kampanii
- Instalacja Meridian krok po kroku
- Pierwszy model: wczytanie danych, specyfikacja i próbkowanie
- Diagnostyka: jak sprawdzić, czy model Meridian jest poprawny
- Jak czytać wyniki Meridian i co zrobić dalej
- Najczęściej zadawane pytania
Google Meridian to otwartoźródłowa biblioteka Pythona do budowy modeli marketing mix modeling, rozwijana przez Google i ogólnie dostępna od 29 stycznia 2025 r. Wykorzystuje bayesowski model hierarchiczny, który działa na danych regionalnych lub krajowych, przyjmuje wiedzę a priori o ROI kanałów i obsługuje dane o zasięgu oraz częstotliwości. Do pierwszego modelu potrzebujesz tabeli z tygodniowymi danymi o wyniku, wydatkach i ekspozycji, środowiska z Pythonem 3.11 lub 3.12 – najlepiej z kartą graficzną – i kilkudziesięciu linii kodu.
Najważniejsze w skrócie
- Meridian wymaga Pythona 3.11 lub 3.12, domyślnym silnikiem obliczeń jest JAX, a starszy backend TensorFlow jest wycofywany.
- Dane wczytujesz z pliku CSV lub ramki danych, przypisując kolumnom role: czas, region, KPI, populacja, media, wydatki i zmienne kontrolne.
- Model na poziomie 16 województw daje kilkanaście razy więcej obserwacji niż model krajowy, ale wymaga przypisania wydatków i sprzedaży do regionów.
- Zanim zaczniesz interpretować wyniki, sprawdź zbieżność łańcuchów (R-hat bliskie 1), dopasowanie na okresie testowym i wiarygodność ROI.
- Wytrenowany model możesz przekazać do Scenario Planner (od lutego 2026 r.) i kalibrować wynikami testów z modułu GeoX, ogólnie dostępnego od 10 września 2026 r.
Czym jest Google Meridian i co wyróżnia go wśród narzędzi MMM
Meridian to framework, a nie gotowa aplikacja. Dostajesz bibliotekę z modelem i narzędziami do diagnostyki, raportowania oraz optymalizacji budżetu, a dane, specyfikację i interpretację zapewniasz sam albo z certyfikowanym partnerem. Jeśli dopiero oceniasz, czy firma jest gotowa na taki projekt, zacznij od tekstu o tym, od czego zacząć marketing mix modeling.
Najważniejsze cechy biblioteki:
- Podejście bayesowskie. Wynikiem nie jest jedna liczba ROI, ale rozkład z przedziałem wiarygodności. Rozkłady a priori pozwalają wprowadzić do modelu MMM wiedzę z wcześniejszych badań i eksperymentów.
- Hierarchia regionów. Każdy region ma własne parametry, ale są one powiązane wspólnym rozkładem, więc słabsze dane z mniejszych województw „pożyczają” informację od większych.
- Zasięg i częstotliwość. Dla kanałów takich jak YouTube możesz podać zasięg i średnią częstotliwość zamiast samych wyświetleń. O tym, jak zmieniały się metryki wideo w Google, piszemy w przeglądzie YouTube Ads w 2026 r.
- Zmienne pozamediowe. Ceny, rabaty i kanały nieopłacane, np. newsletter, są modelowane jako osobne dźwignie z własnym wkładem w wynik.
- Sygnały marki. Od września 2026 r. Meridian obsługuje sygnały marki, w tym wolumen zapytań o markę w Google, co ułatwia ocenę kampanii zasięgowych.
W 2026 r. wokół biblioteki powstał cały ekosystem: w lutym Scenario Planner do planowania budżetu bez kodu, a we wrześniu moduł GeoX do testów geo oraz narzędzia agentowe, które pomagają audytować dane i prowadzą przez budowę modelu.
Jakie dane wejściowe przyjmuje Google Meridian
Meridian oczekuje danych w formacie długim: jeden wiersz to jeden region i jeden okres, zwykle tydzień. Role kolumn określasz obiektem CoordToColumns, a potem mapujesz kolumny mediów i wydatków na nazwy kanałów.
| Pole w CoordToColumns | Co zawiera | Przykładowa kolumna | Kiedy potrzebne |
|---|---|---|---|
| time | data początku okresu w formacie rrrr-mm-dd | tydzien | zawsze |
| geo | identyfikator regionu | wojewodztwo | w modelu regionalnym |
| kpi | przychód lub liczba konwersji | przychod_netto | zawsze |
| revenue_per_kpi | średnia wartość jednej konwersji | wartosc_zamowienia | gdy KPI nie jest przychodem |
| population | liczba ludności regionu | populacja | w modelu regionalnym |
| media | ekspozycja: wyświetlenia, kliknięcia | wysw_meta | dla kanałów bez danych R&F |
| media_spend | wydatki na kanał | koszt_meta | razem z media |
| reach, frequency, rf_spend | zasięg, częstotliwość i koszt | zasieg_youtube | opcjonalnie |
| controls | czynniki zakłócające, np. sezonowość, pogoda | indeks_pogody | zalecane |
| non_media_treatments | dźwignie pozamediowe: cena, rabat | rabat_proc | opcjonalnie |
| organic_media | kanały nieopłacane | wysylki_newsletter | opcjonalnie |
Różnica między controls a non_media_treatments ma znaczenie. Zmienne kontrolne służą do skorygowania modelu o czynniki, na które nie masz wpływu, a dźwignie pozamediowe są traktowane jak działania, których efekt Meridian szacuje i pokazuje w raporcie.
Jak przygotować dane z polskich kampanii
Najtrudniejsze jest przypisanie wydatków i sprzedaży do regionów. W Polsce jednostką geo są najczęściej województwa: raporty lokalizacji w Google Ads i podział według regionu w Menedżerze reklam Meta pozwalają rozbić koszty, a adres dostawy z zamówienia przypiszesz do województwa przez tabelę mapowania kodów pocztowych.
Przykładowy fragment pliku wejściowego (dane hipotetyczne):
tydzien,wojewodztwo,populacja,przychod_netto,koszt_google,klik_google,koszt_meta,wysw_meta,koszt_youtube,wysw_youtube,rabat_proc
2026-09-07,mazowieckie,5510000,412300.50,38200.00,51200,21400.00,1850000,6100.00,920000,0
2026-09-07,slaskie,4300000,251800.10,24100.00,33800,15800.00,1320000,4300.00,640000,0
2026-09-14,mazowieckie,5510000,398750.00,36900.00,49800,22900.00,1910000,6000.00,905000,10
Przed wczytaniem sprawdź pięć rzeczy:
- Kompletność siatki. Każde województwo musi mieć wiersz dla każdego tygodnia. Tydzień bez emisji to zero, a nie pusta komórka.
- Spójność kwot. Wydatki i przychód w tej samej walucie i w tej samej konwencji, najlepiej netto bez VAT.
- Pełne tygodnie. Tydzień od poniedziałku do niedzieli, bez ucinania pierwszego i ostatniego okresu.
- Kanały ogólnopolskie. Telewizję czy radio bez danych regionalnych rozdziel proporcjonalnie do populacji lub zasięgu i pamiętaj, że model nie nauczy się wtedy różnic między regionami.
- Sumy kontrolne. Suma wydatków po regionach powinna zgadzać się z fakturami, a suma przychodu – z systemem sprzedaży.
Jeśli pobierasz raporty geograficzne automatycznie, przyda się dostęp do Google Ads API, który po zmianach z września 2026 r. wymaga projektu Google Cloud – opisujemy to w tekście o Google Ads API w 2026 r.. Tabele pośrednie trzymaj w hurtowni i pilnuj kosztów zapytań, o czym piszemy w poradniku o kosztach BigQuery.
Instalacja Meridian krok po kroku
Meridian instalujesz jak zwykły pakiet Pythona. Oficjalne wsparcie GPU jest dostępne na Linuksie z kartami NVIDIA. Na macOS biblioteka działa tylko na procesorze.
- Wybierz środowisko. Najprościej zacząć w notatniku Colab z GPU albo na maszynie z Linuksem i kartą NVIDIA. Dokumentacja wskazuje testy na kartach V100 i T4 z 16 GB pamięci.
- Utwórz środowisko wirtualne z Pythonem 3.11 lub 3.12.
- Zainstaluj pakiet – z dodatkiem
and-cudana maszynie z GPU albo w wersji podstawowej na procesorze. - Sprawdź wersję i zapisz ją w pliku z zależnościami projektu, żeby każde odświeżenie modelu liczyć na tej samej wersji.
python3.11 -m venv .venv
source .venv/bin/activate
python3 -m pip install --upgrade 'google-meridian[and-cuda]'
python3 -c "import meridian; print(meridian.__version__)"
Na komputerze bez GPU, np. z macOS, w trzecim wierszu zainstaluj sam pakiet google-meridian, bez dodatku w nawiasie kwadratowym.
Domyślnym backendem jest JAX, a starszy backend TensorFlow ma zostać usunięty w jednej z kolejnych wersji. Jeśli korzystasz ze starszych notatników, sprawdź w dzienniku zmian, czy importy i nazwy parametrów są aktualne.
Pierwszy model: wczytanie danych, specyfikacja i próbkowanie
Pierwszy model buduj na domyślnych rozkładach a priori i małej liczbie kanałów. Najpierw sprawdzasz, czy całość działa, a dopiero potem rozbudowujesz specyfikację.
from meridian.data import load
from meridian.model import model, spec, prior_distribution
kolumny = load.CoordToColumns(
time='tydzien',
geo='wojewodztwo',
population='populacja',
kpi='przychod_netto',
media=['klik_google', 'wysw_meta', 'wysw_youtube'],
media_spend=['koszt_google', 'koszt_meta', 'koszt_youtube'],
non_media_treatments=['rabat_proc'],
)
loader = load.CsvDataLoader(
csv_path='meridian_dane.csv',
coord_to_columns=kolumny,
kpi_type='revenue',
media_to_channel={'klik_google': 'google', 'wysw_meta': 'meta', 'wysw_youtube': 'youtube'},
media_spend_to_channel={'koszt_google': 'google', 'koszt_meta': 'meta', 'koszt_youtube': 'youtube'},
)
dane = loader.load()
model_spec = spec.ModelSpec(
prior=prior_distribution.PriorDistribution(), # domyślne rozkłady a priori
media_prior_type='roi', # priory definiowane na ROI kanałów
max_lag=8, # maksymalne przeniesienie efektu w tygodniach
)
mmm = model.Meridian(input_data=dane, model_spec=model_spec)
mmm.sample_prior(500)
mmm.sample_posterior(n_chains=7, n_adapt=1000, n_burnin=500, n_keep=1000)
Co oznaczają parametry próbkowania: n_chains to liczba łańcuchów liczonych równolegle (przy braku pamięci możesz podać listę, żeby liczyć je po kolei), n_adapt i n_burnin to próbki odrzucane na rozgrzewkę, a n_keep – próbki zachowane do analizy. Meridian korzysta z samplera NUTS. Czas obliczeń zależy od liczby regionów, tygodni i kanałów. Do szybkich iteracji dokumentacja przewiduje rozrzedzanie rozkładu a posteriori (posterior_thinning), ale wyników z takiej wersji nie należy przekazywać jako ostatecznych.
Specyfikacja pozwala też odłożyć część obserwacji do walidacji, ustawić liczbę węzłów dla efektu czasu i zmienić typ wygasania efektu. Na start zostaw wartości domyślne.
Diagnostyka: jak sprawdzić, czy model Meridian jest poprawny
Diagnostykę zaczynasz od zbieżności łańcuchów, potem sprawdzasz dopasowanie, a na końcu wiarygodność biznesową wyników. Pominięcie pierwszego kroku oznacza interpretowanie liczb, które mogą być przypadkowe.
from meridian.analysis import visualizer, summarizer
visualizer.ModelDiagnostics(mmm).plot_rhat_boxplot()
visualizer.ModelFit(mmm).plot_model_fit()
summarizer.Summarizer(mmm).output_model_results_summary(
'meridian_raport.html', '/content/wyniki', '2024-10-07', '2026-10-19'
)
| Test | Co sprawdzasz | Sygnał problemu | Co zrobić |
|---|---|---|---|
| R-hat | zbieżność łańcuchów | wartości wyraźnie powyżej 1,1–1,2 | więcej próbek, prostsza specyfikacja, przegląd priorów |
| Prior a posterior | czy dane coś zmieniły | rozkład po próbkowaniu prawie jak przed | kanał zbyt mało zmienny – połącz go lub skalibruj |
| Dopasowanie (R², MAPE, wMAPE) | jak model odtwarza KPI | systematyczne odchylenia w sezonie | dodaj święta i zmienne kontrolne |
| Okres testowy | prognoza poza próbą | duży błąd na odłożonych tygodniach | przeuczenie – zmniejsz liczbę kanałów |
| Wiarygodność ROI | zgodność z wiedzą i testami | ROI 15 dla kanału zasięgowego | sprawdź dane, kalibruj eksperymentem |
Pamiętaj, że dobre metryki dopasowania nie dowodzą, że model poprawnie oddziela przyczyny od korelacji. Tę lukę zamykają eksperymenty, które opisujemy w tekście o testach inkrementalności i Conversion Lift.
Jak czytać wyniki Meridian i co zrobić dalej
Raport podsumowujący pokazuje udział bazy i kanałów w wyniku, ROI oraz marginalny ROI z przedziałami wiarygodności, a także krzywe odpowiedzi. Moduł optymalizacji proponuje podział budżetu, który maksymalizuje wynik przy zadanych ograniczeniach.
from meridian.analysis import optimizer
wynik = optimizer.BudgetOptimizer(mmm).optimize()
Załóżmy, że model pokazuje dla Meta Ads ROI 2,4 z przedziałem 1,6–3,3, a dla YouTube 1,5 z przedziałem 0,6–2,7. Szeroki przedział YouTube nie oznacza, że kanał jest słaby – oznacza, że dane niewiele o nim mówią. To dobry kandydat do testu geo, którego wynik zawęzi przedział. Porównując wyniki z ROAS z paneli reklamowych, pamiętaj, że Meridian szacuje przychód inkrementalny, a nie przypisany.
Dalsze kroki zależą od zespołu:
- osoby bez Pythona mogą planować budżet w raporcie Meridian Scenario Planner,
- analitycy powinni zaplanować testy geo i kalibrację modelu, zaczynając od kanałów z najszerszymi przedziałami,
- jeśli zespół lepiej zna R, rozważ alternatywę opisaną w porównaniu Robyn czy Meridian,
- wnioski o sezonowym zwiększaniu wydatków przenieś do planu na Black Friday i czwarty kwartał, uwzględniając nasycenie kanałów.
Pozostałe materiały o modelowaniu znajdziesz w dziale Marketing Mix Modeling.
Najczęściej zadawane pytania
Czy Google Meridian jest darmowy?
Tak. Meridian jest biblioteką open source, którą możesz zainstalować i używać bez opłat licencyjnych. Płacisz jedynie za infrastrukturę, np. maszynę z kartą graficzną w chmurze lub płatny plan Colab, oraz za czas osoby, która przygotuje dane i zbuduje model. Google prowadzi też sieć certyfikowanych partnerów, którzy wdrażają Meridian odpłatnie.
Czy Meridian działa bez karty graficznej?
Działa, ale wolniej. Na procesorze model z kilkoma kanałami i danymi krajowymi da się oszacować, natomiast przy modelu regionalnym z wieloma kanałami czas obliczeń może być uciążliwy. Dokumentacja zaleca co najmniej jedną kartę GPU. Najprostszą opcją na start jest notatnik Colab z GPU, a oficjalne wsparcie GPU dotyczy Linuksa z kartami NVIDIA.
Ile danych potrzebuje Meridian?
Typowo 2–3 lata danych tygodniowych. Model regionalny może działać z krótszą historią, bo każdy region dostarcza dodatkowych obserwacji. Ważniejsza od długości jest zmienność: jeśli wydatki w kanale były stałe przez cały okres, model nie oszacuje jego efektu niezależnie od liczby tygodni. Pomagają wtedy rozkłady a priori oparte na eksperymentach.
Czy Meridian sprawdzi się przy danych tylko dla całej Polski?
Tak, Meridian obsługuje modele krajowe. Przy jednym szeregu tygodniowym masz jednak znacznie mniej obserwacji niż przy 16 województwach, więc przedziały wiarygodności będą szersze, a rola rozkładów a priori większa. Jeśli możesz przypisać sprzedaż i wydatki do regionów, model regionalny zwykle da stabilniejsze wyniki.
Czym Meridian różni się od LightweightMMM?
LightweightMMM była wcześniejszą, eksperymentalną biblioteką MMM od Google. Meridian jest jej następcą i oficjalnie wspieranym produktem: ma rozbudowaną obsługę modeli regionalnych, danych o zasięgu i częstotliwości, priorów na ROI, raporty, optymalizację budżetu i dokumentację. Nowe projekty warto zaczynać w Meridian, a stare modele z LightweightMMM przenieść przy najbliższym odświeżeniu.