【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
请添加图片描述

目录
相关文章
|
19天前
|
开发框架 数据建模 中间件
Python中的装饰器:简化代码,增强功能
在Python的世界里,装饰器是那些静悄悄的幕后英雄。它们不张扬,却能默默地为函数或类增添强大的功能。本文将带你了解装饰器的魅力所在,从基础概念到实际应用,我们一步步揭开装饰器的神秘面纱。准备好了吗?让我们开始这段简洁而富有启发性的旅程吧!
26 6
|
10天前
|
数据可视化 算法 数据挖掘
Python量化投资实践:基于蒙特卡洛模拟的投资组合风险建模与分析
蒙特卡洛模拟是一种利用重复随机抽样解决确定性问题的计算方法,广泛应用于金融领域的不确定性建模和风险评估。本文介绍如何使用Python和EODHD API获取历史交易数据,通过模拟生成未来价格路径,分析投资风险与收益,包括VaR和CVaR计算,以辅助投资者制定合理决策。
55 15
|
12天前
|
数据可视化 Python
以下是一些常用的图表类型及其Python代码示例,使用Matplotlib和Seaborn库。
通过这些思维导图和分析说明表,您可以更直观地理解和选择适合的数据可视化图表类型,帮助更有效地展示和分析数据。
54 8
|
19天前
|
API Python
【Azure Developer】分享一段Python代码调用Graph API创建用户的示例
分享一段Python代码调用Graph API创建用户的示例
41 11
|
16天前
|
Python
探索Python中的装饰器:简化代码,增强功能
在Python的世界里,装饰器就像是给函数穿上了一件神奇的外套,让它们拥有了超能力。本文将通过浅显易懂的语言和生动的比喻,带你了解装饰器的基本概念、使用方法以及它们如何让你的代码变得更加简洁高效。让我们一起揭开装饰器的神秘面纱,看看它是如何在不改变函数核心逻辑的情况下,为函数增添新功能的吧!
|
17天前
|
程序员 测试技术 数据安全/隐私保护
深入理解Python装饰器:提升代码重用与可读性
本文旨在为中高级Python开发者提供一份关于装饰器的深度解析。通过探讨装饰器的基本原理、类型以及在实际项目中的应用案例,帮助读者更好地理解并运用这一强大的语言特性。不同于常规摘要,本文将以一个实际的软件开发场景引入,逐步揭示装饰器如何优化代码结构,提高开发效率和代码质量。
42 6
|
机器学习/深度学习 人工智能 算法
一文搞定深度学习建模预测全流程(Python)(下)
一文搞定深度学习建模预测全流程(Python)
|
机器学习/深度学习 数据采集 算法
一文搞定深度学习建模预测全流程(Python)(上)
​ 本文详细地梳理及实现了深度学习模型构建及预测的全流程,代码示例基于python及神经网络库keras,通过设计一个深度神经网络模型做波士顿房价回归预测。主要依赖的Python库有:keras、scikit-learn、pandas、tensorflow(建议可以安装下anaconda包,自带有常用的python库)
|
18天前
|
人工智能 数据可视化 数据挖掘
探索Python编程:从基础到高级
在这篇文章中,我们将一起深入探索Python编程的世界。无论你是初学者还是有经验的程序员,都可以从中获得新的知识和技能。我们将从Python的基础语法开始,然后逐步过渡到更复杂的主题,如面向对象编程、异常处理和模块使用。最后,我们将通过一些实际的代码示例,来展示如何应用这些知识解决实际问题。让我们一起开启Python编程的旅程吧!
|
16天前
|
存储 数据采集 人工智能
Python编程入门:从零基础到实战应用
本文是一篇面向初学者的Python编程教程,旨在帮助读者从零开始学习Python编程语言。文章首先介绍了Python的基本概念和特点,然后通过一个简单的例子展示了如何编写Python代码。接下来,文章详细介绍了Python的数据类型、变量、运算符、控制结构、函数等基本语法知识。最后,文章通过一个实战项目——制作一个简单的计算器程序,帮助读者巩固所学知识并提高编程技能。