【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天前
|
设计模式 缓存 开发者
Python中的装饰器:简化代码,提高可读性
【9月更文挑战第10天】在Python编程的世界中,装饰器是一种强大的工具,它允许开发者在不修改原函数代码的情况下增加额外的功能。本文将通过简单易懂的语言和生动的例子,带你了解装饰器的概念、使用方法及其在实际开发中的应用价值。我们将一起探索如何利用装饰器来简化代码结构,提升代码的可读性和可维护性,让你的编程之旅更加顺畅。
|
1天前
|
存储 安全 数据安全/隐私保护
安全升级!Python AES加密实战,为你的代码加上一层神秘保护罩
【9月更文挑战第12天】在软件开发中,数据安全至关重要。本文将深入探讨如何使用Python中的AES加密技术保护代码免受非法访问和篡改。AES(高级加密标准)因其高效性和灵活性,已成为全球最广泛使用的对称加密算法之一。通过实战演练,我们将展示如何利用pycryptodome库实现AES加密,包括生成密钥、初始化向量(IV)、加密和解密文本数据等步骤。此外,还将介绍密钥管理和IV随机性等安全注意事项。通过本文的学习,你将掌握使用AES加密保护敏感数据的方法,为代码增添坚实的安全屏障。
15 8
|
3天前
|
开发者 Python
Python中的装饰器:简化你的代码
【9月更文挑战第9天】本文将介绍Python中的一种强大工具——装饰器。我们将从基础概念开始,逐步深入到装饰器的实际应用,包括函数装饰器和类装饰器。我们将通过实例来展示如何利用装饰器简化代码,提高代码的可读性和可维护性。最后,我们将探讨装饰器的一些高级用法,以及如何避免在使用时可能遇到的问题。无论你是初学者还是有经验的开发者,这篇文章都将帮助你更好地理解和使用装饰器。
12 6
|
5天前
|
Python
揭秘!Python系统编程里那些让代码自由穿梭的神奇代码行
【9月更文挑战第9天】在Python的世界里,一些简洁的代码行却蕴含着强大的功能,如列表推导式让列表生成仅需一行代码:`squares = [x**2 for x in range(10)]`。`with`语句则能自动管理文件和网络连接的关闭,如`with open('example.txt', 'r') as file:`。`lambda`函数和装饰器则允许快速定义函数和增强功能,而上下文管理器更是资源处理的利器。这些特性让Python代码更加优雅高效。
15 4
|
2天前
|
存储 安全 数据库
双重防护,无懈可击!Python AES+RSA加密方案,构建最强数据安全堡垒
【9月更文挑战第11天】在数字时代,数据安全至关重要。AES与RSA加密技术相结合,构成了一道坚固防线。AES以其高效性保障数据加密,而RSA则确保密钥安全传输,二者相辅相成,提供双重保护。本文通过Python代码示例展示了这一加密方案的魅力,强调了其在实际应用中的重要性和安全性。使用HTTPS等安全协议传输加密密钥和密文,确保数据在数字世界中自由流通而无忧。
11 1
|
3天前
|
安全 数据安全/隐私保护 Python
Python系统编程实战:文件系统操作与I/O管理,让你的代码更优雅
【9月更文挑战第10天】Python不仅在数据分析和Web开发中表现出色,在系统编程领域也展现出独特魅力。本文将带你深入探讨Python中的文件系统操作与I/O管理,涵盖os、shutil和pathlib等模块的基础使用方法,并通过示例代码展示如何优雅地实现这些功能。通过掌握缓冲、异步I/O等高级特性,你将能够编写更高效、安全且易于维护的Python代码。示例包括使用pathlib遍历目录、设置缓冲区提升文件写入性能以及使用aiofiles实现异步文件操作。掌握这些技能,让你在Python系统编程中更加得心应手。
10 2
|
3天前
|
Linux 开发者 Python
从Windows到Linux,Python系统调用如何让代码飞翔🚀
【9月更文挑战第10天】在编程领域,跨越不同操作系统的障碍是常见挑战。Python凭借其“编写一次,到处运行”的理念,显著简化了这一过程。通过os、subprocess、shutil等标准库模块,Python提供了统一的接口,自动处理底层差异,使代码在Windows和Linux上无缝运行。例如,`open`函数在不同系统中以相同方式操作文件,而`subprocess`模块则能一致地执行系统命令。此外,第三方库如psutil进一步增强了跨平台能力,使开发者能够轻松编写高效且易维护的代码。借助Python的强大系统调用功能,跨平台编程变得简单高效。
9 0
|
6天前
|
机器学习/深度学习 人工智能 算法
探索人工智能:机器学习的基本原理与Python代码实践
【9月更文挑战第6天】本文深入探讨了人工智能领域中的机器学习技术,旨在通过简明的语言和实际的编码示例,为初学者提供一条清晰的学习路径。文章不仅阐述了机器学习的基本概念、主要算法及其应用场景,还通过Python语言展示了如何实现一个简单的线性回归模型。此外,本文还讨论了机器学习面临的挑战和未来发展趋势,以期激发读者对这一前沿技术的兴趣和思考。
|
机器学习/深度学习 人工智能 算法
一文搞定深度学习建模预测全流程(Python)(下)
一文搞定深度学习建模预测全流程(Python)
|
机器学习/深度学习 数据采集 算法
一文搞定深度学习建模预测全流程(Python)(上)
​ 本文详细地梳理及实现了深度学习模型构建及预测的全流程,代码示例基于python及神经网络库keras,通过设计一个深度神经网络模型做波士顿房价回归预测。主要依赖的Python库有:keras、scikit-learn、pandas、tensorflow(建议可以安装下anaconda包,自带有常用的python库)