基于MATLAB ,有关2018年全国大学生数学建模竞赛题目C:大型百货商场会员画像描绘的部分代码解析

文章通过对会员消费频率的分析,利用MATLAB建立对数线性模型计算激活概率,并通过最小二乘拟合评估模型精度。此外,探讨了促销活动与会员激活可能的关系,通过线性回归得出促销时期与激活可能的数学公式,证明促销活动能有效提升会员激活率。
摘要由CSDN通过智能技术生成

注意!此篇文章仅对激活率与促销相关代码进行解析。

当然表格的整理合并,数据清洗是肯定要事先准备好的。

1.激活率

此处我已经提前根据会员的消费频数(从会员入会到最近一次消费时间的购物次数)与会员时长(会员入会到最近一次消费的时间的时间总长)计算得出会员的消费频率f,再根据消费频率f用MATLAB绘制得出消费频率的分布函数图。

通过分布函数图的形状和特征,选择适合的分布函数来描述消费频率f的分布情况。将选定的分布函数转化为对数线性模型。这样的转化可以更好地描述非活跃会员的消费行为,并进一步计算他们从非活跃状态转化为活跃状态的概率。

 以上参考了文献资料,若想深入了解过程,可以移步大型百货商场会员画像描绘的研究 (cqvip.com)

以下是计算   c, b 的值代码:

% 请根据数据计算的消费频率值填充
f = [............];

% 计算 φ(f) 和 f 的对数值
log_phi_f = log(-log(1 - f));
log_f = log(f);

% 使用最小二乘拟合计算 b 和 c
A = [log_f, ones(size(f))];
coefficients = A \ log_phi_f;

% 提取 c 和 b 的值
c = coefficients(2);
b = coefficients(1);

% 显示结果
disp(['c = ', num2str(c)]);
disp(['b = ', num2str(b)]);

对以上模型进行精度检验:

% 给定的消费频率f数据
f = [0.00981204
    0.124864428
    0.004891614
    0.086337638
    0.009444158
    0.404529602
    0.058838632
    0.013087425
    0.062292839
    0.116258755];
% 计算 φ(f) 和 f 的对数值
log_phi_f = log(-log(1 - f));
log_f = log(f);
% 使用最小二乘拟合计算 b 和 c
A = [log_f, ones(size(f))];
coefficients = A \ log_phi_f;
% 提取 c 和 b 的值
c = coefficients(2);
b = coefficients(1);
% 计算拟合值
fit_values = exp(c) * f.^b;
% 计算残差和平方残差
residuals = log_phi_f - A * coefficients;
squared_residuals = residuals.^2;
% 计算总平方和、回归平方和和剩余平方和
sst = sum((log_phi_f - mean(log_phi_f)).^2);
sse = sum(squared_residuals);
ssr = sst - sse;
% 计算拟合精度指标
n = length(f);
p = 2; % 参数个数
df_e = n - p - 1; % 剩余自由度
df_r = p; % 回归自由度
mse = sse / df_e; % 均方误差
msr = ssr / df_r; % 回归均方差
% 计算 R^2 值
r_squared = 1 - sse / sst;
% 计算 F 统计量和对应的 p 值
f_stat = msr / mse;
p_value = 1 - fcdf(f_stat, df_r, df_e);
% 计算 e^2 值
e_squared = sse / sst;
% 显示结果
disp(['R^2 = ', num2str(r_squared)]);
disp(['F 统计量 = ', num2str(f_stat)]);
disp(['p 值 = ', num2str(p_value)]);
disp(['e^2 = ', num2str(e_squared)]);

    综合来看,根据提供的数据,该模型表现良好。R^2值接近1,F统计量和p值都非常显著,而且e^2值很小。这些指标表明该模型对观测数据的拟合效果非常好,能够很好地解释数据的变异性和误差部分。因此,可以认为该模型是一个较好的模型。

2.促销

针对促销,需要自行对促销时间下一个定义,并通过定义找出每年的促销时间,然后可以根据上面的激活可能模型公式进行计算,得出每年促销时间的激活可能,再对数据进行分析拟合,得到有关促销时间与激活可能的模型方程,进而确定激活可能与商场促销活动之间的关系。(此处参考了文献,详情请移步大型百货商场会员画像描绘的数学模型 (cqvip.com)

% 输入数据
x = ["2015上半年", "2015下半年", "2016上半年", "2016下半年", "2017上半年", "2017下半年"]; % 横坐标年份
y = [0.00756026, 0.011256519, 0.013749645, 0.065214593, 0.001558896, 0.235503544]; % 纵坐标激活可能

% 进行线性回归
coefficients = polyfit(1:length(x), y, 1);
slope = coefficients(1);
intercept = coefficients(2);

% 绘制函数图
x_fit = 1:length(x); % 用于拟合函数的横坐标数据
y_fit = slope * x_fit + intercept; % 拟合后的纵坐标数据

figure;
plot(1:length(x), y, 'o', 'LineWidth', 2);
hold on;
plot(x_fit, y_fit, 'r-', 'LineWidth', 2);
hold off;
xticks(1:length(x));
xticklabels(x);
xlabel('促销时期');
ylabel('激活可能');
legend('实际数据', '线性回归拟合');
title('激活可能随促销时期的变化');

% 显示斜率和截距
disp(['斜率:', num2str(slope)]);
disp(['截距:', num2str(intercept)]);

所以得到公式:y=0.33203t-0.060402 

根据图片可以观察到以下趋势:随着商场促销活动次数的增加以及促销时间的延长,会员的激活可能呈现出逐渐增加的趋势。这意味着促销活动对于提高会员的激活率具有积极的影响。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值