【2023年4月美赛加赛】Y题:Understanding Used Sailboat Prices 建模思路、建模方案、数据来源、相关资料、Python代码

简介: 本文提供了2023年MCM问题Y的解题思路、建模方案、数据来源、相关资料以及Python代码,旨在建立数学模型解释二手帆船的挂牌价格,并分析地区对价格的影响,以及在香港(SAR)市场上的应用。

在这里插入图片描述

相关链接

【2023年4月美赛加赛】Z题:The Future of the Olympics 思路、建模方案、数据来源、相关资料

【 2021 MathorCup杯大数据挑战赛 A题 二手车估价】初赛复赛总结、方案代码及论文

1 题目

2023年MCM 问题Y:理解二手帆船价格

和许多奢侈品一样,帆船的价值也会随着年代和市场条件的变化而变化。所附的“2023_MCM_Problem_Y_Boats.xlsx”文件包括2020年12月在欧洲、加勒比地区和美国销售的约3500艘36至56英尺长的帆船的数据。一名划船爱好者向COMAP提供了这些数据。像大多数现实世界的数据集一样,它可能有缺失的数据或其他问题,需要在分析之前进行一些数据清理。Excel文件包括两个选项卡,一个用于单体帆船,另一个用于双体船。在每个excel中的列包括:

  • Make:船的制造商名称。

  • Variant:标识特定型号的船名。

  • Length (ft):以英尺为单位的船的长度。

  • Geographic Region:船所在的地理区域(加勒比海、欧洲、美国)。

  • Country/Region/State:船只所在的具体国家/地区/州。挂牌价格(USD):以美元标价购买该船的广告价格。

  • Year:船的制造年份。

对于给定的制造、变体和年份,除了提供的Excel文件之外,还有许多其他来源可以提供特定帆船特征的详细描述。你可以用你选择的任何额外数据来补充所提供的数据集;但是,你必须在建模中包含“2023_MCM_Problem_Y_Boats.xlsx”中的数据。一定要完全识别并记录所使用的任何补充数据的来源。帆船经常通过经纪人出售。为了更好地了解帆船市场,中国香港(SAR)的一位帆船经纪人委托您的团队准备一份关于二手帆船定价的报告。该经纪人希望您:

  • 开发一个数学模型,解释提供的电子表格中每艘帆船的挂牌价格。包括任何你认为有用的预测因素。您可以利用其他来源来了解给定帆船的其他特征(如横梁、吃水、排水量、索具、帆面积、船体材料、发动机小时数、睡眠容量、净空、电子设备等)以及按年份和地区划分的经济数据。识别和描述所使用的所有数据来源。包括对每个帆船变种价格估计精度的讨论。

  • 用你的模型解释地区对上市价格的影响(如果有的话)。讨论是否所有帆船变体的区域效应是一致的。说明所注意到的任何区域影响的实际和统计意义。

  • 讨论你对给定地理区域的建模如何在香港(SAR)市场上发挥作用。从提供的电子表格中选择一个信息丰富的帆船子集,分为单船体和双体船。从香港(SAR)市场找到该子集的可比上市价格数据。建模香港(特区)对子集中帆船的每艘帆船价格的区域影响(如果有的话)。双体帆船和单体帆船的影响是一样的吗?

  • 识别并讨论你的团队从数据中得出的任何其他有趣和有信息的推论或结论。

  • 为香港(SAR)帆船经纪人准备一到两页的报告。包括一些精心挑选的图表,以帮助经纪人理解你的结论。

总页数不超过25页的PDF解决方案应包括:

  • 一页总结表,清楚地描述你解决问题的方法,以及在问题的背景下分析得出的最重要的结论。

  • 目录。

  • 您的完整解决方案。

  • 给经纪人一到两页的报告。

附件

**数据文件。**2023_MCM_Problem_Y_Boats.xlsx

Monohulled Sailboats:单体帆船

Catamarans:双体船

数据文件条目描述

  • Make:船的制造商名称。Make、Variant、Length、Geographic Region

  • Variant:标识特定型号的船名。

  • Length (ft):以英尺为单位的船的长度。

  • Geographic Region:船所在的地理区域(加勒比海、欧洲、美国)。

  • Country/Region/State:船只所在的具体国家/地区/州。挂牌价格(USD):以美元标价购买该船的广告价格。

  • Year:船的制造年份。

术语表

  • 横梁(Beam):船最宽处的宽度。

  • Broker: 一艘帆船。

  • 双体船(Catamarans):一种多体船,有两个大小相等的平行船体。

  • 排水量(Displacement):一艘船排水量的重量。

  • 吃水(Draft): 使船在不触底的情况下浮起来所需要的最小水深。

  • 发动机小时数(EngineHours):自新船以来,船舶发动机运行的小时数。

  • 净空高度(Headroom):在船舱中可以站立的高度。

  • 船体(Hull): 船或其他船只的主体或外壳,包括底部、侧面和甲板。

  • 船壳材料(Hull Materials):制作船壳的材料。所用的材料包括玻璃纤维、钢、木材和复合材料。

  • 挂牌价格(Listing Price): 卖方要求的价格。这艘船可能会以不同的价格出售。

  • 制造商(Make):帆船的制造商。

  • 单体帆船(Monohull Sailboats):只有一个船体的帆船,通常以一个沉重的龙骨(中心桨叶)为中心。

  • 索具(Rigging) :由绳索、缆索和滑轮组成的系统,用来支撑和控制帆船的帆、舵和其他系统。

  • 帆面积(Sail Area): 一艘船的帆完全扬起时的总表面积。

  • 变体(Variant):表示某一特定型号帆船的名称。例如,“Sun Odyssey 54 DS”。

2 思路解析

2.1 问题一

可以提供关于帆船特性的信息:
最重要的网站:https://www.sailboatlistings.com/sailboats\_for\_sale/
请添加图片描述
我已经下载部分到本地
请添加图片描述

(1)BoatTrader :网站,允许您根据不同的标准,包括长度、制造商和型号,搜索新的和旧的帆船。该站点可以提供一些关于帆船特性的基本信息,如横梁、吃水和排水量。

(2)SailboatData :帆船规格和图纸数据库。该网站包括关于各种帆船型号的梁、吃水、排水量、帆面积和其他帆船特性的信息。

(3)YachtWorld :网站,允许您根据不同的标准,包括长度、制造商和型号,搜索新的和旧的帆船。该站点可以提供一些关于帆船特性的基本信息,如横梁、吃水和排水量。

(4)帆船杂志:一个以帆船评论和文章为特色的网站。该网站可以提供有关帆船特性的信息,如索具、风帆面积、船体材料和电子设备。更新中,及时进群,我会在群里第一时间发布更新通知

为了建立一个数学模型来解释所提供的电子表格中每艘帆船的标价,我们可以使用回归分析。回归分析是一种统计方法,用于确定因变量(在本例中为上市价格)与一个或多个自变量(如制造、变体、长度、地理区域、年份等)之间的关系。

汇总统计信息将提供关于模型中每个变量的系数、标准误差、p值和r平方值的信息。我们可以使用这些信息来评估每种帆船品种价格估计的准确性,并确定哪些变量对预测上市价格最重要。

除了提供的数据之外,我们还可以使用其他来源来了解给定帆船的其他特性,如横梁、吃水、排水量、索具、帆面积、船体材料、发动机小时数、睡眠容量、净空、电子设备等。按年份和地区划分的经济数据也可用于补充分析。例如,我们可以包括诸如通货膨胀率、汇率和利率等变量,以解释可能影响列出价格的经济因素。这些数据的来源可能包括行业报告、政府统计数据和市场研究。

回归分析的python代码

import pandas as pd
import numpy as np
import statsmodels.api as sm

# 加载数据
monohulls = pd.read_csv('Monohulled Sailboats.csv')
catamarans = pd.read_csv('Catamarans.csv')

# 类别特征编码
monohulls = pd.get_dummies(monohulls, columns=['Geographic Region'])
catamarans = pd.get_dummies(catamarans, columns=['Geographic Region'])

# 合并
。。。略,请下载完整代码

# 拟合线性回归模型
model = sm.OLS(y, X).fit()

# 打印模型的汇总统计信息
print(model.summary())

2.2 问题二

为了分析区域对帆船上市价格的影响,我们可以使用一个包括地理区域作为预测变量的回归模型。具体来说,我们可以用以下形式拟合线性回归模型:

挂牌价格= β0 + β1 *长度+ β2 *年份+ β3 *地区

其中,挂牌价格为因变量,长度和年份为连续自变量,分别表示帆船长度和制造年份,区域为分类自变量,表示帆船所在的地理区域(欧洲、加勒比或美国)。β0、β1、β2和β3是反映每个自变量对因变量影响的回归系数。

Python的statmodels库来拟合回归模型,并获得回归系数的估计值。

import pandas as pd
import statsmodels.api as sm

# 加载数据
sailboats = pd.read_csv("monohulled sailboats.csv")

# 拟合模型
model = sm.formula.ols("Listing_Price ~ Length + Year + C(Geographic_Region)", data=sailboats).fit()

# 输出统计信息
print(model.summary())

在上面的代码中,我们使用statmodels中的ols函数来拟合一个线性回归模型,其中Listing_Price作为因变量,Length和Year作为连续自变量,Geographic_Region作为分类自变量。C()符号指定应将地理区域(Geographic_Region)视为分类变量。

model.summary()的输出将包括回归系数的估估值,包括地理区域的系数。我们可以用这些估计来分析地区对上市价格的影响。

如果地理区域的系数具有统计学意义(即p值小于选定的显著性水平,通常为0.05),那么我们可以得出结论,在控制了帆船长度和制造年份后,区域对上市价格具有显著影响。我们还可以通过对系数符号的解读,来确定某一特定地区的帆船的挂牌价格往往高于或低于其他地区的帆船。

要分析区域效应在所有帆船变体中是否一致,可以从按地区查看帆船列表的分布开始。这可以让我们初步了解是否某些地区在数据集中的比例更高,以及在哪些地区的挂牌价格往往更高或更低方面是否存在明显的模式。可以使用Python和pandas库来读入Monohulled sailboats.csv和Catamarans.csv文件,然后使用value_counts()方法来计算每个区域中的清单数量:

import pandas as pd

monohulls_df = pd.read_csv('Monohulled sailboats.csv')
catamarans_df = pd.read_csv('Catamarans.csv')

# 计算单船体船在每个区域的清单数量
。。。略,请下载完整代码

# 计算每个地区双体船的挂牌数量
catamarans_region_counts = catamarans_df['Geographic Region'].value_counts()
print("Catamarans region counts:")
print(catamarans_region_counts)

由此,我们可以看到,美国的单体船挂牌数量最多,而加勒比海的双体船挂牌数量最多。我们还可以看到,单船和双体船在各个地区的列表分布是不一样的,例如,欧洲的单船列表比双体船多,而加勒比海的双体船列表比单船多。

为了分析地域对上市价格的影响,我们可以使用以地域为分类预测变量的线性回归模型。我们可以加入其他相关的预测变量,如长度和年份,以控制它们对上市价格的影响。

import statsmodels.api as sm

# 将数据子集化,只包含相关的预测变量
monohulls_data = monohulls_df[['Length (ft)', 'Year', 'Geographic Region', 'Listing Price (USD)']].dropna()
catamarans_data = catamarans_df[['Length (ft)', 'Year', 'Geographic Region', 'Listing Price (USD)']].dropna()

# 类别特征编码
monohulls_data = pd.get_dummies(monohulls_data, columns=['Geographic Region'], prefix='region')
catamarans_data = pd.get_dummies(catamarans_data, columns=['Geographic Region'], prefix='region')

# 拟合模型
。。。略,请下载完整代码

# 拟合双体船线性回归模型
catamarans_model = sm.OLS(catamarans_data['Listing Price (USD)'], sm.add_constant(catamarans_data[['Length (ft)', 'Year', 'region_Caribbean', 'region_Europe

2.3 问题三

已更新,请下完完整文档

2.4 问题四

已更新,请下完完整文档

3 完整数据及代码

betterbench.top/#/55/detail
请添加图片描述

目录
相关文章
|
2月前
|
数据采集 数据可视化 数据挖掘
金融波动率的多模型建模研究:GARCH族与HAR模型的Python实现与对比分析
本文探讨了金融资产波动率建模中的三种主流方法:GARCH、GJR-GARCH和HAR模型,基于SPY的实际交易数据进行实证分析。GARCH模型捕捉波动率聚类特征,GJR-GARCH引入杠杆效应,HAR整合多时间尺度波动率信息。通过Python实现模型估计与性能比较,展示了各模型在风险管理、衍生品定价等领域的应用优势。
356 66
金融波动率的多模型建模研究:GARCH族与HAR模型的Python实现与对比分析
|
9天前
|
数据采集 供应链 API
实战指南:通过1688开放平台API获取商品详情数据(附Python代码及避坑指南)
1688作为国内最大的B2B供应链平台,其API为企业提供合法合规的JSON数据源,直接获取批发价、SKU库存等核心数据。相比爬虫方案,官方API避免了反爬严格、数据缺失和法律风险等问题。企业接入1688商品API需完成资质认证、创建应用、签名机制解析及调用接口四步。应用场景包括智能采购系统、供应商评估模型和跨境选品分析。提供高频问题解决方案及安全合规实践,确保数据安全与合法使用。立即访问1688开放平台,解锁B2B数据宝藏!
|
10天前
|
API 开发工具 Python
【Azure Developer】编写Python SDK代码实现从China Azure中VM Disk中创建磁盘快照Snapshot
本文介绍如何使用Python SDK为中国区微软云(China Azure)中的虚拟机磁盘创建快照。通过Azure Python SDK的Snapshot Class,指定`location`和`creation_data`参数,使用`Copy`选项从现有磁盘创建快照。代码示例展示了如何配置Default Azure Credential,并设置特定于中国区Azure的`base_url`和`credential_scopes`。参考资料包括官方文档和相关API说明。
|
2月前
|
存储 缓存 Java
Python高性能编程:五种核心优化技术的原理与Python代码
Python在高性能应用场景中常因执行速度不及C、C++等编译型语言而受质疑,但通过合理利用标准库的优化特性,如`__slots__`机制、列表推导式、`@lru_cache`装饰器和生成器等,可以显著提升代码效率。本文详细介绍了这些实用的性能优化技术,帮助开发者在不牺牲代码质量的前提下提高程序性能。实验数据表明,这些优化方法能在内存使用和计算效率方面带来显著改进,适用于大规模数据处理、递归计算等场景。
78 5
Python高性能编程:五种核心优化技术的原理与Python代码
|
3月前
|
Python
课程设计项目之基于Python实现围棋游戏代码
游戏进去默认为九路玩法,当然也可以选择十三路或是十九路玩法 使用pycharam打开项目,pip安装模块并引用,然后运行即可, 代码每行都有详细的注释,可以做课程设计或者毕业设计项目参考
86 33
|
3月前
|
JavaScript API C#
【Azure Developer】Python代码调用Graph API将外部用户添加到组,结果无效,也无错误信息
根据Graph API文档,在单个请求中将多个成员添加到组时,Python代码示例中的`members@odata.bind`被错误写为`members@odata_bind`,导致用户未成功添加。
59 10
|
10月前
|
算法 编译器 开发者
如何提高Python代码的性能:优化技巧与实践
本文探讨了如何提高Python代码的性能,重点介绍了一些优化技巧与实践方法。通过使用适当的数据结构、算法和编程范式,以及利用Python内置的性能优化工具,可以有效地提升Python程序的执行效率,从而提升整体应用性能。本文将针对不同场景和需求,分享一些实用的优化技巧,并通过示例代码和性能测试结果加以说明。
|
6月前
|
人工智能 数据挖掘 数据处理
揭秘Python编程之美:从基础到进阶的代码实践之旅
【9月更文挑战第14天】本文将带领读者深入探索Python编程语言的魅力所在。通过简明扼要的示例,我们将揭示Python如何简化复杂问题,提升编程效率。无论你是初学者还是有一定经验的开发者,这篇文章都将为你打开一扇通往高效编码世界的大门。让我们开始这段充满智慧和乐趣的Python编程之旅吧!
|
4月前
|
机器学习/深度学习 数据采集 人工智能
探索机器学习:从理论到Python代码实践
【10月更文挑战第36天】本文将深入浅出地介绍机器学习的基本概念、主要算法及其在Python中的实现。我们将通过实际案例,展示如何使用scikit-learn库进行数据预处理、模型选择和参数调优。无论你是初学者还是有一定基础的开发者,都能从中获得启发和实践指导。
94 2
|
5月前
|
大数据 Python
Python 高级编程:深入探索高级代码实践
本文深入探讨了Python的四大高级特性:装饰器、生成器、上下文管理器及并发与并行编程。通过装饰器,我们能够在不改动原函数的基础上增添功能;生成器允许按需生成值,优化处理大数据;上下文管理器确保资源被妥善管理和释放;多线程等技术则助力高效完成并发任务。本文通过具体代码实例详细解析这些特性的应用方法,帮助读者提升Python编程水平。
238 5

热门文章

最新文章