3

Ich habe einen Datensatz, der wie der untenstehende aussieht (die ersten 5 Reihen gezeigt). CPA ist ein beobachtetes Ergebnis eines Experiments (Behandlung) auf verschiedenen Werbeflügen. Flüge sind hierarchisch in Kampagnen gruppiert.Interpretation von Variablen in Multi-Level-Regression mit zufälligen Effekten

campaign_uid flight_uid treatment   CPA 
0 0C2o4hHDSN 0FBU5oULvg control -50.757370 
1 0C2o4hHDSN 0FhOqhtsl9 control 10.963426 
2 0C2o4hHDSN 0FwPGelRRX exposed -72.868952 
3 0C5F8ZNKxc 0F0bYuxlmR control 13.356081 
4 0C5F8ZNKxc 0F2ESwZY22 control 141.030900 
5 0C5F8ZNKxc 0F5rfAOVuO exposed 11.200450 

ich passe ein Modell wie die folgenden:

model.fit('CPA ~ treatment', random=['1|campaign_uid']) 

Mein Wissen ist dieses Modell sagt einfach:

  • Wir haben eine Neigung für die Behandlung
  • Wir a haben global intercept
  • Wir haben auch einen Intercept pro Kampagne

so würde man nur bekommen einposterior für jede solche Variable.

Wenn ich jedoch auf die Ergebnisse unten schaue, bekomme ich auch Seitenzähne für die folgende Variable: 1|campaign_uid_offset. Was stellt es dar?

enter image description here

-Code für die Montage des Modells und die Handlung:

model = Model(df) 
results = model.fit('{} ~ treatment'.format(metric), 
        random=['1|campaign_uid'], 
        samples=1000) 
# Plotting the result 
pm.traceplot(model.backend.trace) 

Antwort

5
  • 1 | campaign_uid

Dies sind die zufälligen Abschnitte für Kampagnen, die Sie in Ihrer Liste erwähnt von Parameter.

  • 1 | campaign_uid_sd

Dies ist die Standardabweichung der genannten Zufalls Kampagne fängt.

  • CPA_sd

Dies ist die Reststandardabweichung. Das heißt, Ihr Modell kann (teilweise) als CPA_ij ~ Normal (b0 + b1 * behandlung_ij + u_j, sigma^2) geschrieben werden, und repräsentiert den Parameter sigma.

  • 1 | campaign_uid_offset

Dies ist eine Alternative Parametrierung der zufälligen abfängt. bambi verwendet diese Umwandlung intern, um die MCMC-Abtastungseffizienz zu verbessern. Normalerweise ist dieser transformierte Parameter standardmäßig vor dem Benutzer verborgen. Das heißt, wenn Sie das Traceplot mit results.plot() anstelle von pm.traceplot(model.backend.trace) erstellen, sind diese Begriffe verborgen, es sei denn, Sie geben transformed=True an (standardmäßig ist es False). Es ist auch standardmäßig von der results.summary() Ausgabe ausgeblendet. Weitere Informationen zu dieser Umwandlung finden Sie unter this nice blog post by Thomas Wiecki.

+0

Danke. Wie bekomme ich vor diesem Hintergrund ein Gefühl für den Anpassungsfehler? (z.B. zum Vergleichen von Modellen). Ich dachte immer, 'CPA_sd' würde mir diese Information geben (d. H. Modelle mit * höherer Reststandardabweichung passen schlechter *, also könnte ich' CPA_sd' verwenden, um Modelle zu vergleichen). Ist das realistisch anzunehmen? Und wenn das der Fall ist, würde _ignore_ der Beitrag zum "Fehler", der durch die Standardabweichung des prokampagneninternen Abschnitts erfasst wird (d. H. "1 | campaign_uid_sd"), nicht gemacht? –

+0

Auch Jake, was bedeutet das 'T' in' Behandlung [T.exposed] 'in der Ausgabe? – Josh

+0

@ AmelioVazquez-Reina Wenn Sie an einem Modellvergleich interessiert sind, finden Sie [diese Seite aus den pymc3-Dokumenten] (https://pymc-devs.github.io/pymc3/notebooks/GLM-model-selection.html) sinnvoll. –