nonparametric varying coefficient model
Project description
非参数化VCM时间片轮转实验评估
1. 更新
增加指标增量delta估计(2021-12-01)
说明:对于比例指标 $ratio = \frac{y}{x}$, 先用模型估计在拉齐分母$x$下的分子增量$\Delta_y$,然后用$\Delta_{ratio} = \frac{\Delta_y}{x_{treatment}}$ 计算比例的提升。
2. 使用例子
import pandas as pd
import numpy as np
from datetime import datetime
from scipy.stats import norm
from NonParamVCM import NonParamVCM
############################ 评估比例指标 ############################
np.random.seed(10)
# 输入待评估数据数据
data = pd.read_csv('./data/data_example.csv')
# 响应变量,对比例指标的评估选择分子
ycol = ['wandan_cnt_pcl']
# 潜在协变量
xcols = ['hujiao_cnt_pcl', 'like_gesake_online_dur',
'intercept','exp_group', 'intensity',
'temperature', 'is_weekend']
# 对比例指标的评估选择分母,常规指标设置为空list
denominator = ['hujiao_cnt_pcl']
# 基函数数量
knots = 10
# 正则化惩罚参数
lamb = 1e-4
# 协变量选择阈值
threshold = 1e-2
# bootstrap迭代次数
runs = 500
# 评估时间区间(小时)
sum_window = np.arange(6,23)
# 非参VCM模型评估
result = NonParamVCM(data=data, ycol=ycol, xcols=xcols, denominator=denominator,
knots=knots, lamb =lamb, threshold=threshold,
sum_window = sum_window, runs = runs)
# 结果result 中包含p值,策略在各个小时上的效应,各个城市选择的协变量,实验组和对照组指标观测值平均以及策略带来的提升(delta)
############################ 评估常规指标 ############################
data = data
ycol = ['gmv']
xcols = ['call_cnt', 'temperature', 'online_time','is_weekend', 'exp_group']
knots = 10
lamb = 1e-4
threshold = 1e-2
runs = 100 # number of bootstrap iteration
sum_window = np.arange(6,24) # treatment time window
result_gmv = NonParamVCM(data=data, ycol=ycol, xcols=xcols, knots=knots, lamb =lamb, threshold=threshold, sum_window = sum_window, runs = runs)
详细的评估过程和数据导入,见 ‘评估脚本.ipynb’
3. 输出结果分析
NonParamVCM运行过程中会输出三个主要结果(对各个城市,以及所有城市汇总)
分别展示:
- 策略在各个小时上对指标的提升(比例指标则是对分子),以及置信区间;
- 一天之内(或者sum_window指定的时间区间)策略提升总量和零假设(没有提升)下的估计值分布的比较;
- 实验组和对照组指标观测值,策略带来的提升值(delta),p值,以及对于该城市模型选择的协变量
4. 主要参数简要说明
| 参数名称 | 参数含义 |
|---|---|
| ycol | 被评估的变量名称,如果评估比例指标则添加分子指标名称 |
| xcols | 所有潜在可能被拉齐的协变量,如果评估比例指标,必须包含分母变量 |
| denominator | 如果评估比例指标,则设置为分母变量名;对常规指标设定为空 |
| knots | 基函数个数(将协变量分时效应视为函数,将其在基函数(样条函数)上展开;通常选择一天中小时数的一半左右,比如24小时选择10个基函数) |
| lamb | 正则化协变量选择过程中的惩罚参数 |
| threshold | 在正则化回归后,只有其效应函数对应的$l_1$距离大于该参数的协变量才会最终进入到模型。 |
| sum_window | 用于评估的区间(比如只在早高峰进行策略的实验,设置sum_window = [7,8,9] (小时)) |
| runs | bootstrap构造置信区间时的迭代次数 |
5. NonParamVCM.py 中主要函数及功能:
| 函数名称 | 作用 |
|---|---|
| NonParamVCM | 总的评估函数:正则化协变量选择+elastic net 超参数选择 + elastic net评估实验效应评估 |
| covariates_selection | 正则化模型选择 |
| elastic_tuning | elastic net回归超参数选择 |
| elastic_predict | elastic net回归估计 |
| bootstrap | bootstrap构造参数置信区间 |
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
npvcm-0.0.1.tar.gz
(4.2 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
npvcm-0.0.1-py3-none-any.whl
(4.1 kB
view details)
File details
Details for the file npvcm-0.0.1.tar.gz.
File metadata
- Download URL: npvcm-0.0.1.tar.gz
- Upload date:
- Size: 4.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.26.0 requests-toolbelt/0.9.1 urllib3/1.26.6 tqdm/4.62.1 importlib-metadata/4.6.4 keyring/23.0.1 rfc3986/2.0.0 colorama/0.4.4 CPython/3.8.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f5053b5549e7b405a31c16e2efe94006d43a18da3f6948173ead4fbbf3f18bee
|
|
| MD5 |
0ae3a3c1986a6844646aebd936360f53
|
|
| BLAKE2b-256 |
21fd6d3ad181a9b421be49c0983307aa85e89a4ffaf1cfcb8054ba631602120e
|
File details
Details for the file npvcm-0.0.1-py3-none-any.whl.
File metadata
- Download URL: npvcm-0.0.1-py3-none-any.whl
- Upload date:
- Size: 4.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.26.0 requests-toolbelt/0.9.1 urllib3/1.26.6 tqdm/4.62.1 importlib-metadata/4.6.4 keyring/23.0.1 rfc3986/2.0.0 colorama/0.4.4 CPython/3.8.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
94ecaa330bdcd943d8cb18cda695f87776fc84c4656caa564a0e640404fb2102
|
|
| MD5 |
daf4d8c756457a0f72e257d4897ec897
|
|
| BLAKE2b-256 |
2e60f567412eca073b31561de466e88fa1edb235642e5ef5b5b6f36e3cab5643
|