matlab数学建模基础

1.数据的导入和保存

1.1数据的导入

matlab中导入数据的函数通常为load

load matlab.mat

matlab中常用的导入数据的函数为importdata,用法如下:

imported_data = importdata('matlab.mat')

1.2 文件的打开

比较open与load的不同

clear all
a=rand(4);
b=magic(4);
save

Saving to: C:\Users\Administrator\Documents\MATLAB\mathematical modeling\2\matlab.mat

clear 
load('matlab.mat')
a
b
clear
open('matlab.mat')

struc1=ans;
struc1.a
struc1.b

2.数据的统计与分析

2.1 常用统计量

  1. 算术平均数,中位数
  • mean(X) —— X为向量
  • mean(A) —— A为矩阵,返回各列元素的平均值
  • median(X)
  1. 标准差,方差,极差
clear all 
clc
X=[15.60  13.41  17.20  14.42  16.61];
DX=var(X,1)            %求解方差
sigma=std(X,1)          %求解标准差
DX1=var(X)             %求解样本方差
sigma1=std(X)            %求解样本标准差
  • var(X,1) —— 返回样本的简单方差(前置因子为1/n)
  • std(X,1) —— 返回前置因子为1/n的标准差
  1. 偏度,峰度
    在matlab中使用jbtest函数进行Jarque-Bera检验
    调用格式为:
  • h = jbtest(X) —— h=0,可认为服从正态分布;h=1,说明在显著水平0.05下拒绝服从正态分布
  • [H,P,JBSTAT,CV] = jbtest(X,alpha) —— alpha为指定显著水平,P为检验的p值
clear all 
clc
x1=[5200 5056 561 6016 635 669 686 692 704 7007 711];
x2=[7013 7104 719 727 735 740 744 745 750 7076 777];
x3=[7086 7806 791 7904 821 822 826 834 837 8051 862];
x4=[8703 879 889 9000 904 922 926 952 963 1056 10074];
x=[x1 x2 x3 x4];
[H,P,JBSTAT,CV]=jbtest(x)
>
H =
     1
P =
    0.0218
JBSTAT =
    8.0226
CV =
    4.8466

由于H=1,P<0.05,有理由认为不服从正态分布。

3. 随机数

3.1 二项分布随机数

可以使用binornd产生二项分布随机数

  • R = binornd(N,P) —— NP为二项分布的两个参数
  • R = binornd(N,P,m,n) —— m为行数n为列数
clear all
clc
x=binornd(10,0.45,100000,1);
histogram(x,11);

3.2 泊松分布随机数

泊松分布的表达式为:

调用格式:
y = poisspdf(x,Lambda)

clear all
clc
x=0:20;
y1=poisspdf(x,2.5);
y2=poisspdf(x,5);
y3=poisspdf(x,10);
hold on
plot(x,y1,':r*')
plot(x,y2,':b*')
plot(x,y3,':g*')
hold off

3.3 正态分布随机数

提供函数normrnd

  • R = normrnd(mu,sigma,m,n)

4.假设检验

4.1 方差已知时的均值假设检验

在给定方差的条件下可以使用ztest函数,来检验单样本数据是否服从给定均值的正态分布,调用格式

  • h = ztest(x,m,sigma,alpha) —— 其中sigma是标准差,alpha是显著水平的控制参数,m是判断样本的均值是否是m
clear all 
clc
x1=[11.8 10.5 10.6 9.6 10.7 9.8 10.9 11.1 10.6 10.3];
x2=[10.2 10.6 9.8 12.2 10.6 9.8 10.6 10.1 9.5 9.9];
x=[x1 x2]';
m=10;sigma=0.4;a=0.05;
[h,sig,muci]=ztest(x,m,sigma,a,1)

h=1是可以认为在该显著水平上拒绝零假设

4.2 正态总体均值假设检验

  1. 用于方差未知时的正态总体的均值的假设检验,使用ttest函数
    调用格式如下:
    [h,sig,ci] = ttest(x,m,alpha,tail)
    其中:
    tail=0时表示制定备择假设均值不等于m,tail=1时表示指定备择假设均值大于m
clear all 
clc
x=[169 180 131 182 234 274 188 254 232 172 165 249 249 180 465 192];
m=225;
a=0.05;
[h,sig,muci]=ttest(x,m,a,1)
  1. 方差未知时两个正态总体均值的假设检验
clear all 
clc
x=[82.45 86.21 83.58 79.69 75.29 80.73 72.75 82.35]';
y=[83.56 64.27 73.34 74.37 79.77 67.12 77.27 78.07 72.62]';
a=0.05;
[h,sig,ci]=ttest2(x,y,a,1)

h =

     1


sig =

   0.019504179277914


ci =

   1.325223048786295
                 Inf

在显著水平0.05下,可以判断合金的硬度有提高。
ci为均值差以真值的1-alpha置信区间

5.统计绘图

1.线性回归

clear all
clc 
%做x和y的散点图%
x=1:10;
y=[2650,1942,1493,1086,766,539,485,291,224,202];
for i=1:10
plot(x(i),y(i),'ok');
hold on
end
xlabel('x');
ylabel('y');

看起来成指数关系故对y取对

%做x和z的散点图%
x=1:10;
y=[2650,1942,1493,1086,766,539,485,291,224,202];
z=zeros(size(y));
N=length(y);
for i=1:N
z(i)=log(y(i));
plot(x(i),z(i),'ok');
hold on
end
xlabel('x');
ylabel('y');

最后进行拟合:

x=1:10;
y=[2650,1942,1493,1086,766,539,485,291,224,202];
z=zeros(size(y));
N=length(y);
for i=1:N
z(i)=log(y(i));
end
 [p,s]=polyfit(x,z,1)

p =

  -0.298370334863784   8.167123993138752
s = 

  包含以下字段的 struct:

        R: [2×2 double]
       df: 8
    normr: 0.231593652511713

因此有:
z = 8.1671-0.2984x

2.多元线性回归
使用regress(),调用格式如下:

[b,bint,r,rint,stats] = regress(y,x,alpha)

  • b :输出向量
  • bint :回归系数估计值和他们的置信区间
  • r :残差
  • stats:用于检验回归模型的统计量
clear all
clc 
x1=[1.376, 1.375, 1.387, 1.401, 1.412, 1.428, 1.445, 1.477];
x2=[0.450,0.475,0.485,0.500,0.535,0.545,0.550,0.575];
x3=[2.170,2.554,2.676,2.713,2.823,3.088,3.122,3.262];
x4=[0.8922, 1.1610,0.5346,0.9589, 1.0239, 1.0499,1.1065, 1.1387];
y=[5.19, 5.30,5.60,5.82,6.00,6.06,6.45,6.95];
save data x1 x2 x3 x4 y
load data    %取出数据
Y=[y'];
x=[ones(size(x1')),x1',x2',x3',x4'];
% x=[ones(size(x1')),x1',x2',x3',x4'];
[b,bint,r,rint,stats]=regress(Y,x)

b =

 -13.984929738072131
  13.192039484762253
   2.422801334278647
   0.075351705837265
  -0.189698161343466


bint =

 -26.001910540334851  -1.967948935809410
   1.412992683865971  24.971086285658536
 -14.280792465224541  19.126395133781834
  -1.485927625219084   1.636631036893614
  -0.963788998494748   0.584392675807817


r =

  -0.061841695502344
   0.022836121353063
   0.012283797815437
   0.088954141756640
   0.043085353569731
  -0.147251341381197
   0.014544938640025
   0.027388683748707


rint =

  -0.131017806908374   0.007334415903686
  -0.229918483557968   0.275590726264095
  -0.146412843148935   0.170980438779809
  -0.375028670817865   0.552936954331145
  -0.054600368143406   0.140771075282869
  -0.334820783638826   0.040318100876432
  -0.475344602360936   0.504434479640986
  -0.271723565503547   0.326500933000961


stats =

   0.984604459779746  47.965406492414637   0.004731534869980   0.012303538411269

所以分析模型为:
y = -13.9849+13.1920x1+2.4228x2+0.0753x3-0.1896x4

你可能感兴趣的:(matlab数学建模基础)