Python产品价格弹性生命周期和客户群利润点概率推理数学模型

55 篇文章 0 订阅
8 篇文章 0 订阅

🎯要点

  1. 🎯概率推理数学模型:🖊物种质量分布线性模型 | 🖊物种特征和质量关系预测线性回归模型 | 🖊婴儿年龄与身高线性预测模型 | 🖊商品和客户交互效应销售量线性回归模型 | 🖊单日租赁单车数量多项式回归模型和贝叶斯加性回归树模型 | 🖊不同植物不同条件二氧化碳吸收量多项式回归 | 🖊大气二氧化碳浓度年度预测回归模型,趋势年度预测自回归模型,卡尔曼滤波状态空间模型,每月出生率预测推理线性高斯状态空间模型 | 🖊航班延误问题甘贝尔似然贝叶斯模型。

  2. 🎯概率推理建模分析:🖊每日销售额预测市场需求 | 🖊营销组合手段 | 🖊iPhone 手机产品生命周期预测 | 🖊商品价格弹性估计 | 🖊体育数据精确度评估 | 🖊客户预期购买模式 |🖊营销预算安排 | 🖊量化个人年度阅读计划 | 🖊论文排序预测 | 🖊根据人流量预测通勤车到站时间 | 🖊制药厂估算疫苗功效 | 🖊USB接头正确连接可能性 | 🖊朋友亲属左撇子可能性 | 🖊光电发射器激光粒子泊松分布辐射 | 🖊客户群预期利润点。

  3. 🎯概率推理神经网络图像识别、预测波形分布、图像分类、神经网络客户群预期利润增长点。

🍇Python估算营销推送购买服务效果

一项测试通过应用内购买衡量的与用户互动的推送的实验:随机选择 10000 个客户,并为每个客户分配 50% 的概率进行推送。 但是,当您执行测试时,您会注意到一些被分配接收推送的客户没有收到推送。 当你与工程师交谈时,他们说这是因为他们可能有一部旧手机,不支持营销团队设计的那种推送。

import os
import arviz as az
import graphviz as gr
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import seaborn as sns

from linearmodels.iv import IV2SLS

plt.style.use("bmh")
plt.rcParams["figure.figsize"] = [12, 7]
plt.rcParams["figure.dpi"] = 100
plt.rcParams["figure.facecolor"] = "white"

我们直接从存储库读取 app_push.csv 数据。

root_path = "https://raw.githubusercontent.com/data/"
data_path = os.path.join(root_path, "app_push.csv")

df = pd.read_csv(data_path)

n = df.shape[0]

df.head()

 in_app_purchase   push_assigned   push_delivered  0 47 1 1 1 43 1 0 2 51 51 1 3 49 1 0 4 79 0 0 \begin{array}{||l|l|l|l||} \hline & \text { in\_app\_purchase } & \text { push\_assigned } & \text { push\_delivered } \\ \hline 0 & 47 & 1 & 1 \\ \hline 1 & 43 & 1 & 0 \\ \hline 2 & 51 & 51 & 1 \\ \hline 3 & 49 & 1 & 0 \\ \hline 4 & 79 & 0 & 0 \\ \hline \end{array} 01234 in_app_purchase 4743514979 push_assigned 115110 push_delivered 10100

这里我们有来自实验的应用内购买数据。列push_signed 和push_received 指示用户是否被分配到推送组以及用户是否实际收到推送通知。

首先,我们进行初始探索性数据分析以了解数据。首先,我们比较两组之间的 in_app_purchase 分布。

fig, ax = plt.subplots(
    nrows=2, ncols=1, figsize=(9, 7), sharex=True, sharey=True, layout="constrained"
)
sns.histplot(x="in_app_purchase", hue="push_assigned", kde=True, data=df, ax=ax[0])
sns.histplot(x="in_app_purchase", hue="push_delivered", kde=True, data=df, ax=ax[1])
fig.suptitle("Histogram of in-app purchases", fontsize=16);

我们清楚地看到差异! 在筛选收到推送通知的用户时,我们发现 in_app_purchase 的值高于分配组中的用户。 这对于实验来说将是一个快速的胜利! 但我们也不应忽视不合规机制! 它可能隐藏实验中未控制的混杂因素。 我们来看看不合规的程度有多大。

fig, ax = plt.subplots(figsize=(10, 6))
df.query("push_assigned == 1")["push_delivered"].value_counts().plot(kind="bar", ax=ax)
ax.set(title="Push Delivered Count Among Push Assigned", xlabel="Push delivered", ylabel="Count");

我们发现大约 30% 分配给推送的用户没有收到推送。 可能是什么原因? 嗯,这可能与使用旧手机的用户不太可能收到推送通知有关。 如果我们通过仅过滤掉那些收到推送通知的用户来分析推送通知对购买的影响,这自然会产生偏差,因为这些用户更有可能拥有比对照更高的收入(新手机)。

这是我们将用来对问题进行建模的有向无环图。

g = gr.Digraph()

g.edge("push assigned", "push delivered")
g.edge("push delivered", "in app purchase")
g.edge("income", "in app purchase")
g.edge("income", "push delivered")
g.node("income", color="blue")
g
push assigned
income
push delivered
in app purchase

未被观察到的收入混杂因素打开了一条我们无法直接关闭的路径(它是一个分叉!)。

让我们以最后一张图作为更定量分析的起点。我们将运行普通最小二乘回归来估计推送通知对购买的影响。我们从作业组开始。首先,我们简单地计算一些统计数据。

df.groupby("push_assigned").agg({"in_app_purchase": ["mean", "std"]})

 in_app_purchase   mean   std   push_assigned  0 69.291675 25.771624 1 71.655270 26.310248 \begin{array}{||c||l|l|} \hline & \text { in\_app\_purchase } \\ \hline \hline & \text { mean } & \text { std } \\ \hline \hline \text { push\_assigned } & & \\ \hline \hline 0 & 69.291675 & 25.771624 \\ \hline \hline 1 & 71.655270 & 26.310248 \\ \hline \hline \end{array}  push_assigned 01 in_app_purchase  mean 69.29167571.655270 std 25.77162426.310248

平均差异似乎相对较小。我们可以通过普通最小二乘回归来量化它。

ols_formula = "in_app_purchase ~ 1 + push_assigned"
ols = IV2SLS.from_formula(formula=ols_formula, data=df).fit()
ols.summary.tables[1]

我们对收到推送通知的用户进行了类似的分析。

df.groupby("push_delivered").agg({"in_app_purchase": ["mean", "std"]})

 in_app_purchase   mean   std   push_delivered  0 65.518519 25.111324 1 79.449958 25.358723 \begin{array}{|c||l|l||} \hline & \text { in\_app\_purchase } \\ \hline \hline & \text { mean } & \text { std } \\ \hline \hline \text { push\_delivered } & & \\ \hline \hline 0 & 65.518519 & 25.111324 \\ \hline \hline 1 & 79.449958 & 25.358723 \\ \hline \hline \end{array}  push_delivered 01 in_app_purchase  mean 65.51851979.449958 std 25.11132425.358723

ols_formula = "in_app_purchase ~ 1 + push_delivered"
ols = IV2SLS.from_formula(formula=ols_formula, data=df).fit()
ols.summary.tables[1]

我们甚至可以尝试通过将分配组作为协变量纳入回归来控制分配组。

ols_formula = "in_app_purchase ~ 1 + push_assigned + push_delivered"
ols = IV2SLS.from_formula(formula=ols_formula, data=df).fit()
ols.summary.tables[1]

总之,问题在于与作业和结果相关的未观察到的混杂因素。我们可以使用工具变量来获得更好的估计

  • 我们将 in_app_purchase ( y ) (y) (y) 建模为 Push_delivered t t t 和误差项 ε y \varepsilon_y εy 的函数。
  • 同时,我们将处理模型化为push_assigned z z z 和误差项 ε t \varepsilon_t εt 的函数。

我们假设误差的联合分布可以通过均值为零和协方差矩阵 Σ \Sigma Σ​的多元正态分布来参数化。

参阅一:计算思维

参阅二:亚图跨际

  • 16
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值