2023年美国大学生数学建模竞赛
C题 预测Wordle的结果
原题再现:
背景介绍
Wordle是纽约时报目前每天提供的一个流行谜题。玩家通过在六次或更短时间内猜出一个至五个字母的单词来解决这个谜题,每次猜测都会得到反馈。在这个版本中, 每个猜测必须是一个实际的英文单词。不允许猜测不被比赛认可的单词。Wordle继续受到欢迎,该游戏现在有60多种语言的版本。
纽约时报》网站矢于Wordle的说明指出,在你提交你的单词后,瓷砖的颜色会改变。黄色的瓷砖表示该瓷砖中的字母在单词中,但它的位置不对。绿色瓷砖表示该瓷砖中的字母在单词中,并且在正确的位置。灰色的牌表示该牌中的字母根本不在这个词中( 见附件2) 2。图1是一个解决方案的例子,其中正确的结果是在三次尝试中找到的。
玩家可以在普通模式或”困难模式”下进行游戏。Wordle的”困难模式”使游戏更加困难,它要求玩家一旦在一个词中找到一个正确的字母(瓷砖是黄色或绿色的),这些字母必须在随后的猜测中使用。图1中的例子是在困难模式下进行的。
许多( 但不是所有)用户在Twitter.上报告他们的分数。针对这个问题,MCM生成了一个2022年1月7日至12月31日的每日结果文件(见附件1)。这个文件包括日期、竞赛编号、当天的单词、当天报告分数的人数、使用困难模式的玩家人数,以及在一次、两次、三次、四次、五次、六次中猜中单词或无法解出谜题的百分比(用X表示)。例如,在图2中,2022年7月20日的单词是”TRITE”,其结果是通过挖掘Twitter得到的。尽管图2中的百分比之和为100%,但在某些情况下,由于四舍五入,这可能不是真的。
《纽约时报》要求你对这份文件中的结果做-一个分析,以回答几个问题。报告结果的数量每天都在变化。建立一个模型来解释这种变化,并使用你的模型为2023年3月1日的报告结果数量建立-一个预测区间。词语的任何属性是否影响到报告的在困难模式下进行的分数的百分比?如果是,如何影响?如果没有,为什么没有?
对于一个给定的未来日期的解字,建立一个模型,使你能预测报告结果的分布。换句话说,预测未来某一天的(1、 2、3、4、5、6、X)的相关百分比。你的模型和预测有哪些不确定因素?请举一个具体的例子,说明你对2023年3月1日EERIE这个词的预测。你对你的模型的预测有多大信心?
开发并总结一个模型,按难度对题司[进分类。找出与每个分类相的给定单词的属性。使用你的模型,EERIE这个词的难度如何?讨论一下你的分类模型的准确性。
列出并描述这个数据集的一些其他有趣的特征。
最后,在写给《纽约时报》谜题编辑的一到两页的信中总结你的成果。
整体求解过程概述(摘要)
Wordle是纽约时报每天更新的猜谜游戏。本文研究了游戏中不同组合结构的词情与猜词数量的关系,建立了基于时间和报告数的非平稳时间序列周期差分运算(ARIMA)模型、基于词频难度的套索模型和朴素贝叶斯分类预测模型。
对于问题1,我们首先绘制了时间与报告结果数量的堆叠面积图,发现报告结果的数量在不同时间段存在显著差异。其次,根据单词字母的组成结构,划分不同单词的属性,由于重复元素的出现,增加了困难模式的玩家数量。报告的结果数量在不同的时间段内波动很大。根据基于时间和我们建立的报告结果数量的非平稳时间序列的ARIMA(自回归积分移动平均)模型,2023年3月1日处于困难模式的玩家数量的报告结果范围。报告的结果将达到 17400 和 19780 之间,置信度为 95%。
针对问题2,基于问题1得到的词属性因子,根据词的元素是否重复、词的元素是否相邻,构建朴素贝叶斯词频分类模型。通过对第一次、两次、三次、四次、五次、六次解谜的人数以及无法解谜的人数进行描述性统计分析和相关性分析,结合朴素贝叶斯模型求解结果,得出1月2023日“诡异”一词的预测结果, 获得0年,即第一次、第二次、第三次、第四次、第五次、第六次解谜的人中无法解谜的比例分别为2%、6%、15%、26%、38%、16%和10%。
对于问题3,我们制定了词难度规则,根据规则建立了决策树模型,并采用词频分类法对原始数据进行分析。最后,我们得出结论,“怪异”是第七个难度,属于“aabca”的形式。词中元素是否重复以外的因素根据词的组成结构确定,词的重复要素根据它们是否相邻进行划分,这样分类结果合理。其次,进行敏感性分析。从敏感性分析的结果中,我们可以得出以下结论:模型原始数据的准确率为98%。更改重复元素的数量会降低分类预测模型的准确性,但仍超过 85%。总的来说,该模型相对稳定和准确。
对于问题4,根据单词的含义和第N次猜谜语的人数比例(N=1,2,3,4,5,6)和未猜谜语的人数比例,通过相关统计分析获得一些单词的有趣特征。
此外,根据团队的研究结果,我们给《纽约时报》的益智编辑写了一封信。
模型假设:
为了简化我们的模型并降低复杂性,我们在本文中进行了以下主要假设。一旦所有假设用于构建我们的模型,它们将被重新强调:
1.每个玩家在玩游戏时不受外界环境的影响,通过互联网或其他方式事先不知道答案。
理由:基于这一假设,我们能够充分利用所提供的数据集并确保数据的独立性。这减少了影响游戏结果的因素,并使结果更具可解释性和可靠性。
2.对于给定数据集中的异常值,我们可以通过收集信息来纠正它们,从而使结果更加准确。
理由:异常值通常是由意外情况引起的,这可能会影响我们的结果。但是,通过平滑或在线收集信息来查看相关信息,我们可以获得接近现实的数据,从而减少对后续分析的影响。
3.使用的数据集代表了所有玩家的水平和所有单词的难度。
理由:数据集是从大多数玩家那里生成的,这是全面和有代表性的。
问题重述:
任务 1
我们需要建立一个模型来表达和解释报告计数的每日变化,并使用该模型预测 2023 3月1 日的预测范围。然后我们被要求讨论单词的属性是否对困难模式下的分数百分比有影响。
任务 2
我们被要求建立一个模型来预测报告结果的分布,给定一个未来的日期和一个单词作为参数。该模型中存在许多不确定因素。预测 1 年 2023 月 3月1日的单词“EERIE”,并确定模型预测的置信度。
任务 3
该任务要求我们总结一个模型来对单词的难度进行分类,定义每个类别,然后讨论单词 EERIE 的难度,以及模型的准确性。
任务 4
第四个问题要求我们使用先前建立的模型来列出数据的其他有趣特征,并讨论模型的准确性。
任务 5
第五个问题要求我们给《纽约时报》写一封信,总结所获得的结果。
模型的建立与求解整体论文缩略图
全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可
部分程序代码:(代码和文档not free)
import pandas as pd
df = pd.read_excel("Problem_C_Data_Wordle2.xlsx",
sheet_name="Sheet2",index_col='Date', dtype={'value': float})
import pandas as pd
from statsmodels.graphics.tsaplots import plot_acf
import pylab as plt
from statsmodels.tsa.arima_model import ARIMA
plt.rc('axes',unicode_minus=False)
plt.rc('font',size=16); plt.rc('font',family='SimHei')
plt.subplot(121); plt.plot(df.value.diff())
plt.title('一次差分')
ax2=plt.subplot(122)
plot_acf(df.value.diff().dropna(), ax=ax2,title='自相关')
#df.index = df.index.to_timestamp()
#df.index = pd.DatetimeIndex(df.index)
#df.index=df.Date
md=ARIMA(df.value, order=(3,1,0))
mdf=md.fit(disp=0)
print(mdf.summary())
residuals = pd.DataFrame(mdf.resid)
fig, ax = plt.subplots(1,2)
residuals.plot(title="残差", ax=ax[0])
residuals.plot(kind='kde', title='密度', ax=ax[1])
plt.legend(''); plt.ylabel('')
mdf.plot_predict() #原始数据与预测值对比图
plt.show()
forecast_data = mdf.forecast(70)
forecast_data
#无重复字母
import ggplot as gp
import matplotlib as plt
plt.rcParams['font.family'] = ['sans-serif']
plt.rcParams['font.sans-serif'] = ['SimHei']
#rcParams解决的是中文标签的问题
print(gp.ggplot(gp.aes(x='Date',y='Number in hard
mode'),data=df11)+gp.geom_point(color='red'))
全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
目录 方法1:使用Ora.sh的LLM应用 方法2:使用https://steamship.com 方法3:使用https://nat.dev 方法4:http://tdchat.vip 方法5:使用Poe网站或App 方法6:使用 Opencat App 方…