google-meridian 1.0.6__py3-none-any.whl → 1.0.7__py3-none-any.whl

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.
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.4
2
2
  Name: google-meridian
3
- Version: 1.0.6
3
+ Version: 1.0.7
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
  License:
@@ -222,12 +222,12 @@ Requires-Dist: arviz
222
222
  Requires-Dist: altair>=5
223
223
  Requires-Dist: immutabledict
224
224
  Requires-Dist: joblib
225
- Requires-Dist: numpy<2,>=1.26
226
- Requires-Dist: pandas<3,>=2.2
227
- Requires-Dist: scipy<1.13,>=1.12.0
228
- Requires-Dist: tensorflow<2.17,>=2.16
229
- Requires-Dist: tensorflow-probability<0.25,>=0.24
230
- Requires-Dist: tf-keras<2.17,>=2.16
225
+ Requires-Dist: numpy<3,>=2.0.2
226
+ Requires-Dist: pandas<3,>=2.2.2
227
+ Requires-Dist: scipy<2,>=1.13.1
228
+ Requires-Dist: tensorflow<2.19,>=2.18
229
+ Requires-Dist: tensorflow-probability<0.26,>=0.25
230
+ Requires-Dist: tf-keras<2.19,>=2.18
231
231
  Requires-Dist: xarray
232
232
  Provides-Extra: dev
233
233
  Requires-Dist: pytest>=8.0.0; extra == "dev"
@@ -237,7 +237,8 @@ Requires-Dist: pyink; extra == "dev"
237
237
  Provides-Extra: colab
238
238
  Requires-Dist: psutil; extra == "colab"
239
239
  Provides-Extra: and-cuda
240
- Requires-Dist: tensorflow[and-cuda]<2.17,>=2.16; extra == "and-cuda"
240
+ Requires-Dist: tensorflow[and-cuda]<2.19,>=2.18; extra == "and-cuda"
241
+ Dynamic: license-file
241
242
 
242
243
  # About Meridian
243
244
 
@@ -392,7 +393,7 @@ To cite this repository:
392
393
  author = {Google Meridian Marketing Mix Modeling Team},
393
394
  title = {Meridian: Marketing Mix Modeling},
394
395
  url = {https://github.com/google/meridian},
395
- version = {1.0.6},
396
+ version = {1.0.7},
396
397
  year = {2025},
397
398
  }
398
399
  ```
@@ -1,4 +1,5 @@
1
- meridian/__init__.py,sha256=JTdNHi-dOsZawBZe3t5m_sMIzqT1yaxaDZJn-p9bMvI,714
1
+ google_meridian-1.0.7.dist-info/licenses/LICENSE,sha256=WNHhf_5RCaeuKWyq_K39vmp9F28LxKsB4SpomwSZ2L0,11357
2
+ meridian/__init__.py,sha256=Hsjx0IKX4gDeskNWFqlAY2Q4KwLKzsKFOOmdiOqlKTA,714
2
3
  meridian/constants.py,sha256=pv59gIo7wlQR4blfF9om9pM9h2gKt2nysRpgEHdryfI,14661
3
4
  meridian/analysis/__init__.py,sha256=-FooDZ5OzePpyTVkvRoWQx_xBaRR_hjVLny9H8-kkyQ,836
4
5
  meridian/analysis/analyzer.py,sha256=xYngttdPBHHL-Nk-wQDmKNEL9KBKIFreFJg0Xzj-g4w,195295
@@ -20,7 +21,7 @@ meridian/analysis/templates/table.html.jinja,sha256=mvLMZx92RcD2JAS2w2eZtfYG-6Wd
20
21
  meridian/data/__init__.py,sha256=ixOYHDQExjnPTLLnZ758pRQscZP7c8QJqtc8P4hK-mE,774
21
22
  meridian/data/arg_builder.py,sha256=f7LEysYmixAagwygZOEiJkRnWggRhTeXj5AXthBpkQ8,3741
22
23
  meridian/data/input_data.py,sha256=tfqkuiQNO8GdgE6rqTKIuSPQbXZ1L3GOFdHL748FNvg,33400
23
- meridian/data/load.py,sha256=7pcA4UCIMC6ZUsfuqws4hGwf4tZD0jcIHajk8Fmn0Rg,54478
24
+ meridian/data/load.py,sha256=MKCnRoR8ZIfhEAcm5ZUQsjfoEzi1c9SDOgf6BR8Akr0,54642
24
25
  meridian/data/test_utils.py,sha256=LNtsAalrHuolw7JbdggesJjhc6HXuy_eGPPAf4ix42c,51756
25
26
  meridian/data/time_coordinates.py,sha256=U4Qv8kXKUYoSH0A5F3REkoScSvrFDHgf_LaxSybdTgo,9881
26
27
  meridian/model/__init__.py,sha256=bvx8vvXolktsCTDKViU9U1v85pgNWF3haDowTKy11d4,982
@@ -34,8 +35,7 @@ meridian/model/prior_distribution.py,sha256=6fqx_XIM0DSQICd65XaSRhelsjvZ4ariBfey
34
35
  meridian/model/prior_sampler.py,sha256=zGSAQviFO3s2GcVbfG9EfXxo_SNFBFbTQC3e-QBFzio,23079
35
36
  meridian/model/spec.py,sha256=xaHxfCLWLnWMAkMy2ouDoqGBHI_4tzzX8AaJOsKdu7Q,8878
36
37
  meridian/model/transformers.py,sha256=te3OJixprWLtv7O00a9GZWE4waTS94NNLVo3tWIl1-k,7420
37
- google_meridian-1.0.6.dist-info/LICENSE,sha256=WNHhf_5RCaeuKWyq_K39vmp9F28LxKsB4SpomwSZ2L0,11357
38
- google_meridian-1.0.6.dist-info/METADATA,sha256=ZmqP8f0Y2hGGapO7LFXrJSVeNWGUPNfho75i1LU8AfI,22033
39
- google_meridian-1.0.6.dist-info/WHEEL,sha256=beeZ86-EfXScwlR_HKu4SllMC9wUEj_8Z_4FJ3egI2w,91
40
- google_meridian-1.0.6.dist-info/top_level.txt,sha256=nwaCebZvvU34EopTKZsjK0OMTFjVnkf4FfnBN_TAc0g,9
41
- google_meridian-1.0.6.dist-info/RECORD,,
38
+ google_meridian-1.0.7.dist-info/METADATA,sha256=QgnvZGLD917PxfVVbeaGOFgMQelOAex_cNmvSCgoPdM,22055
39
+ google_meridian-1.0.7.dist-info/WHEEL,sha256=tTnHoFhvKQHCh4jz3yCn0WPTYIy7wXx3CJtJ7SJGV7c,91
40
+ google_meridian-1.0.7.dist-info/top_level.txt,sha256=nwaCebZvvU34EopTKZsjK0OMTFjVnkf4FfnBN_TAc0g,9
41
+ google_meridian-1.0.7.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (76.1.0)
2
+ Generator: setuptools (77.0.1)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
meridian/__init__.py CHANGED
@@ -14,7 +14,7 @@
14
14
 
15
15
  """Meridian API."""
16
16
 
17
- __version__ = "1.0.6"
17
+ __version__ = "1.0.7"
18
18
 
19
19
 
20
20
  from meridian import analysis
meridian/data/load.py CHANGED
@@ -950,7 +950,7 @@ class DataFrameDataLoader(InputDataLoader):
950
950
  raise ValueError('NA values found in the organic_frequency columns.')
951
951
 
952
952
  # Determine columns in which NAs are expected in the lagged-media period.
953
- na_columns = []
953
+ not_lagged_columns = []
954
954
  coords = [
955
955
  constants.KPI,
956
956
  constants.CONTROLS,
@@ -967,12 +967,12 @@ class DataFrameDataLoader(InputDataLoader):
967
967
  for coord in coords:
968
968
  columns = getattr(self.coord_to_columns, coord)
969
969
  columns = [columns] if isinstance(columns, str) else columns
970
- na_columns.extend(columns)
970
+ not_lagged_columns.extend(columns)
971
971
 
972
972
  # Dates with at least one non-NA value in columns different from media,
973
973
  # reach, frequency, organic_media, organic_reach, and organic_frequency.
974
974
  time_column_name = self.coord_to_columns.time
975
- no_na_period = self.df[(~self.df[na_columns].isna()).any(axis=1)][
975
+ no_na_period = self.df[(~self.df[not_lagged_columns].isna()).any(axis=1)][
976
976
  time_column_name
977
977
  ].unique()
978
978
 
@@ -999,13 +999,16 @@ class DataFrameDataLoader(InputDataLoader):
999
999
  # organic_frequency.
1000
1000
  not_lagged_data = self.df.loc[
1001
1001
  self.df[time_column_name].isin(no_na_period),
1002
- na_columns,
1002
+ not_lagged_columns,
1003
1003
  ]
1004
1004
  if not_lagged_data.isna().any(axis=None):
1005
+ incorrect_columns = []
1006
+ for column in not_lagged_columns:
1007
+ if not_lagged_data[column].isna().any(axis=None):
1008
+ incorrect_columns.append(column)
1005
1009
  raise ValueError(
1006
- 'NA values found in non-media columns outside the lagged-media'
1007
- f' period {na_period} (continuous window of 100% NA values in all'
1008
- ' non-media columns).'
1010
+ f'NA values found in columns {incorrect_columns} within the modeling'
1011
+ ' time window (time periods where the KPI is modeled).'
1009
1012
  )
1010
1013
 
1011
1014
  def load(self) -> input_data.InputData: