怎么理解tweedie分布?
3个回答
Tweedie分布是一种泊松分布和伽马分布的复合分布。
有三个参数,一个是$p$,当$p=1$,Tweedie就是泊松分布,当$p=2$,Tweedie就是伽马分布。
第二个参数是$\mu$,是Tweedie分布的期望。
第三个参数是$\phi$,控制Tweedie分布的方差。方差$Var=\phi \mu^p$。
直白一点理解就是,Tweedie随机变量是$X$个伽马随机变量的和。其中$X$是服从期望为$\mu^{(2-p)/(\phi(2-p))}$的泊松分布,其中每个伽马随机变量是独立同分布的,服从$\Gamma((2-p)/(p-1), \phi(p-1)\mu^{p-1})$。
Tweedie分布最明显的一个特点是以一定的概率生成数值为0的样本。Tweedie分布在商业场景中有很多例子,比如人们进入某个商城后的消费额。一部分人只是进去随便逛逛(比如蹭空调),所以消费额是0,另一部分客户是有消费额的,是随机的连续数值。
直方图是如下效果
谢谢!
-
FridaWang
2019-07-07 13:59
用python可以简单实现一下生成tweedie分布随机变量
import numpy as np
import matplotlib.pyplot as plt
def tweedie(n,p,mu,phi):
#checking the value of variance power between 1-2
result = np.full(n, np.nan)
# calculating mean of poisson distribution
lambdaa = mu ** (2 - p) / (phi * (2 - p))
# shape parameter of gamma distribution
alpha = (2 - p) / (1 - p)
# scale parameter of gamma distribution
gam = phi * (p - 1) * ( mu ** (p - 1))
# Generating Poisson random sample
rs = np.random.poisson(lambdaa, n)
for i in range(n):
# Generate single data point of gamma distribution using poisson random variable
result[i] = np.random.gamma(rs[i] * np.abs(alpha), gam, 1)
return result
x = tweedie(100000, 1.2, 3, 2)
plt.hist(x, bins=40)
plt.show()
上面随机产生了100000个随机点,分布如下。可以看出有很多0。
谢谢!
-
FridaWang
2019-07-07 13:59
简单来说,tweetie就是zero-inflated distribution。
有大量样本为0的非负分布,电商里常见的应用场景就是单次访问交易额,用户LTV之类