【数学建模】15 统计模型的求解方法

1 MATLAB统计计算

基本计算准则

最大值max
[y,l] = max(X,[],dim)
最小值min
[y,l] = min(X,[],dim)
向量和
S = sum(X,dim)
向量积
S = prod(X,dim)
排列
y = perms(x)
组合数
S = nchooosek(n,m)
平均值
S = mean(X,dim)
中值
S = median(S,dim)
方差
y =var(X,dim)
标准差
y =std(X,dim)
相关系数
y =corrcoef(X)
协方差
S =cov(X)
累计和
Y = cumsum(X,dim)
累积积
Y =cumprod(X,dim)
从小到大排序
Y = sort(X,dim)
按行从小到大排序
Y = sortrows(X,dim)
数值范围(最大值和最小值)
Y = range(X)
样本偏斜度
Y =skewness(X)

2 MATLAB绘图

(1)图形窗口的控制
在MATLAB中,图形的绘制必须在图形窗中进行
• firgure或figure(N)
• clc
• close
• hold on(off)
• subplot(m,n,p)或subplot(nmp)
(2)二维图形的绘制
• plot命令:二维图形绘制

plot(y)
plot(x,y)
plot(x,y,'s')%s表示线的参数,设置颜色,形状等等
plot(x1,y1,'s',x2,y2,'s')

• ezplot命令:快捷二维图形绘制

ezplot('f(x)',[a,b])
ezplot('f(x,y)',[s1,s2,y1,y2])
ezplot('x(t)','y(t)',[tmin,tmax])

• ploty命令

ploty(x1,y1,x2,y2)

• fplot命令:函数绘图

plot('f(x)',[a,b])

• polar极坐标绘图

polar(theta,rho)
polar(theta,rho,s)

• 对数坐标轴命令semilogx semilogy loglog

semilogx(...)
semilogy(...)
loglog(...)

• 添加标题title

title('string')

• 添加坐标轴标志函数xlabel ylabel zlabel

xlabel('text')
ylabel('text')
zlabel('text')

• 设置网格线命令

grid on(off)

• 图形标注函数legend

legend(string1,string2,string3)
legend off

• 设置坐标轴函数axis

axis([xmin,xmax,ymin,ymax])
axis([xmin xmax ymin ymax zmin zmax])
axis off(on)
axis('manual')

举例

x = linspace(0,2*pi,30);
y =sin(x);
z = cos(x);
plot(x,y,'r',x,z,'go')
legend('sin(x)','cos(x)')
title('三角形函数示意图')
xlable('X')
ylable('Y')

在这里插入图片描述

(3)三维图形的绘制

• 绘制三维曲线plot3
plot3(x,y,z,'s')

• 生成网课函数meshgrid
[X,Y] = meshgrid(x,y)

• 绘制空间曲面图surf
surf(X,Y,Z)

• 绘制空间网面图mesh
mesh(X,Y,Z)

• 绘制平面等值线contour
contour(X,Y,Z,n)

• 绘制平面流图quiver
quiver(X,Y,U,V)%X,Y是要画的点。UV分别是x和y的梯度,就是导数

举例

[X,Y] =meshgrid(-8:.5:8);
R = sqrt(X.^2+Y.^2)+eps;
Z = sin(R)./R;
figure
mesh(Z)

在这里插入图片描述

蓝色越深数据越小
(3)统计绘图

• 正整数的频率表tabulate
table = tabulate(X)

• 样本数据的盒图boxplot
boxplot(X)

• 附加有正态密度曲线的直方图histfit
histfit(data)

• 直方图hist
[S,T] = hist(X,n)

• 绘制饼图pie
pie(X)

• 散点图scatter
scatter(x,y)

举例

x = randn(1000,3);
hist(x)

在这里插入图片描述

3 曲线拟合

(1)多项式拟合函数ployfit

[p,S] = ployfit(x,y,n)

(2)线性最小二乘拟合函数lsqlin

x = lsqlin(C,d,A,b,Aeq,beq,lb,ub)

(3)非线性最小二乘拟合函数lsqcurvefit

x = lsqcurvefit(fun,x0,xdata,ydata)
x = lsqcurvefit(fun,x0,xdata,ydata,lb,ub)
x = lsqcurvefit(fun,x0,xdata,ydata,lb,ub,options)

(4)通用拟合函数fit

fitobject =fit(x,y,fitType)
fitobject =fit([x,y],z,fitType)

举例

t = [0.25 0.5 1 1.5 2 3 4 6 8]
c = [19.21 18.15 15.36 14.10 12.89 9.32 7.45 5.24 3.01]
plot(t,c,'*')
p = polyfit(t,c,2)
t1 = 0.25:0.01:8;
y = polyval(p,t1);
hold on
plot(t1,y)
hold off

在这里插入图片描述

4 参数估计与假设检验

(1)Beta分布的最大似然估计betafit

[p,S] =betafit(x,alpha)

(2)正态分布的参数估计normfit

[mu,sig,mci,sci] = normfit(S,alpha)

(3)二项分布的最大似然估计binofit

[p,S] = binofit(x,n,alpha)

(4)均匀分布的最大似然估计unfit

[a,b,aci,bci] = unfit(x,alpha)

(5)单个正态总体的Z检验法ztest

[h,sig,ci] =ztest(x,m,sigma,alpha)

(6)单个正态总体的t检验法ttest

[h,sig,ci] = ttest(s,m,alpha)

5 课后习题

随机产生100个整数,绘制出直方图,并用多项式拟合其统计图
方法一:用代码去拟合

clc
close all;
x=randi(100,1,100);%随机产生100个整数,并生成1*100
% 画频率分布直方图
[counts,centers] = hist(x, 10);
plot(centers,counts,'*')
% 多项式拟合
p = polyfit(centers,counts,5)
t1 = 0:0.01:100;
y = polyval(p,t1);
hold on
plot(t1,y)
hold off

在这里插入图片描述

方法二:用可视化工具箱拟合

x=randi(100,1,100);%随机产生100个整数,并生成1*100
% 画频率分布直方图
[counts,centers] = hist(x, 10);
figure
bar(centers, counts )
cftool

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

(1)Xdata 为counts,Ydata为centers,Degree为3。欠拟合状态
在这里插入图片描述

(2)Xdata 为counts,Ydata为centers,Degree为5。可能拟合最佳
在这里插入图片描述

(3)Xdata 为counts,Ydata为centers,Degree为9。过拟合状态
在这里插入图片描述

© 版权声明
THE END
喜欢就支持一下吧
点赞954 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容