{"id":31649278,"url":"https://github.com/imswappy/ads-eda-predictor","last_synced_at":"2026-05-02T18:31:51.425Z","repository":{"id":317266824,"uuid":"1066686771","full_name":"Imswappy/ads-eda-predictor","owner":"Imswappy","description":"Interactive Streamlit app for marketing campaign analytics and prediction. Includes dashboards, EDA, econometrics tests (ADF, cointegration, OLS diagnostics), ML pipelines with preprocessing, CV, and persistence. Predict outcomes with Linear/Ridge/Lasso/Random Forest regressors.","archived":false,"fork":false,"pushed_at":"2025-09-29T21:01:37.000Z","size":337,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-29T22:30:32.075Z","etag":null,"topics":["adf","breusch-pagan","cointegration","lasso-regression","linear-regression","matplotlib-pyplot","numpy","pandas","random-forest","ridge-regression","seaborn","sklearn"],"latest_commit_sha":null,"homepage":"https://ads-eda-predictor.streamlit.app/","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Imswappy.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-29T20:30:38.000Z","updated_at":"2025-09-29T21:01:41.000Z","dependencies_parsed_at":"2025-09-30T01:31:39.512Z","dependency_job_id":null,"html_url":"https://github.com/Imswappy/ads-eda-predictor","commit_stats":null,"previous_names":["imswappy/ads-eda-predictor"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/Imswappy/ads-eda-predictor","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Imswappy%2Fads-eda-predictor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Imswappy%2Fads-eda-predictor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Imswappy%2Fads-eda-predictor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Imswappy%2Fads-eda-predictor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Imswappy","download_url":"https://codeload.github.com/Imswappy/ads-eda-predictor/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Imswappy%2Fads-eda-predictor/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278740831,"owners_count":26037480,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-07T02:00:06.786Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["adf","breusch-pagan","cointegration","lasso-regression","linear-regression","matplotlib-pyplot","numpy","pandas","random-forest","ridge-regression","seaborn","sklearn"],"created_at":"2025-10-07T07:41:54.839Z","updated_at":"2025-10-07T07:41:58.841Z","avatar_url":"https://github.com/Imswappy.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🤖 Marketing Data Science Studio — EDA, Econometrics \u0026 Predictive Pipelines\n\n[![Streamlit App](https://img.shields.io/badge/Streamlit-Deployed-brightgreen)](https://ads-eda-predictor.streamlit.app/)  \n[![GitHub Repo](https://img.shields.io/badge/GitHub-Code-blue)](https://github.com/Imswappy/ads-eda-predictor)\n\n---\n\n## 📌 Overview\n\nThis project extends Jupyter notebook analyses into an **interactive Streamlit dashboard** for **marketing campaign analytics**.  \nIt integrates **fundamentals of data exploration**, **statistical inference**, **econometrics tests**, and **machine learning pipelines**.  \n\nThe focus is on comparing **Facebook Ads** vs **AdWords Ads** campaigns — analyzing clicks, conversions, costs, and predicting ad performance.\n\n🔗 **Live App:** [ads-eda-predictor.streamlit.app](https://ads-eda-predictor.streamlit.app/)  \n🔗 **Source Code:** [github.com/Imswappy/ads-eda-predictor](https://github.com/Imswappy/ads-eda-predictor)\n\n---\n\n## 📂 Pages in the App\n\n### 1️⃣ Dashboard — KPIs \u0026 Time-Series\n- **KPIs:**\n  - Mean:  \n    $$\\bar{X} = \\frac{1}{n}\\sum_{i=1}^n X_i$$\n  - Variance:  \n    $$s^2 = \\frac{1}{n-1}\\sum_{i=1}^n (X_i - \\bar{X})^2$$\n  - Standard Error:  \n    $$\\text{SEM} = \\frac{s}{\\sqrt{n}}$$\n- **Time-series:** detects seasonality, trends, and structural breaks.\n- **Scatter + OLS Regression:**\n  $$\\hat\\beta_1 = \\frac{\\sum (X_i - \\bar X)(Y_i - \\bar Y)}{\\sum (X_i - \\bar X)^2},\\qquad \\hat\\beta_0 = \\bar Y - \\hat\\beta_1 \\bar X.$$\n\n---\n\n### 2️⃣ Exploratory Data Analysis (EDA)\n- **Distributions \u0026 Moments:**\n  - Skewness:  \n    $$\\text{Skew} = \\frac{1}{n}\\sum\\left(\\frac{X_i - \\bar X}{s}\\right)^3$$\n  - Kurtosis:  \n    $$\\text{Kurt} = \\frac{1}{n}\\sum\\left(\\frac{X_i - \\bar X}{s}\\right)^4$$\n- **Histogram \u0026 KDE:**\n  $$\\hat f(x) = \\frac{1}{nh}\\sum_{i=1}^n K\\left(\\frac{x - X_i}{h}\\right)$$\n- **Correlation (Pearson):**\n  $$r_{XY} = \\frac{\\sum (X_i - \\bar X)(Y_i - \\bar Y)}{\\sqrt{\\sum (X_i - \\bar X)^2}\\sqrt{\\sum (Y_i - \\bar Y)^2}}.$$\n\n---\n\n### 3️⃣ Statistical Tests \u0026 Regression Diagnostics\n- **ADF (Stationarity):**\n  $$\\Delta Y_t = \\alpha + \\beta t + \\gamma Y_{t-1} + \\sum_{i=1}^p \\delta_i \\Delta Y_{t-i} + \\varepsilon_t.$$\n- **Cointegration (Engle-Granger):**\n  - Regress residuals and check for stationarity.\n- **Breusch–Pagan Test (Heteroscedasticity):**\n  $$H_0: \\text{Var}(\\varepsilon) = \\sigma^2 \\quad vs \\quad H_1: \\text{Var}(\\varepsilon) = f(X)$$\n- **Diagnostics:** residual plots, robust SEs, adjusted $$R^2$$, AIC/BIC.\n\n---\n\n### 4️⃣ Notebook Reproductions\n- Replicates matplotlib \u0026 seaborn plots for **validation**.\n- **LOWESS smoothing:**  \n  $$\\hat f(x_0) = \\arg\\min_\\beta \\sum w_i(x_0)(y_i - \\beta_0 - \\beta_1 x_i)^2$$  \n  where weights decay with distance from $$x_0$$.\n\n---\n\n### 5️⃣ Predictor — Pipelines, CV \u0026 Model Persistence\n- **Preprocessing (ColumnTransformer):**\n  - Numeric: Median imputation + scaling.  \n    - StandardScaler: $$X' = \\frac{X - \\mu}{\\sigma}$$  \n    - MinMaxScaler: $$X' = \\frac{X - X_{\\min}}{X_{\\max}-X_{\\min}}$$\n  - Categorical: Rare-category grouping → most-frequent imputation → OneHotEncoding.\n\n- **Models:**\n  - Linear Regression (OLS)  \n  - Ridge (L2):  \n    $$\\min_\\beta \\sum (y_i - X_i\\beta)^2 + \\alpha \\|\\beta\\|_2^2$$\n  - Lasso (L1):  \n    $$\\min_\\beta \\sum (y_i - X_i\\beta)^2 + \\alpha \\|\\beta\\|_1$$\n  - Random Forest (Ensemble):  \n    $$\\hat f(x) = \\frac{1}{B}\\sum_{b=1}^B T_b(x)$$\n\n- **Evaluation:**\n  - RMSE:  \n    $$\\text{RMSE} = \\sqrt{\\frac{1}{n}\\sum (y_i - \\hat y_i)^2}$$\n  - $$R^2 = 1 - \\frac{\\sum (y_i - \\hat y_i)^2}{\\sum (y_i - \\bar y)^2}$$\n- **Persistence:** trained pipelines saved with `joblib` for reuse.\n\n---\n\n## 🚀 Deployment\n- Built with **Streamlit** (multi-page app).  \n- Deployed on **Streamlit Cloud**: [ads-eda-predictor.streamlit.app](https://ads-eda-predictor.streamlit.app/)  \n- Repository: [github.com/Imswappy/ads-eda-predictor](https://github.com/Imswappy/ads-eda-predictor)\n\n---\n\n## 🛠️ Skills Involved\n- **Python** (pandas, numpy, matplotlib, seaborn)  \n- **Machine Learning** (Linear/Ridge/Lasso, Random Forest, pipelines, CV)  \n- **Statistical Inference** (ADF, Cointegration, Breusch–Pagan, OLS diagnostics)  \n- **Data Visualization** (Plotly, Altair, Seaborn, Matplotlib)  \n- **Streamlit** (multi-page UI, state management, deployment)  \n- **Model Deployment** (joblib persistence, end-to-end reproducibility)\n\n---\n\n## 📸 Screenshots\n\u003cimg width=\"1497\" height=\"796\" alt=\"image\" src=\"https://github.com/user-attachments/assets/8524dc73-96d1-4c47-9a38-c8f8544e05a9\" /\u003e\n\u003cimg width=\"1436\" height=\"744\" alt=\"image\" src=\"https://github.com/user-attachments/assets/2f69ae95-1646-4012-9368-928f434eaf85\" /\u003e\n\u003cimg width=\"1493\" height=\"835\" alt=\"image\" src=\"https://github.com/user-attachments/assets/903d21b1-0036-4548-b15b-7cbd570b85c4\" /\u003e\n\u003cimg width=\"1518\" height=\"763\" alt=\"image\" src=\"https://github.com/user-attachments/assets/92442c98-216b-45e5-aa71-0d3618239184\" /\u003e\n\u003cimg width=\"1509\" height=\"737\" alt=\"image\" src=\"https://github.com/user-attachments/assets/bbb29443-37d9-4c57-b5ae-97720f41526e\" /\u003e\n\u003cimg width=\"1118\" height=\"772\" alt=\"image\" src=\"https://github.com/user-attachments/assets/60140940-ec0c-439b-83cc-55e0f4114ed5\" /\u003e\n\u003cimg width=\"1448\" height=\"824\" alt=\"image\" src=\"https://github.com/user-attachments/assets/859abd78-8d6d-43fa-bac7-03a6e87fde18\" /\u003e\n\u003cimg width=\"1581\" height=\"860\" alt=\"image\" src=\"https://github.com/user-attachments/assets/f99a9c8d-1c7d-460a-89c7-ace6cfd7e5a2\" /\u003e\n\u003cimg width=\"1697\" height=\"835\" alt=\"image\" src=\"https://github.com/user-attachments/assets/a31f0ecd-2470-4876-a37d-be00c3936aee\" /\u003e\n\n---\n\n## ⚡ Getting Started\n\n```bash\n# Clone repo\ngit clone https://github.com/Imswappy/ads-eda-predictor.git\ncd ads-eda-predictor\n\n# Install dependencies\npip install -r requirements.txt\n\n# Run Streamlit app locally\nstreamlit run streamlit_app.py\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fimswappy%2Fads-eda-predictor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fimswappy%2Fads-eda-predictor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fimswappy%2Fads-eda-predictor/lists"}