2021年暑假数学建模第三次模拟赛:全国各省人均消费分析与预测(很好的SPSS统计训练)

本系列赛题、数据获取:
2021年暑假数学建模模拟赛(赛题+数据+分析)
不直接提供论文等资料,分析已经很详细了
整理不易,欢迎点赞+关注+收藏

赛题

在这里插入图片描述

分析

这次的赛题完全可以全用SPSS来实现,以前一直目光狭隘,盯着MATLAB和python,经过这次训练赛,笔者意识到了SPSS的重要性
本次赛题简单,所以要写的精彩就有难度了,笔者本次建模做了比较详尽的分析,可以看看哦
读者可以拿它来练手,统计一直是数学建模里很重要的一个部分,但一直受到了忽视
使用SPSS也应该是一项必会的技能
另外笔者发现一个宝藏网站SPSSAU,为了避免广告嫌疑就不放链接了
可以去淘宝搜一个一两天的会员在建模的时候使用,他可以给出详细的分析报表,适合非统计专业的小白做分析使用
在这里插入图片描述

求解

直接上论文里的分析啦,主要是使用的SPSS软件,只有一两个代码,附在下一节
都看到这里了,点个赞再走呀

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

代码

K-means聚类簇个数确定
import numpy as np
import pandas as pd
import matplotlib
import matplotlib.pyplot as plt
from scipy.spatial.distance import pdist,squareform
from scipy.cluster.hierarchy import dendrogram, linkage,fcluster
from sklearn.preprocessing import StandardScaler
from sklearn.cluster import KMeans
from sklearn import metrics
from mpl_toolkits.mplot3d import *

#数据的读取与标准化
data = pd.read_excel('data.xlsx',index_col = 0)
datanp = np.asarray(data)
std = StandardScaler()
datastd = std.fit_transform(datanp)

#计算各类指标
SSE = []
CH = []
SC = []
for k in range(2,31):
    km = KMeans(k)
    pred = km.fit_predict(datastd)
    SSE.append(km.inertia_)
    CH.append(metrics.calinski_harabasz_score(datastd, pred))
    SC.append(metrics.silhouette_score(datastd, pred, metric='euclidean'))

#各类指标的可视化
X = range(2,31)
plt.xlabel('k')
plt.ylabel('SSE')
plt.plot(X,SSE,'o-')
plt.savefig('1bSSE.png')
plt.show()

X = range(2,31)
plt.xlabel('k')
plt.ylabel('CH')
plt.plot(X,CH,'o-')
plt.show()

X = range(2,31)
plt.xlabel('k')
plt.ylabel('SC')
plt.plot(X,SC,'o-')
plt.show()

#打印出具体类别
ind = np.arange(31)
km = KMeans(6)
pred = km.fit_predict(datastd)
for i in range(6):
    print('第',i + 1,'类包含有',ind[pred == i])
    
#绘制聚类3D图
from sklearn.manifold import TSNE
X = TSNE(n_components=3).fit_transform(datastd)
fig = plt.figure(1, figsize=(8, 6))
ax = Axes3D(fig, elev=-150, azim=110)
ax.scatter(X[:, 0], X[:, 1], X[:, 2], c=pred,cmap=plt.cm.Set1, edgecolor='k', s=40)
plt.savefig('1b.png')
组合预测模型系数确定
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import gurobipy as gp
from gurobipy import GRB
from sklearn.metrics import mean_squared_error

def RMSE(a,b):
    return np.sqrt((a-b)**2)

gm = pd.read_csv('GM.csv')
gmnp = np.asarray(gm)
arima = pd.read_csv('ARIMA.csv')
arimanp = np.asarray(arima)
gme = np.zeros(16)
arimae = np.zeros(16)

#Compute RMSE
for i in range(4,20):
    gme[i-4] = RMSE(gmnp[i,0],gmnp[i,1])
    arimae[i-4] = RMSE(arimanp[i,0],arimanp[i,1])
    
# Create a new model
m = gp. Model (" p5 ")

# Create variables
w1 = m. addVar ( name ="w1")
w2 = m. addVar ( name ="w2")

# Set objective
m. setObjective (gp.quick_sum(w1 * gme[i] for i in range(16)) + gp.quick_sum(w2 * arimae[i] for i in range(16)), GRB. MINIMIZE )

# Add constraint : w1 + w2 == 1
m. addConstr (w1 + w2 == 1, "c")

# Optimize model
m. optimize ()

for v in m. getVars ():
    print ('%s %g' % (v. varName , v.x))
    
print ('Obj: %g' % m. objVal )
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值