数据分析:留存率曲线拟合
2017-03-22 11:44
1021 查看
留存率,在数据分析中,我认为是一个比较好用的指标,因为比较稳定,不会很容易受外界因素的干扰,大幅波动。例如活动,推广等。可以用来做用户的分类,做用户规模预测。
我们看到的留存曲线通常是这样的:
这里介绍几种留存率曲线拟合的方法:
1.用excel 拟合:
拟合样本,1日~12日留存率,画好曲线图后,为曲线图添加趋势线,选择对数或者幂函数(通常对数比较多),显示公式和R平方值,R平方值越接近1,说明拟合效果越好。
如下图,蓝色曲线为真实值,拟合的橙色点线和真实值还是有差异,但效果还是不错的。
y=-0.055ln(x)+0.6382, R平方=0.9894
2.SPSS拟合
操作:R1: [1,2,3,...,12], R2 为对应的12个留存率,选择: 分析-回归-曲线估计,因变量=R2,自变量-变量=R1, 模型=对数, 保存:选预测值,残差,预测区间 - 确定 即可。
y=-0.61ln(x)+0.630 , R平方=0.975
3.python拟合:
#coding:utf-8
import numpy as np
from scipy.optimize import leastsq
import pylab as pl
import math
#定义函数
#y= a*ln(x)+b
def func(x,p):
A,B=p
return A*np.log(x)+B
#定义残差函数
def residuals(p,y,x):
ret=y-func(x,p)
return ret
x3=np.linspace(0,30,1000) #用于画图精度的调节
x0=[1,2,3,4,5,6,7,8,9,10,11,12] #x变量, 在这里2,3,7全部减1
x2=np.array(x0) #向量化x变量
y0=[0.64,0.60,0.58,0.56,0.56,0.55,0.54,0.52,0.52,0.50,0.50,0.50] #y
y2=np.array(y0)#向量化
p0=[0.5,0.5]#取值起始点
qs=leastsq(residuals,p0,args=(y2,x2)) #最小二乘法
print qs[0] #为最佳的拟合函数参数
pl.plot(x0,y0,label='Real',color='red') #画出实际图像
pl.plot(x3,func(x3,qs[0]),label='sim',color='blue') #预测图像如下图:
y=-0.0572ln(x)+0.6428
4.以上几种方式 得出的结果略有差异,不过都是可以接受的。
我们看到的留存曲线通常是这样的:
这里介绍几种留存率曲线拟合的方法:
1.用excel 拟合:
拟合样本,1日~12日留存率,画好曲线图后,为曲线图添加趋势线,选择对数或者幂函数(通常对数比较多),显示公式和R平方值,R平方值越接近1,说明拟合效果越好。
如下图,蓝色曲线为真实值,拟合的橙色点线和真实值还是有差异,但效果还是不错的。
y=-0.055ln(x)+0.6382, R平方=0.9894
2.SPSS拟合
操作:R1: [1,2,3,...,12], R2 为对应的12个留存率,选择: 分析-回归-曲线估计,因变量=R2,自变量-变量=R1, 模型=对数, 保存:选预测值,残差,预测区间 - 确定 即可。
y=-0.61ln(x)+0.630 , R平方=0.975
3.python拟合:
#coding:utf-8
import numpy as np
from scipy.optimize import leastsq
import pylab as pl
import math
#定义函数
#y= a*ln(x)+b
def func(x,p):
A,B=p
return A*np.log(x)+B
#定义残差函数
def residuals(p,y,x):
ret=y-func(x,p)
return ret
x3=np.linspace(0,30,1000) #用于画图精度的调节
x0=[1,2,3,4,5,6,7,8,9,10,11,12] #x变量, 在这里2,3,7全部减1
x2=np.array(x0) #向量化x变量
y0=[0.64,0.60,0.58,0.56,0.56,0.55,0.54,0.52,0.52,0.50,0.50,0.50] #y
y2=np.array(y0)#向量化
p0=[0.5,0.5]#取值起始点
qs=leastsq(residuals,p0,args=(y2,x2)) #最小二乘法
print qs[0] #为最佳的拟合函数参数
pl.plot(x0,y0,label='Real',color='red') #画出实际图像
pl.plot(x3,func(x3,qs[0]),label='sim',color='blue') #预测图像如下图:
y=-0.0572ln(x)+0.6428
4.以上几种方式 得出的结果略有差异,不过都是可以接受的。
相关文章推荐
- B题 2010年上海世博会影响力的定量评估---数据曲线拟合
- VC环境中调用TeeChart控件实现数据曲线分析(转载)
- 【python数据挖掘课程】十四.Scipy调用curve_fit实现曲线拟合
- python - 抓取汇率数据分析美元和欧元对RMB的变化曲线
- 实验数据的近似曲线拟合
- python数据挖掘学习笔记】十四.Scipy调用curve_fit实现曲线拟合
- Maple数据分析 级数与拟合
- 关于绘图 ——学习用origin进行数据的拟合、分析和预测
- MATLAB绘制三维曲线进行数据分析
- 小白学数据分析----->留存率是什么?
- Python中利用guiqwt进行曲线数据拟合
- 小白学数据分析----->留存率的三个普适原则
- 空间二次曲面数据拟合算法推导及仿真分析
- 算法系列之二十一:实验数据与曲线拟合
- 1stOpt——世界领先的非线性曲线拟合,综合优化分析计算软件平台
- 小白学数据分析----->留存率分析_I[次日留存率突然下降了50%?]
- 小白学数据分析----->留存率与运营活动分析_I
- R:使用R内置的mtcars数据框生成散点图及拟合曲线
- 数值分析(拟合、插值和逼近)之数据插值方法(线性插值、二次插值、Cubic插值、埃米尔特、拉格朗日多项式插值、牛顿插值、样条插值)(含opengl程序)