2018年MathorCup高校数学建模挑战赛D题公交移动支付问题的评估方案解题思路与示例代码

一 问题

随着智能手机的普及和移动支付技术的提高,越来越多的支付手段可以转移到手机端。现有的现金缴费和实体公交卡刷卡的付费方式存在缺点,如公交卡在使用过程中存在着充值不方便、容易丢失、刷卡记录个人无法查看、跨地区无法使用等问题,现金支付带来很多不便,增加人工成本等,而公交移动支付则可以很好地解决这些问题。

以杭州为例,2016年,杭州每天乘坐公交车的乘客约390万人次,每天大概能收到170万零钱,约占公交票款金额的48%。旅游的黄金时间,比如2016年五一,投币金额达到260余万元。如果刷公交卡能使用移动支付,可以给市民和游客带来很大的方便。2017年5月23日,支付宝宣布,5月底前杭州市中心核心区域的公交线路支持支付宝,6月底前市区近5000辆公交车全部支持。以后,杭州本地市民和外地游客乘坐公交,无需再投币,刷手机或公交卡即可乘车。2017年4月,广州羊城通和支付宝宣布达成“互联网+”全面合作协议。未来,广州人可以把“羊城通”装进支付宝内,形成一张电子卡,无需再携带实体卡。2017年8月,由青岛真情巴士集团与支付宝合作,历时3个月推出的“青岛真情巴士公交卡”正式上线。

目前公交移动支付一般是通过第三方支付平台进行,现需要你对该项目进行分析和评估。

问题1:附件1,2中给出了某城市的部分公交支付的信息和数据说明,试分析该城市乘车人的出行支付特征。

问题2:建立一个公交第三方支付平台的商业盈利数学模型,定量分析公交

第三方支付平台的收支和盈利情况。(第三方支付平台的常见盈利模式见附件3)

问题3:问题1中给出的数据为四分之一的公交车和地铁安装移动支付设备后试营运期间得到的数据,根据问题1中的数据,试估计该城市全部公交实现公

交第三方平台支付后的盈利情况。

问题4:结合前面的计算结果和结论,给移动支付公司写一份500字以内的商业计划可行性报告,并给出增加公司盈利的可行性方案建议。

二 思路与示例代码

问题一

步骤1: 数据清洗

1.1 剔除没有上次乘车时间和本次乘车时间的记录,或者用本月的平均值进行填充。

1.2 根据每位乘客(ID)这个月乘地铁的次数、乘公交车的次数以及总次数进行排序,并剔除次数太少的乘客数据。

1.3 根据乘车记录的时间间隔,剔除间隔太长的数据。

1.4 将不是公交移动支付和公交卡支付的其他支付方式的数据进行剔除。

步骤2: 数据分析

2.1 分析每天的支付方式,包括地铁和公交,统计支付方式的占比,并制作饼状图或柱状图。

2.2 根据不同时间段,例如早晨、中午、傍晚,统计不同支付方式的占比,并绘制相应图表。

2.3 将乘车时间分为不同区间,如短途、中途、长途,然后统计在不同时间区间内的支付方式分布。

2.4 根据乘车次数和乘车方式(地铁、公交)分析支付方式的偏好。

2.5 对于每个乘客,统计他们的每天乘车次数和整个月的乘车次数,并根据次数进行支付方式的分析。

2.6 如果有周末或节假日的信息,分析这些特殊日期的支付方式。

步骤3: 数据可视化

3.1 利用可视化工具如Matplotlib、Seaborn等绘制图表来呈现上述分析的结果,包括饼状图、柱状图、折线图等。

步骤4: 数据解释

4.1 解释每个分析结果的含义,为什么某种支付方式在某一时间段或人群中更常见。

4.2 引入相关领域的知识,以帮助解释支付特征的可能原因。

步骤5: 总结和报告

5.1 汇总各个分析结果,形成问题1的解答。

5.2 针对每个分析结果,提供相关见解和结论。

5.3 最终总结出该城市乘车人的出行支付特征,以回答问题1。

问题一示例代码

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

# 步骤1: 数据清洗
# 读取数据
data = pd.read_csv('your_data.csv')

# 剔除没有上次乘车时间和本次乘车时间的记录
data = data.dropna(subset=['LASTTIME', 'UPTIME'])

# 剔除次数太少的乘客数据
data = data.groupby('ID').filter(lambda x: len(x) >= 5)  # 根据需求调整最小次数

# 剔除间隔太长的数据
data['TIME_INTERVAL'] = (pd.to_datetime(data['UPTIME']) - pd.to_datetime(data['LASTTIME'])).dt.total_seconds()
data = data[data['TIME_INTERVAL'] <= 24*60*60]  # 间隔小于1天的数据

# 剔除不是公交移动支付和公交卡支付的数据
data = data[(data['PAYTYPE'] == 0) | (data['PAYTYPE'] == 1)]

# 步骤2: 数据分析
# 步骤3: 数据可视化
# 分析每天的支付方式
daily_payment = data.groupby(data['UPTIME'].dt.day)['PAYTYPE'].value_counts(normalize=True).unstack()
daily_payment.plot(kind='bar', stacked=True)
plt.title('Daily Payment Method Distribution')
plt.xlabel('Day of the Month')
plt.ylabel('Proportion')
plt.legend(title='Payment Method', loc='upper right')
plt.show()

# 保存数据
data.to_csv('cleaned_data.csv', index=False)

问题二

步骤1: 数据收集和准备

首先,您需要收集必要的数据,包括支付平台的收入和支出的历史数据,以及与盈利相关的各种因素,如手续费、广告费、沉淀资金的利息收入、服务费等。这些数据可能需要从不同来源获取,包括财务报表、交易记录和市场研究。

步骤2: 特征选择和数据预处理

在数据准备阶段,选择与盈利直接相关的特征(影响因素)。这些特征可以包括手续费收入、广告费支出、沉淀资金的利息收入、服务费支出等。还需要对数据进行清洗和预处理,包括处理缺失值、异常值和数据格式转换。

步骤3: 模型选择

选择一个适当的数学模型来表示公交第三方支付平台的盈利情况。考虑使用多元线性回归、决策树回归、随机森林回归、神经网络等模型来建立关于盈利和影响因素之间的关系。

步骤4: 模型建立

根据选定的模型,使用历史数据进行模型训练。将历史数据分为训练集和测试集,以评估模型的性能。模型的输出应该是盈利的预测值。

步骤5: 模型评估和调优

评估模型的性能,使用合适的性能指标(如均方误差、决定系数R²等)来评价模型的准确性。如果模型的性能不满足要求,可以考虑调整模型的超参数或尝试其他模型。

步骤6: 盈利预测和分析

使用训练好的模型对未来的数据进行盈利预测。这可以包括根据不同影响因素的假设情况来生成预测,或者根据实际数据进行实时预测。分析模型的输出,了解不同因素对盈利的影响,以及如何优化盈利。

步骤7: 业务策略建议

基于模型的分析结果,提出业务策略建议,包括如何最大化盈利、降低成本、增加收入等。这些建议可以基于不同影响因素的变化情况来制定。

问题二示例代码

import pandas as pd
from sklearn.linear_model import LinearRegression

# 创建示例数据
data = pd.DataFrame({
    '手续费': [100, 200, 150, 180, 250],
    '广告费': [50, 80, 70, 60, 90],
    '利息收入': [30, 40, 35, 45, 25],
    '服务费': [20, 30, 25, 35, 15],
    '盈利': [3000, 4000, 3500, 4500, 2500]
})

# 选择特征和目标变量
X = data[['手续费', '广告费', '利息收入', '服务费']]
y = data['盈利']

# 创建线性回归模型
model = LinearRegression()

# 拟合模型
model.fit(X, y)

# 获取模型系数和截距
coefficients = model.coef_
intercept = model.intercept_

print("模型系数:", coefficients)
print("截距:", intercept)

new_data_point = pd.DataFrame({
    '手续费': [120],
    '广告费': [65],
    '利息收入': [32],
    '服务费': [28]
})

predicted_profit = model.predict(new_data_point)
print("预测盈利:", predicted_profit)

问题三

步骤1: 数据准备

  1. 收集问题1中清洗和分析过的数据,其中包括支付方式、乘车时间、乘客特征等。

  2. 获取公交和地铁的价格数据,包括票价、不同车型的价格、不同时间段的价格等。这些价格数据可以从官方或相关网站获取。

步骤2: 模型应用

使用问题2中建立的商业盈利数学模型来估计全部公交车实现第三方支付平台后的盈利情况。为此,需要进行以下步骤:

2.1. 针对每一辆公交车,将支付方式从非移动支付改为移动支付,以模拟实施第三方支付平台。

2.2. 基于问题2中的模型,根据模拟的数据来估计新的盈利情况。对于每辆公交车,计算其盈利的变化。

2.3. 对所有公交车的盈利变化进行汇总,得出全部公交车实现第三方支付平台后的总盈利估计。

步骤3: 盈利估计与分析

3.1. 比较实施第三方支付平台前后的盈利估计,以了解其影响。可以计算总盈利的变化,以及不同公交车的盈利变化。

3.2. 分析变化的原因,例如是否有支付方式切换导致的客流增加、是否有成本减少、是否有新的广告收入等。

3.3. 根据分析结果,为公交第三方支付平台的实施提供建议和预测。这可以包括收入增加的潜在机会、成本减少的潜力和市场潜力。

问题三示例代码

import pandas as pd

# 创建示例数据
data = pd.DataFrame({
    '乘车人ID': [1, 2, 3, 4, 5],
    '支付方式': ['移动支付', '公交卡支付', '公交卡支付', '现金支付', '移动支付'],
    '盈利变化': [0, 0, 0, 0, 0]  # 初始化为0,表示没有变化
})

# 模拟支付方式的变化,假设全部改为移动支付
data['支付方式'] = '移动支付'

# 从问题2中获取模型的系数
coefficients = [100, -50, 20, -10]  # 假设系数,根据实际模型获得

# 使用模型系数估计盈利的变化
data['盈利变化'] = coefficients[0] * data['手续费'] + coefficients[1] * data['广告费'] + coefficients[2] * data['利息收入'] + coefficients[3] * data['服务费']

# 计算总盈利变化
total_profit_change = data['盈利变化'].sum()

print("总盈利变化:", total_profit_change)

你可能感兴趣的:(数学建模,python)