google-meridian 1.3.2__tar.gz → 1.4.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {google_meridian-1.3.2/google_meridian.egg-info → google_meridian-1.4.0}/PKG-INFO +8 -4
- {google_meridian-1.3.2 → google_meridian-1.4.0}/README.md +1 -1
- {google_meridian-1.3.2 → google_meridian-1.4.0/google_meridian.egg-info}/PKG-INFO +8 -4
- {google_meridian-1.3.2 → google_meridian-1.4.0}/google_meridian.egg-info/SOURCES.txt +32 -0
- {google_meridian-1.3.2 → google_meridian-1.4.0}/google_meridian.egg-info/requires.txt +7 -2
- {google_meridian-1.3.2 → google_meridian-1.4.0}/google_meridian.egg-info/top_level.txt +1 -0
- {google_meridian-1.3.2 → google_meridian-1.4.0}/meridian/analysis/summarizer.py +7 -2
- {google_meridian-1.3.2 → google_meridian-1.4.0}/meridian/analysis/test_utils.py +934 -485
- {google_meridian-1.3.2 → google_meridian-1.4.0}/meridian/analysis/visualizer.py +10 -6
- {google_meridian-1.3.2 → google_meridian-1.4.0}/meridian/constants.py +1 -0
- {google_meridian-1.3.2 → google_meridian-1.4.0}/meridian/data/test_utils.py +82 -10
- {google_meridian-1.3.2 → google_meridian-1.4.0}/meridian/model/__init__.py +2 -0
- google_meridian-1.4.0/meridian/model/context.py +925 -0
- {google_meridian-1.3.2 → google_meridian-1.4.0}/meridian/model/eda/constants.py +1 -0
- google_meridian-1.4.0/meridian/model/equations.py +418 -0
- {google_meridian-1.3.2 → google_meridian-1.4.0}/meridian/model/knots.py +58 -47
- {google_meridian-1.3.2 → google_meridian-1.4.0}/meridian/model/model.py +93 -792
- {google_meridian-1.3.2 → google_meridian-1.4.0}/meridian/version.py +1 -1
- {google_meridian-1.3.2 → google_meridian-1.4.0}/pyproject.toml +10 -3
- google_meridian-1.4.0/scenarioplanner/__init__.py +42 -0
- google_meridian-1.4.0/scenarioplanner/converters/__init__.py +25 -0
- google_meridian-1.4.0/scenarioplanner/converters/dataframe/__init__.py +28 -0
- google_meridian-1.4.0/scenarioplanner/converters/dataframe/budget_opt_converters.py +383 -0
- google_meridian-1.4.0/scenarioplanner/converters/dataframe/common.py +71 -0
- google_meridian-1.4.0/scenarioplanner/converters/dataframe/constants.py +137 -0
- google_meridian-1.4.0/scenarioplanner/converters/dataframe/converter.py +42 -0
- google_meridian-1.4.0/scenarioplanner/converters/dataframe/dataframe_model_converter.py +70 -0
- google_meridian-1.4.0/scenarioplanner/converters/dataframe/marketing_analyses_converters.py +543 -0
- google_meridian-1.4.0/scenarioplanner/converters/dataframe/rf_opt_converters.py +314 -0
- google_meridian-1.4.0/scenarioplanner/converters/mmm.py +743 -0
- google_meridian-1.4.0/scenarioplanner/converters/mmm_converter.py +58 -0
- google_meridian-1.4.0/scenarioplanner/converters/sheets.py +156 -0
- google_meridian-1.4.0/scenarioplanner/converters/test_data.py +714 -0
- google_meridian-1.4.0/scenarioplanner/linkingapi/__init__.py +47 -0
- google_meridian-1.4.0/scenarioplanner/linkingapi/constants.py +27 -0
- google_meridian-1.4.0/scenarioplanner/linkingapi/url_generator.py +131 -0
- google_meridian-1.4.0/scenarioplanner/mmm_ui_proto_generator.py +354 -0
- {google_meridian-1.3.2 → google_meridian-1.4.0}/schema/__init__.py +5 -2
- google_meridian-1.4.0/schema/mmm_proto_generator.py +71 -0
- google_meridian-1.4.0/schema/model_consumer.py +133 -0
- google_meridian-1.4.0/schema/processors/__init__.py +77 -0
- google_meridian-1.4.0/schema/processors/budget_optimization_processor.py +832 -0
- google_meridian-1.4.0/schema/processors/common.py +64 -0
- google_meridian-1.4.0/schema/processors/marketing_processor.py +1136 -0
- google_meridian-1.4.0/schema/processors/model_fit_processor.py +367 -0
- google_meridian-1.4.0/schema/processors/model_kernel_processor.py +117 -0
- google_meridian-1.4.0/schema/processors/model_processor.py +412 -0
- google_meridian-1.4.0/schema/processors/reach_frequency_optimization_processor.py +584 -0
- google_meridian-1.4.0/schema/test_data.py +380 -0
- {google_meridian-1.3.2 → google_meridian-1.4.0}/schema/utils/__init__.py +1 -0
- google_meridian-1.4.0/schema/utils/date_range_bucketing.py +117 -0
- {google_meridian-1.3.2 → google_meridian-1.4.0}/LICENSE +0 -0
- {google_meridian-1.3.2 → google_meridian-1.4.0}/MANIFEST.in +0 -0
- {google_meridian-1.3.2 → google_meridian-1.4.0}/google_meridian.egg-info/dependency_links.txt +0 -0
- {google_meridian-1.3.2 → google_meridian-1.4.0}/meridian/__init__.py +0 -0
- {google_meridian-1.3.2 → google_meridian-1.4.0}/meridian/analysis/__init__.py +0 -0
- {google_meridian-1.3.2 → google_meridian-1.4.0}/meridian/analysis/analyzer.py +0 -0
- {google_meridian-1.3.2 → google_meridian-1.4.0}/meridian/analysis/optimizer.py +0 -0
- {google_meridian-1.3.2 → google_meridian-1.4.0}/meridian/analysis/review/__init__.py +0 -0
- {google_meridian-1.3.2 → google_meridian-1.4.0}/meridian/analysis/review/checks.py +0 -0
- {google_meridian-1.3.2 → google_meridian-1.4.0}/meridian/analysis/review/configs.py +0 -0
- {google_meridian-1.3.2 → google_meridian-1.4.0}/meridian/analysis/review/constants.py +0 -0
- {google_meridian-1.3.2 → google_meridian-1.4.0}/meridian/analysis/review/results.py +0 -0
- {google_meridian-1.3.2 → google_meridian-1.4.0}/meridian/analysis/review/reviewer.py +0 -0
- {google_meridian-1.3.2 → google_meridian-1.4.0}/meridian/analysis/summary_text.py +0 -0
- {google_meridian-1.3.2 → google_meridian-1.4.0}/meridian/backend/__init__.py +0 -0
- {google_meridian-1.3.2 → google_meridian-1.4.0}/meridian/backend/config.py +0 -0
- {google_meridian-1.3.2 → google_meridian-1.4.0}/meridian/backend/test_utils.py +0 -0
- {google_meridian-1.3.2 → google_meridian-1.4.0}/meridian/data/__init__.py +0 -0
- {google_meridian-1.3.2 → google_meridian-1.4.0}/meridian/data/arg_builder.py +0 -0
- {google_meridian-1.3.2 → google_meridian-1.4.0}/meridian/data/data_frame_input_data_builder.py +0 -0
- {google_meridian-1.3.2 → google_meridian-1.4.0}/meridian/data/input_data.py +0 -0
- {google_meridian-1.3.2 → google_meridian-1.4.0}/meridian/data/input_data_builder.py +0 -0
- {google_meridian-1.3.2 → google_meridian-1.4.0}/meridian/data/load.py +0 -0
- {google_meridian-1.3.2 → google_meridian-1.4.0}/meridian/data/nd_array_input_data_builder.py +0 -0
- {google_meridian-1.3.2 → google_meridian-1.4.0}/meridian/data/time_coordinates.py +0 -0
- {google_meridian-1.3.2 → google_meridian-1.4.0}/meridian/mlflow/__init__.py +0 -0
- {google_meridian-1.3.2 → google_meridian-1.4.0}/meridian/mlflow/autolog.py +0 -0
- {google_meridian-1.3.2 → google_meridian-1.4.0}/meridian/model/adstock_hill.py +0 -0
- {google_meridian-1.3.2 → google_meridian-1.4.0}/meridian/model/eda/__init__.py +0 -0
- {google_meridian-1.3.2 → google_meridian-1.4.0}/meridian/model/eda/eda_engine.py +0 -0
- {google_meridian-1.3.2 → google_meridian-1.4.0}/meridian/model/eda/eda_outcome.py +0 -0
- {google_meridian-1.3.2 → google_meridian-1.4.0}/meridian/model/eda/eda_spec.py +0 -0
- {google_meridian-1.3.2 → google_meridian-1.4.0}/meridian/model/media.py +0 -0
- {google_meridian-1.3.2 → google_meridian-1.4.0}/meridian/model/model_test_data.py +0 -0
- {google_meridian-1.3.2 → google_meridian-1.4.0}/meridian/model/posterior_sampler.py +0 -0
- {google_meridian-1.3.2 → google_meridian-1.4.0}/meridian/model/prior_distribution.py +0 -0
- {google_meridian-1.3.2 → google_meridian-1.4.0}/meridian/model/prior_sampler.py +0 -0
- {google_meridian-1.3.2 → google_meridian-1.4.0}/meridian/model/spec.py +0 -0
- {google_meridian-1.3.2 → google_meridian-1.4.0}/meridian/model/transformers.py +0 -0
- {google_meridian-1.3.2 → google_meridian-1.4.0}/meridian/templates/card.html.jinja +0 -0
- {google_meridian-1.3.2 → google_meridian-1.4.0}/meridian/templates/chart.html.jinja +0 -0
- {google_meridian-1.3.2 → google_meridian-1.4.0}/meridian/templates/chips.html.jinja +0 -0
- {google_meridian-1.3.2 → google_meridian-1.4.0}/meridian/templates/formatter.py +0 -0
- {google_meridian-1.3.2 → google_meridian-1.4.0}/meridian/templates/formatter_test.py +0 -0
- {google_meridian-1.3.2 → google_meridian-1.4.0}/meridian/templates/insights.html.jinja +0 -0
- {google_meridian-1.3.2 → google_meridian-1.4.0}/meridian/templates/stats.html.jinja +0 -0
- {google_meridian-1.3.2 → google_meridian-1.4.0}/meridian/templates/style.scss +0 -0
- {google_meridian-1.3.2 → google_meridian-1.4.0}/meridian/templates/summary.html.jinja +0 -0
- {google_meridian-1.3.2 → google_meridian-1.4.0}/meridian/templates/table.html.jinja +0 -0
- {google_meridian-1.3.2 → google_meridian-1.4.0}/schema/serde/__init__.py +0 -0
- {google_meridian-1.3.2 → google_meridian-1.4.0}/schema/serde/constants.py +0 -0
- {google_meridian-1.3.2 → google_meridian-1.4.0}/schema/serde/distribution.py +0 -0
- {google_meridian-1.3.2 → google_meridian-1.4.0}/schema/serde/eda_spec.py +0 -0
- {google_meridian-1.3.2 → google_meridian-1.4.0}/schema/serde/function_registry.py +0 -0
- {google_meridian-1.3.2 → google_meridian-1.4.0}/schema/serde/hyperparameters.py +0 -0
- {google_meridian-1.3.2 → google_meridian-1.4.0}/schema/serde/inference_data.py +0 -0
- {google_meridian-1.3.2 → google_meridian-1.4.0}/schema/serde/marketing_data.py +0 -0
- {google_meridian-1.3.2 → google_meridian-1.4.0}/schema/serde/meridian_serde.py +0 -0
- {google_meridian-1.3.2 → google_meridian-1.4.0}/schema/serde/serde.py +0 -0
- {google_meridian-1.3.2 → google_meridian-1.4.0}/schema/serde/test_data.py +0 -0
- {google_meridian-1.3.2 → google_meridian-1.4.0}/schema/utils/time_record.py +0 -0
- {google_meridian-1.3.2 → google_meridian-1.4.0}/setup.cfg +0 -0
- {google_meridian-1.3.2 → google_meridian-1.4.0}/setup.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: google-meridian
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.4.0
|
|
4
4
|
Summary: Google's open source mixed marketing model library, helps you understand your return on investment and direct your ad spend with confidence.
|
|
5
5
|
Author-email: The Meridian Authors <no-reply@google.com>
|
|
6
6
|
Project-URL: homepage, https://github.com/google/meridian
|
|
@@ -22,7 +22,6 @@ Requires-Dist: joblib
|
|
|
22
22
|
Requires-Dist: natsort<8,>=7.1.1
|
|
23
23
|
Requires-Dist: numpy<3,>=2.0.2
|
|
24
24
|
Requires-Dist: pandas<3,>=2.2.2
|
|
25
|
-
Requires-Dist: patsy<1,>=0.5.3
|
|
26
25
|
Requires-Dist: scipy<2,>=1.13.1
|
|
27
26
|
Requires-Dist: statsmodels>=0.14.5
|
|
28
27
|
Requires-Dist: tensorflow<2.21,>=2.18
|
|
@@ -46,8 +45,13 @@ Requires-Dist: jax==0.5.3; extra == "jax"
|
|
|
46
45
|
Requires-Dist: jaxlib==0.5.3; extra == "jax"
|
|
47
46
|
Requires-Dist: tensorflow-probability[substrates-jax]==0.25.0; extra == "jax"
|
|
48
47
|
Provides-Extra: schema
|
|
49
|
-
Requires-Dist: mmm-proto-schema; extra == "schema"
|
|
48
|
+
Requires-Dist: mmm-proto-schema>=1.1.0; extra == "schema"
|
|
50
49
|
Requires-Dist: semver; extra == "schema"
|
|
50
|
+
Provides-Extra: scenarioplanner
|
|
51
|
+
Requires-Dist: google-api-python-client; extra == "scenarioplanner"
|
|
52
|
+
Requires-Dist: google-auth; extra == "scenarioplanner"
|
|
53
|
+
Requires-Dist: mmm-proto-schema>=1.1.0; extra == "scenarioplanner"
|
|
54
|
+
Requires-Dist: semver; extra == "scenarioplanner"
|
|
51
55
|
Dynamic: license-file
|
|
52
56
|
|
|
53
57
|
# About Meridian
|
|
@@ -203,7 +207,7 @@ To cite this repository:
|
|
|
203
207
|
author = {Google Meridian Marketing Mix Modeling Team},
|
|
204
208
|
title = {Meridian: Marketing Mix Modeling},
|
|
205
209
|
url = {https://github.com/google/meridian},
|
|
206
|
-
version = {1.
|
|
210
|
+
version = {1.4.0},
|
|
207
211
|
year = {2025},
|
|
208
212
|
}
|
|
209
213
|
```
|
|
@@ -151,7 +151,7 @@ To cite this repository:
|
|
|
151
151
|
author = {Google Meridian Marketing Mix Modeling Team},
|
|
152
152
|
title = {Meridian: Marketing Mix Modeling},
|
|
153
153
|
url = {https://github.com/google/meridian},
|
|
154
|
-
version = {1.
|
|
154
|
+
version = {1.4.0},
|
|
155
155
|
year = {2025},
|
|
156
156
|
}
|
|
157
157
|
```
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: google-meridian
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.4.0
|
|
4
4
|
Summary: Google's open source mixed marketing model library, helps you understand your return on investment and direct your ad spend with confidence.
|
|
5
5
|
Author-email: The Meridian Authors <no-reply@google.com>
|
|
6
6
|
Project-URL: homepage, https://github.com/google/meridian
|
|
@@ -22,7 +22,6 @@ Requires-Dist: joblib
|
|
|
22
22
|
Requires-Dist: natsort<8,>=7.1.1
|
|
23
23
|
Requires-Dist: numpy<3,>=2.0.2
|
|
24
24
|
Requires-Dist: pandas<3,>=2.2.2
|
|
25
|
-
Requires-Dist: patsy<1,>=0.5.3
|
|
26
25
|
Requires-Dist: scipy<2,>=1.13.1
|
|
27
26
|
Requires-Dist: statsmodels>=0.14.5
|
|
28
27
|
Requires-Dist: tensorflow<2.21,>=2.18
|
|
@@ -46,8 +45,13 @@ Requires-Dist: jax==0.5.3; extra == "jax"
|
|
|
46
45
|
Requires-Dist: jaxlib==0.5.3; extra == "jax"
|
|
47
46
|
Requires-Dist: tensorflow-probability[substrates-jax]==0.25.0; extra == "jax"
|
|
48
47
|
Provides-Extra: schema
|
|
49
|
-
Requires-Dist: mmm-proto-schema; extra == "schema"
|
|
48
|
+
Requires-Dist: mmm-proto-schema>=1.1.0; extra == "schema"
|
|
50
49
|
Requires-Dist: semver; extra == "schema"
|
|
50
|
+
Provides-Extra: scenarioplanner
|
|
51
|
+
Requires-Dist: google-api-python-client; extra == "scenarioplanner"
|
|
52
|
+
Requires-Dist: google-auth; extra == "scenarioplanner"
|
|
53
|
+
Requires-Dist: mmm-proto-schema>=1.1.0; extra == "scenarioplanner"
|
|
54
|
+
Requires-Dist: semver; extra == "scenarioplanner"
|
|
51
55
|
Dynamic: license-file
|
|
52
56
|
|
|
53
57
|
# About Meridian
|
|
@@ -203,7 +207,7 @@ To cite this repository:
|
|
|
203
207
|
author = {Google Meridian Marketing Mix Modeling Team},
|
|
204
208
|
title = {Meridian: Marketing Mix Modeling},
|
|
205
209
|
url = {https://github.com/google/meridian},
|
|
206
|
-
version = {1.
|
|
210
|
+
version = {1.4.0},
|
|
207
211
|
year = {2025},
|
|
208
212
|
}
|
|
209
213
|
```
|
|
@@ -40,6 +40,8 @@ meridian/mlflow/__init__.py
|
|
|
40
40
|
meridian/mlflow/autolog.py
|
|
41
41
|
meridian/model/__init__.py
|
|
42
42
|
meridian/model/adstock_hill.py
|
|
43
|
+
meridian/model/context.py
|
|
44
|
+
meridian/model/equations.py
|
|
43
45
|
meridian/model/knots.py
|
|
44
46
|
meridian/model/media.py
|
|
45
47
|
meridian/model/model.py
|
|
@@ -64,7 +66,36 @@ meridian/templates/stats.html.jinja
|
|
|
64
66
|
meridian/templates/style.scss
|
|
65
67
|
meridian/templates/summary.html.jinja
|
|
66
68
|
meridian/templates/table.html.jinja
|
|
69
|
+
scenarioplanner/__init__.py
|
|
70
|
+
scenarioplanner/mmm_ui_proto_generator.py
|
|
71
|
+
scenarioplanner/converters/__init__.py
|
|
72
|
+
scenarioplanner/converters/mmm.py
|
|
73
|
+
scenarioplanner/converters/mmm_converter.py
|
|
74
|
+
scenarioplanner/converters/sheets.py
|
|
75
|
+
scenarioplanner/converters/test_data.py
|
|
76
|
+
scenarioplanner/converters/dataframe/__init__.py
|
|
77
|
+
scenarioplanner/converters/dataframe/budget_opt_converters.py
|
|
78
|
+
scenarioplanner/converters/dataframe/common.py
|
|
79
|
+
scenarioplanner/converters/dataframe/constants.py
|
|
80
|
+
scenarioplanner/converters/dataframe/converter.py
|
|
81
|
+
scenarioplanner/converters/dataframe/dataframe_model_converter.py
|
|
82
|
+
scenarioplanner/converters/dataframe/marketing_analyses_converters.py
|
|
83
|
+
scenarioplanner/converters/dataframe/rf_opt_converters.py
|
|
84
|
+
scenarioplanner/linkingapi/__init__.py
|
|
85
|
+
scenarioplanner/linkingapi/constants.py
|
|
86
|
+
scenarioplanner/linkingapi/url_generator.py
|
|
67
87
|
schema/__init__.py
|
|
88
|
+
schema/mmm_proto_generator.py
|
|
89
|
+
schema/model_consumer.py
|
|
90
|
+
schema/test_data.py
|
|
91
|
+
schema/processors/__init__.py
|
|
92
|
+
schema/processors/budget_optimization_processor.py
|
|
93
|
+
schema/processors/common.py
|
|
94
|
+
schema/processors/marketing_processor.py
|
|
95
|
+
schema/processors/model_fit_processor.py
|
|
96
|
+
schema/processors/model_kernel_processor.py
|
|
97
|
+
schema/processors/model_processor.py
|
|
98
|
+
schema/processors/reach_frequency_optimization_processor.py
|
|
68
99
|
schema/serde/__init__.py
|
|
69
100
|
schema/serde/constants.py
|
|
70
101
|
schema/serde/distribution.py
|
|
@@ -77,4 +108,5 @@ schema/serde/meridian_serde.py
|
|
|
77
108
|
schema/serde/serde.py
|
|
78
109
|
schema/serde/test_data.py
|
|
79
110
|
schema/utils/__init__.py
|
|
111
|
+
schema/utils/date_range_bucketing.py
|
|
80
112
|
schema/utils/time_record.py
|
|
@@ -5,7 +5,6 @@ joblib
|
|
|
5
5
|
natsort<8,>=7.1.1
|
|
6
6
|
numpy<3,>=2.0.2
|
|
7
7
|
pandas<3,>=2.2.2
|
|
8
|
-
patsy<1,>=0.5.3
|
|
9
8
|
scipy<2,>=1.13.1
|
|
10
9
|
statsmodels>=0.14.5
|
|
11
10
|
tensorflow<2.21,>=2.18
|
|
@@ -34,6 +33,12 @@ tensorflow-probability[substrates-jax]==0.25.0
|
|
|
34
33
|
[mlflow]
|
|
35
34
|
mlflow
|
|
36
35
|
|
|
36
|
+
[scenarioplanner]
|
|
37
|
+
google-api-python-client
|
|
38
|
+
google-auth
|
|
39
|
+
mmm-proto-schema>=1.1.0
|
|
40
|
+
semver
|
|
41
|
+
|
|
37
42
|
[schema]
|
|
38
|
-
mmm-proto-schema
|
|
43
|
+
mmm-proto-schema>=1.1.0
|
|
39
44
|
semver
|
|
@@ -318,7 +318,7 @@ class Summarizer:
|
|
|
318
318
|
chart_json=media_summary.plot_contribution_waterfall_chart().to_json(),
|
|
319
319
|
)
|
|
320
320
|
lead_channels = self._get_sorted_posterior_mean_metrics_df(
|
|
321
|
-
media_summary, [c.INCREMENTAL_OUTCOME]
|
|
321
|
+
media_summary, [c.INCREMENTAL_OUTCOME], include_non_paid_channels=True
|
|
322
322
|
)[c.CHANNEL][:2]
|
|
323
323
|
formatted_channels = [channel.title() for channel in lead_channels]
|
|
324
324
|
|
|
@@ -358,9 +358,14 @@ class Summarizer:
|
|
|
358
358
|
media_summary: visualizer.MediaSummary,
|
|
359
359
|
metrics: Sequence[str],
|
|
360
360
|
ascending: bool = False,
|
|
361
|
+
include_non_paid_channels: bool = False,
|
|
361
362
|
) -> pd.DataFrame:
|
|
363
|
+
if include_non_paid_channels:
|
|
364
|
+
summary_metrics = media_summary.get_all_summary_metrics()
|
|
365
|
+
else:
|
|
366
|
+
summary_metrics = media_summary.get_paid_summary_metrics()
|
|
362
367
|
return (
|
|
363
|
-
|
|
368
|
+
summary_metrics[metrics]
|
|
364
369
|
.sel(distribution=c.POSTERIOR, metric=c.MEAN)
|
|
365
370
|
.drop_sel(channel=c.ALL_CHANNELS)
|
|
366
371
|
.to_dataframe()
|