matlab数据的基本统计分析

matlab数据的基本统计分析
matlab数据的基本统计分析

第四讲 数据的基本统计分析

数据的基本统计分析

1.数据的描述性统计分析

通常在得到数据并对数据进行除错的预处理后,需要对数据进行描述性的统计分析。比如:对数据中变量的最小值、最大值、中位数、平均值、标准差、偏度、峰度以及正态性检验等进行分析。对于这些经常性遇到的重复过程,我们可以自己编写函数,将函数保存在MATLAB自动搜索文件夹下,然后就可以直接调用自己定义的函数了。对于上述描述性统计分析,我们可以在MATLAB命令窗口中输入:edit discription,然后在弹出的窗口中选择yes,就创建了一个文件名为discription的M文件。然后在弹出的空白文件中编写以下M函数: function D=discription(x)

%descriptive statistic analysis

%input:

%x is a matrix, and each colummn stands for a variable

%output:

%D:structure variable,denotes Minimium,Maximium,Mean,Median,

%Standard_deviation,Skewness,Kurtosis,and normal distribution test,respectively.

%notes:when the number of oberservations of the colummn variables less than 30,

%Lilliefors test is used for normal distribution test,and output D.LSTA denotes

%test statistic and D.LCV denote critical value under 5% significant level;

%otherwise, Jarque-Bera test is used, and output D.JBSTA denotes test statistic

%and D.JBCV denote critical value under 5% significant level.If test statistic is

%less than critical value,the null hypothesis (normal distribution) can not

%be rejected under 5% significant level.

D.Minimium=min(x);

D.Maximium=max(x);

D.Mean=mean(x);

D.Median=median(x);

D.Standard_deviation=std(x);

D.Skewness=skewness(x);

D.Kurtosis=kurtosis(x);

if size(x,1)<30

disp('small observations,turn to Lilliefors test for normal distribution')

for i=1:size(x,2)

[h(i),p(i),Lilliefors(i),LCV(i)]=lillietest(x(:,i),0.05);

end

D.LSTA=Lilliefors;

D.LCV=LCV;

else

for i=1:size(x,2)

[h(i),p(i),Jarque_Bera(i),JBCV(i)]=jbtest(x(:,i),0.05);

end

D.JBSTA=Jarque_Bera;

D.JBCV=JBCV;

end

注意在上面给出的函数例子中,我们使用了discription作为文件名,这与函数文件中第一行中的discription保持了一致。这样就可以以D=discription(x)形式调用该函数。如果使用不同于discription的文件名保存,比如:statistic,则调用该函数时,必须以D=statistic(x)形式调用。为避免调用时的麻烦,尽量使用相同的名称保存函数。在上面的函数discription中给出了正态分布检验的统计量与5%显著水平下的临界值。当样本容量低于30时,使用Lilliefors 检验;当样本容量超过30时使用Jarque-Bera检验。

下面我们以上证综合指数为例来调用刚刚自定义的函数discription。假定我们只关心以开盘价、最高价、最低价、收盘价表示的日收益率。在读入数据并对数据进行除错的预处理后(将数据按照日期升序进行重新排列),我们得到变量b、c、d、e分别表示1990年12月19日到2006年9月27日之间的开盘价、最高价、最低价、收盘价数据。然后在MATLAB命令窗口中输入:

x=price2ret([b,c,d,e]);%将价格转换为对数收益率

D=discription(x)%调用自定义函数discription

得到以下结果:

D =

Minimium: [-0.3170 -0.1565 -0.4498 -0.1791]

Maximium: [0.7138 0.7607 0.7372 0.7192]

Mean: [7.4406e-004 7.3581e-004 7.4450e-004 7.3574e-004]

Median: [7.0916e-004 8.0367e-004 3.6515e-004 4.3624e-004]

Standard_deviation: [0.0291 0.0253 0.0278 0.0265]

Skewness: [4.5113 8.2876 4.2696 6.1913]

Kurtosis: [111.7483 229.2601 162.1498 156.0935]

JBSTA: [1.9186e+006 8.2927e+006 4.0928e+006 3.8010e+006]

JBCV: [5.9915 5.9915 5.9915 5.9915]

2.样本分布函数与概率密度函数

在对数据进行基本的描述性统计分析后,有时我们还需要对变量的样本分布函数与样本概率密度函数进行分析。甚至有时候,基于研究的需要,我们还要根据样本的历史数据,来产生随机样本进行某些研究。下面以1990年12月19日到2006年9月27日之间的上证综合指数收盘价为例,给出如何利用MATLAB得到上证综合指数日对数收益率的经验分布函数以及样本的概率密度函数,还有如何根据历史收益率的经验分布来生成随机数。

(1)样本分布函数

假定我们在MATLAB中已经读入了2000年1月1日到2006年6月1日之间的上证综合指数的日期和收盘价数据,在经过数据的预处理后,得到列向量a和

e,分别表示时期和收盘价。在MATLAB命令窗口下输入:

log_ret=price2ret(e);

h=figure;

set(h,'color','w')

plot(a(2:end),log_ret)

datetick('x',23)

xlabel('date')

ylabel('return')

title('daily return of Shanghai Composite')

图形输出结果如图所示。

上证综合指数日对数收益率

为了得到样本的分布函数,我们可以编写以下M函数,并以empirical_dist 的文件名保存在MATLAB自动搜索的文件夹下。

function [x,cumpr]=empirical_dist(data)

% generate empirical distribution function

% input:

% data is a vector

% output:

% x is sample observation vector

% cumpr is cumulative probability vector

if min(size(data))~=1

error('data must be a vector')

end

n=length(data);

data=reshape(data,n,1);

data=sort(data);

[x,a,b]=unique(data);

frequency=[a(1);diff(a)];

cumpr=cumsum(frequency)/n;

然后在MATLAB命令窗口下输入:

[x,cumpr]=empirical_dist(log_ret);

h=figure;

set(h,'color','w')

plot(x,cumpr)

ylabel('cumulative probability')

title('empirical distribution of daily returns on Shanghai Composite') 图形输出结果如图所示。

上证综合指数日对数收益率的经验分布

(2)样本概率密度函数

为了得到样本的概率密度函数,我们可以编写以下M函数,并以empirical_density的文件名保存在MATLAB自动搜索的文件夹下。

function [x,density]=empirical_density(data,m)

%generate relative frequency and probability density

%input:

%data is a vector

%m is number of intervals

% output:

% x is a vector points of intervals

% density is probability density

if min(size(data))~=1

error('data must be a vector')

end

n=length(data);

data=reshape(data,n,1);

zeta=min(abs(data))/10;

min1=min(data)-zeta;%locate low ending point

max1=max(data)+zeta;%locate high ending point

x=linspace(min1,max1,m+1);%generate intervals

density=hist(data,x)./(n*(x(2)-x(1)));

在上面的程序中,区间数目的由m确定。

利用前面得到的上证综合指数的日对数收益率log_ret,在MATLAB命令窗口下输入:

[x,density]=empirical_density(log_ret,200);

h1=figure(1);

set(h1,'color','w')

bar(x,hist(log_ret,x)/length(log_ret));

title('relative frequency');

h2=figure(2);

set(h2,'color','w')

plot(x,density);

title('probability density');

图形输出结果分别如图所示。

上证综合指数日对数收益率的相对频率

上证综合指数日对数收益率的概率密度函数

利用函数empirical_density有时候得到的概率密度函数显得不太光滑,这时,我们可以编写以下函数empirical_density1得到较为光滑概率密度函数。 function [x,density]=empirical_density1(data,m)

%generate smoothed probability density function

%input:

%data is a vector

%m is number of intervals

% output:

% x is a vector points of intervals

% density is smoothed probability density

if min(size(data))~=1

error('data must be a vector')

end

n=length(data);

data=reshape(data,n,1);

zeta=min(abs(data))/10;

min1=min(data)-zeta;%locate low ending point

max1=max(data)+zeta;%locate high ending point

x=linspace(min1,max1,m+1);%generate intervals

h=2*iqr(data)*length(data)^(-1/3);

density=zeros(1,length(x));

for j=1:n

density=density+normpdf(x,data(j),h);

end

density=density/n;

(3)产生服从经验分布的随机数

根据历史数据的经验分布产生随机数的基本原理如下:记()

f x为随机变量

F x服从[0,1]区间的均匀分布。X的概率密度函数,()

F x为其分布函数。则()

因此,先利用计算机产生服从[0,1]区间均匀分布的随机数y ,然后利用1()z F y ?=就得到了服从概率密度函数为()f x 的随机数z 。因此,如果知道()f x 或()F x ,应用上述原理就可以产生相应的随机数。

基于以上原理,我们可以编写以下函数名为generate_rv 的函数:

function random_number=generate_rv(data,m,n)

% generate random numbers based on empirical distribution

% input:

% data is a vector of sample points

% m is the number of rows of the matrix with generated random numbers (i.e.random_number)

% n is the number of columns of the matrix with generated random numbers % output:

% random_number is a m-by-n matrix with generated random numbers

[x,cumpr]=empirical_dist(data);

union_number=rand(m,n);

random_number=interp1(cumpr,x,union_number);

函数generate_rv 中用到了我们前面编写的函数empirical_dist。利用前面得到的上证综合指数的日对数收益率log_ret,在MATLAB 命令窗口下输入: h=figure;

set(h,'color','w')

random_number=generate_rv(log_ret,100,100);

plot(random_number,'.')

title('generated random numbers based on empirical distribution')

上述结果将根据上证综合指数日对数收益率的经验分布产生100行100列的相互独立的随机数。图形输出结果如图所示。

基于上证综合指数日对数收益率经验分布的随机数

matlab在统计数据的描述性分析的应用

统计数据的描述性分析 一、实验目的 熟悉在matlab中实现数据的统计描述方法,掌握基本统计命令:样本均值、样本中位数、样本标准差、样本方差、概率密度函数pdf、概率分布函数df、随机数生成rnd。 二、实验内容 1 、频数表和直方图 数据输入,将你班的任意科目考试成绩输入 >> data=[91 78 90 88 76 81 77 74]; >> [N,X]=hist(data,5) N = 3 1 1 0 3 X = 75.7000 79.1000 82.5000 85.9000 89.3000 >> hist(data,5)

2、基本统计量 1) 样本均值 语法: m=mean(x) 若x 为向量,返回结果m是x 中元素的均值; 若x 为矩阵,返回结果m是行向量,它包含x 每列数据的均值。 2) 样本中位数 语法: m=median(x) 若x 为向量,返回结果m是x 中元素的中位数; 若x 为矩阵,返回结果m是行向量,它包含x 每列数据的中位数3) 样本标准差 语法:y=std(x) 若x 为向量,返回结果y 是x 中元素的标准差; 若x 为矩阵,返回结果y 是行向量,它包含x 每列数据的标准差

std(x)运用n-1 进行标准化处理,n是样本的个数。 4) 样本方差 语法:y=var(x); y=var(x,1) 若x 为向量,返回结果y 是x 中元素的方差; 若x 为矩阵,返回结果y 是行向量,它包含x 每列数据的方差 var(x)运用n-1 进行标准化处理(满足无偏估计的要求),n 是样本的个数。var(x,1)运用n 进行标准化处理,生成关于样本均值的二阶矩。 5) 样本的极差(最大之和最小值之差) 语法:z= range(x) 返回结果z是数组x 的极差。 6) 样本的偏度 语法:s=skewness(x) 说明:偏度反映分布的对称性,s>0 称为右偏态,此时数据位于均值右边的比左边的多;s<0,情况相反;s 接近0 则可认为分布是对称的。 7) 样本的峰度 语法:k= kurtosis(x) 说明:正态分布峰度是3,若k 比3 大得多,表示分布有沉重的尾巴,即样本中含有较多远离均值的数据,峰度可以作衡量偏离正态分布的尺度之一。 >> mean(data) ,

MATLAB数据分析与多项式计算(M)

第7章 MATLAB数据分析与多项式计算 6.1 数据统计处理 6.2 数据插值 6.3 曲线拟合 6.4 离散傅立叶变换 6.5 多项式计算 6.1 数据统计处理 6.1.1 最大值和最小值 MATLAB提供的求数据序列的最大值和最小值的函数分别为max 和min,两个函数的调用格式和操作过程类似。 1.求向量的最大值和最小值 求一个向量X的最大值的函数有两种调用格式,分别是: (1) y=max(X):返回向量X的最大值存入y,如果X中包含复数元素,则按模取最大值。 (2) [y,I]=max(X):返回向量X的最大值存入y,最大值的序号存入I,如果X中包含复数元素,则按模取最大值。 求向量X的最小值的函数是min(X),用法和max(X)完全相同。 例6-1 求向量x的最大值。 命令如下: x=[-43,72,9,16,23,47]; y=max(x) %求向量x中的最大值 [y,l]=max(x) %求向量x中的最大值及其该元素的位置 2.求矩阵的最大值和最小值 求矩阵A的最大值的函数有3种调用格式,分别是: (1) max(A):返回一个行向量,向量的第i个元素是矩阵A的第i 列上的最大值。 (2) [Y,U]=max(A):返回行向量Y和U,Y向量记录A的每列的最大值,U向量记录每列最大值的行号。 (3) max(A,[],dim):dim取1或2。dim取1时,该函数和max(A)完全相同;dim取2时,该函数返回一个列向量,其第i个元素是A矩阵的第i行上的最大值。 求最小值的函数是min,其用法和max完全相同。

例6-2 分别求3×4矩阵x中各列和各行元素中的最大值,并求整个矩阵的最大值和最小值。 3.两个向量或矩阵对应元素的比较 函数max和min还能对两个同型的向量或矩阵进行比较,调用格式为: (1) U=max(A,B):A,B是两个同型的向量或矩阵,结果U是与A,B 同型的向量或矩阵,U的每个元素等于A,B对应元素的较大者。 (2) U=max(A,n):n是一个标量,结果U是与A同型的向量或矩阵,U的每个元素等于A对应元素和n中的较大者。 min函数的用法和max完全相同。 例6-3 求两个2×3矩阵x, y所有同一位置上的较大元素构成的新矩阵p。 6.1.2 求和与求积 数据序列求和与求积的函数是sum和prod,其使用方法类似。设X是一个向量,A是一个矩阵,函数的调用格式为: sum(X):返回向量X各元素的和。 prod(X):返回向量X各元素的乘积。 sum(A):返回一个行向量,其第i个元素是A的第i列的元素和。 prod(A):返回一个行向量,其第i个元素是A的第i列的元素乘积。 sum(A,dim):当dim为1时,该函数等同于sum(A);当dim为2时,返回一个列向量,其第i个元素是A的第i行的各元素之和。 prod(A,dim):当dim为1时,该函数等同于prod(A);当dim为2时,返回一个列向量,其第i个元素是A的第i行的各元素乘积。 例6-4 求矩阵A的每行元素的乘积和全部元素的乘积。 6.1.3 平均值和中值 求数据序列平均值的函数是mean,求数据序列中值的函数是median。两个函数的调用格式为: mean(X):返回向量X的算术平均值。 median(X):返回向量X的中值。

matlab与多元统计分析

Matlab 与多元统计分析 胡云峰 安庆师范学院 第三章习题 3.1对某地区的6名2周岁男婴的身高、胸围、上半臂进行测量。得样本数据如表3.1所示。 假设男婴的测量数据X (a )(a=1,…,6)来自正态总体N 3(μ,∑) 的随机样本。根据以往的资料,该地区城市2周岁男婴的这三项的均值向量μ0=(90,58,16)’,试检验该地区农村男婴与城市男婴是否有相同的均值向量。 表3.1 某地区农村2周岁男婴的体格测量数据 1.预备知识 ∑未知时均值向量的检验: H 0:μ=μ0 H 1:μ≠μ0 H 0成立时 122)(0,)(1)(1,) ()'((1)))()'()(,1)(1)1(,) (1)P P X N n S W n n X n S X n X S X T p n n p T F P n p n p μμμμμ---∑--∑??∴----=-----+∴-- 当 2 (,)(1) n p T F p n p p n α-≥--或者22T T α≥拒绝0H 当 2 (,)(1) n p T F p n p p n α-<--或者22T T α<接受0H 这里2 (1) (, )p n T F p n p n p αα-= -- 2.根据预备知识用matlab 实现本例题 算样本协方差和均值 程序x=[78 60.6 16.5;76 58.1 12.5;92 63.2 14.5;81 59.0 14.0;81 60.8 15.5;84 59.5 14.0]; [n,p]=size(x); i=1:1:n; xjunzhi=(1/n)*sum(x(i,:));

Matlab对采样数据进行频谱分析

使用Matlab对采样数据进行频谱分析 1、采样数据导入Matlab 采样数据的导入至少有三种方法。 第一就是手动将数据整理成Matlab支持的格式,这种方法仅适用于数据量比较小的采样。 第二种方法是使用Matlab的可视化交互操作,具体操作步骤为:File --> Import Data,然后在弹出的对话框中找到保存采样数据的文件,根据提示一步一步即可将数据导入。这种方法适合于数据量较大,但又不是太大的数据。据本人经验,当数据大于15万对之后,读入速度就会显著变慢,出现假死而失败。 第三种方法,使用文件读入命令。数据文件读入命令有textread、fscanf、load 等,如果采样数据保存在txt文件中,则推荐使用 textread命令。如 [a,b]=textread('data.txt','%f%*f%f'); 这条命令将data.txt中保存的数据三个三个分组,将每组的第一个数据送给列向量a,第三个数送给列向量b,第二个数据丢弃。命令类似于C语言,详细可查看其帮助文件。文件读入命令录入采样数据可以处理任意大小的数据量,且录入速度相当快,一百多万的数据不到20秒即可录入。强烈推荐! 2、对采样数据进行频谱分析 频谱分析自然要使用快速傅里叶变换FFT了,对应的命令即 fft ,简单使用方法为:Y=fft(b,N),其中b即是采样数据,N为fft数据采样个数。一般不指定N,即简化为Y=fft(b)。Y即为FFT变换后得到的结果,与b的元素数相等,为复数。以频率为横坐标,Y数组每个元素的幅值为纵坐标,画图即得数据b的幅频特性;以频率为横坐标,Y数组每个元素的角度为纵坐标,画图即得数据b的相频特性。典型频谱分析M程序举例如下: clc fs=100; t=[0:1/fs:100]; N=length(t)-1;%减1使N为偶数 %频率分辨率F=1/t=fs/N p=1.3*sin(0.48*2*pi*t)+2.1*sin(0.52*2*pi*t)+1.1*sin(0.53*2*pi*t)... +0.5*sin(1.8*2*pi*t)+0.9*sin(2.2*2*pi*t); %上面模拟对信号进行采样,得到采样数据p,下面对p进行频谱分析 figure(1) plot(t,p); grid on title('信号 p(t)'); xlabel('t') ylabel('p')

matlab与应用多元统计分析

多元统计分析中的应用研究 , 摘要:许多实际问题往往需要对数据进行统计分析,建立合适的统计模型,过去一般采用SAS 、SPSS软件分析,本文给出 Matlab软件在多元统计分析上的应用, 主要介绍Matlab 在聚类分析、判别分析、主成份分析上的应用,文中均给以实例, 结果令人满意。 关键词:Matlab软件;聚类分析;主成份分析 Research for application of Multivariate Statistical Analysis Abstract:Many practice question sometimes need Statistical Analysis to data.,and establish appropriate Statistical model SAS and SPSS software were commonly used in foretime ,this paper give the application of Matlab software in Multivariate Statistical Analysis,mostly introduce the application of Matlab software in priciple component analysis and cluster analysis and differentiate analysis.The example are given in writing and the result are satisfaction. Key words: Matlab software; cluster analysis; priciple component analysis 0 引言 许多实际问题往往需要对数据进行多元统计分析, 建立合适的模型, 在多元统计分析方面, 常用的软件有SAS 、SPSS 、S-PLUS等。我们在这里给出Matlab在多元统计分析上的应用, 在较早的版本中, 统计功能不那么强大, 而在Matlab6.x版本中, 仅在统计工具中的功能函数就达200多个, 功能已足以赶超任何其他专用的统计软件,在应用上Matlab具有其他软件不可比拟的操作简单,接口方便, 扩充能力强等优势, 再加上Matlab的应用范围广泛, 因此可以预见其在统计应用上越来越占有极其重要的地位,下面用实例给出Matlab 在聚类分析、主成份分析上的应用。 1 聚类分析 聚类分析法是一门多元统计分类法,其目的是把分类对象按一定规则分成若干类,所分成的类是根据数据本身的特征确定的。聚类分析法根据变量(或样品或指标)的属性或特征的相似性,用数学方法把他们逐步地划类,最后得到一个能反映样品之间或指标之间亲疏关系的客观分类系统图,称为谱系聚类图。 聚类分析的步骤有:数据变换,计算n个样品的两两间的距离,先分为一类,在剩下的n-1个样品计算距离,按照不同距离最小的原则,增加分类的个数,减少所需要分类的样品的个数,循环进行下去,直到类的总个数为1时止。根

Matlab大数据处理

Matlab大数据处理2:硬盘访问.mat文件 分类:Matlab Hack2013-09-08 20:16 146人阅读评论(0) 收藏举报Matlab程序中经常要访问.mat文件,通常在作法是用load函数直接加载.mat文件。如果.mat文件非常大,超过了系统可用内存的时候该怎么办呢?Matlab2013b为提供了matfile函数,matfile函数可以通过索引直接访问.mat文件中的Matlab变量,而无需将.mat文件加载入内存。 matfile有两种用法: m = matfile(filename),用文件名创建matfile对象,通过这个对象可以直接访问mat文件中的matlab变量。 m = matfile(filename,'Writable',isWritable),isWritable开启或关闭文件写操作。 使用示例: 1. 向mat文件中写入变量 x = magic(20); m = matfile('myFile.mat'); % 创建一个指向myFile.mat的matfile对象 m.x = x; % 写入x m.y(81:100,81:100) = magic(20); % 使用坐标索引

2. 加载变量 filename = 'topography.mat'; m = matfile(filename); topo = m.topo; %读取变量topo [nrows,ncols] = size(m,'stocks'); %读取stocks变量的size avgs = zeros(1,ncols); for idx = 1:ncols avgs(idx) = mean(m.stocks(:,idx)); end 3. 开启写权限 filename = 'myFile.mat'; m = matfile(filename,'Writable',true); 或者 m.Properties.Writable = true;

Matlab多元统计分析程序

Matlab多元统计分析程序 1. 主成分分析M程序 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 主成分分析 % % 设对变量x1,x2,...,xp进行n次观测,得到n×p数据矩阵x=x(i,j), % 本程序对初始数据进行主成分分析,要求先请将观测矩阵输入到变 % 量x,再运行本程序。 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % 确定观测矩阵x 的尺寸,以便数据标准化. % [n,p]=size(x); % % 数据处理方式设置,即是否先将数据标准化. % fprintf('\n 1---使用原始数据直接计算距离') fprintf('\n 2---使用标准化后的数据计算距离') k=input('请输入你的选择(1~2)'); % % 数据标准化 % switch k case 1 xs=x; case 2 mx=mean(x);

xs=(x-repmat(mx,n,1))./repmat(stdr,n,1); end % % 主成分分析,返回各主成分pc,所谓的z-得分score,x的协方差 % 矩阵的特征值latent和每个数据点的Hotelling统计量tsquare. % [pc score latent tsquare]=princomp(xs) 2. 典型相关分析M程序 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % 在运行本程序之前,请先把数据输入/导入到MATLAB 的 % 内存空间,并存放在变量x 中,每行存放一个样本。 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % 确定观测矩阵x 的尺寸 % [n,h]=size(x); % % 输入基本参数 % p=input('\n第一组变量的个数p = ? '); fprintf('\n1--使用样本协方差矩阵计算典型相关变量') fprintf('\n2--使用样本相关矩阵计算典型相关变量') ctl=input('\n请输入你的选择'); % % 默认的显著性水平为alpha=0.05,可以改变下面语句中的alpha值。 % alpha=0.05; % % 按要求计算样本协方差矩阵或样本相关矩阵 % switch ctl case 1 st=cov(x); case 2

第6章matlab数据分析与多项式计算_习题答案

第6章 MATLAB数据分析与多项式计算 习题6 一、选择题 1.设A=[1,2,3,4,5;3,4,5,6,7],则min(max(A))的值是()。B A.1 B.3 C.5 D.7 2.已知a为3×3矩阵,则运行mean(a)命令是()。B A.计算a每行的平均值 B.计算a每列的平均值 C.a增加一行平均值 D.a增加一列平均值 3.在MATLAB命令行窗口输入下列命令: >> x=[1,2,3,4]; >> y=polyval(x,1); 则y的值为()。 D A.5 B.8 C.24 D.10 4.设P是多项式系数向量,A为方阵,则函数polyval(P,A)与函数polyvalm(P,A)的值()。D A.一个是标量,一个是方阵 B.都是标量 C.值相等 D.值不相等 5.在MATLAB命令行窗口输入下列命令: >> A=[1,0,-2]; >> x=roots(A); 则x(1)的值为()。 C A.1 B.-2 C. D. 6.关于数据插值与曲线拟合,下列说法不正确的是()。A A.3次样条方法的插值结果肯定比线性插值方法精度高。 B.插值函数是必须满足原始数据点坐标,而拟合函数则是整体最接近原始数据点,而不一定要必须经过原始数据点。 C.曲线拟合常常采用最小二乘原理,即要求拟合函数与原始数据的均方误差达到极小。 D.插值和拟合都是通过已知数据集来求取未知点的函数值。 二、填空题 1.设A=[1,2,3;10 20 30;4 5 6],则sum(A)= ,median(A)= 。 [15 27 39],[4 5 6[ 2.向量[2,0,-1]所代表的多项式是。2x2-1 3.为了求ax2+bx+c=0的根,相应的命令是(假定a、b、c已经赋值)。为了

多元统计分析

作业一

1.2 分析2016年经济发展情况 排名省gdp 占比累计占比 1 广东79512.05 10.30 10.30 2 江苏76086.2 9.86 20.17 3 山东67008.2 8.68 28.85 4 浙江4648 5 6.02 34.87 5 河南40160.01 5.20 40.08 6 四川32680.5 4.24 44.31 7 湖北32297.9 4.19 48.50 8 河北31827.9 4.12 52.62 9 湖南31244.7 4.05 56.67 10 福建28519.2 3.70 60.37 11 上海27466.2 3.56 63.93 12 北京24899.3 3.23 67.16 13 安徽24117.9 3.13 70.28 14 辽宁22037.88 2.86 73.14 15 陕西19165.39 2.48 75.62 16 内蒙古18632.6 2.41 78.04 17 江西18364.4 2.38 80.42 18 广西18245.07 2.36 82.78 19 天津17885.4 2.32 85.10 20 重庆17558.8 2.28 87.37 21 黑龙江15386.09 1.99 89.37 22 吉林14886.23 1.93 91.30 23 云南14869.95 1.93 93.22 24 山西12928.3 1.68 94.90 25 贵州11734.43 1.52 96.42 26 新疆9550 1.24 97.66 27 甘肃7152.04 0.93 98.59 28 海南4044.51 0.52 99.11 29 宁夏3150.06 0.41 99.52 30 青海2572.49 0.33 99.85 31 西藏1150.07 0.15 100.00 将2016各省的GDP进行排名,可以发现,经济发达的的地区主要集中在东部地区。西部gdp的占比较小。作出2016各省的gdp直方图如下:

MATLAB的统计工具箱中的多元统计分析中提供了聚类分析的两种方法

MATLAB的统计工具箱中的多元统计分析中提供了聚类分析的两种方法: 1.层次聚类hierarchical clustering 2.k-means聚类 这里用最简单的实例说明以下层次聚类原理和应用发法。 层次聚类是基于距离的聚类方法,MATLAB中通过pdist、linkage、dendrogram、cluster等函数来完成。层次聚类的过程可以分这么几步: (1) 确定对象(实际上就是数据集中的每个数据点)之间的相似性,实际上就是定义一个表征对象之间差异的距离,例如最简单的平面上点的聚类中,最经常使用的就是欧几里得距离。 这在MATLAB中可以通过Y=pdist(X)实现,例如 >> X=randn(6,2) X = -0.4326 1.1892 -1.6656 -0.0376 0.1253 0.3273 0.2877 0.1746 -1.1465 -0.1867 1.1909 0.7258 >> plot(X(:,1),X(:,2),'bo') %给个图,将来对照聚类结果把 >> Y=pdist(X) Y = Columns 1 through 14 1.7394 1.0267 1.2442 1.5501 1.6883 1.8277 1.9648 0.5401 2.9568 0.2228 1.3717 1.1377 1.4790 1.0581 Column 15

2.5092 例子中X数据集可以看作包含6个平面数据点,pdist之后的Y是一个行向量,15个元素分别代表X 的第1点与2-6点、第2点与3-6点,......这样的距离。那么对于M个点的数据集X,pdist之后的Y 将是具有M*(M-1)/2个元素的行向量。Y这样的显示虽然节省了内存空间,但对用户来说不是很易懂,如果需要对这些距离进行特定操作的话,也不太好索引。MATLAB中可以用squareform把Y转换成方阵形式,方阵中位置的数值就是X中第i和第j点之间的距离,显然这个方阵应该是 个对角元素为0的对称阵。 >> squareform(Y) ans = 0 1.7394 1.0267 1.2442 1.5501 1.6883 1.7394 0 1.8277 1.9648 0.5401 2.9568 1.0267 1.8277 0 0.2228 1.3717 1.1377 1.2442 1.9648 0.2228 0 1.4790 1.0581 1.5501 0.5401 1.3717 1.4790 0 2.5092 1.6883 2.9568 1.1377 1.0581 2.5092 0 这里需要注意的是,pdist可以使用多种参数,指定不同的距离算法。help pdist把。 另外,当数据规模很大时,可以想象pdist产生的Y占用内存将是很吓人的,比如X有10k个数据点,那么X占10k*8*2Bytes=160K,这看起来不算啥,但是pdist后的Y会有10k*10k/2*8Bytes=400M 。怕了把,所以,废话说在前面,用MATLAB的层次聚类来处理大规模数据,大概是很不合适的。 (2) 确定好了对象间的差异度(距离)后,就可以用Z=linkage(Y)来产生层次聚类树了。 >> Z=linkage(Y) Z = 3.0000 4.0000 0.2228 2.0000 5.0000 0.5401 1.0000 7.0000 1.0267

实验一数据处理方法MATLAB实现

实验一数据处理方法的MATLAB实现 一、实验目的 学会在MATLAB环境下对已知的数据进行处理。 二、实验方法 1. 求取数据的最大值或最小值。 2. 求取向量的均值、标准方差和中间值。 3.在MATLAB环境下,对已知的数据分别进行曲线拟合和插值。 三、实验设备 1.586以上微机,16M以上内存,400M硬盘空间,2X CD-ROM 2.MATLAB5.3以上含CONTROL SYSTEM TOOLBOX。 四、实验内容 1.在MATLAB环境下,利用MATLAB控制系统工具箱中的函数直接求取数据的最大值或最小值,以及向量的均值、标准方差和中间值。 2.在MATLAB环境下,选择合适的曲线拟合和插值方法,编写程序,对已知的数据分别进行曲线拟合和插值。 五、实验步骤 1. 在MATLAB环境下,将已知的数据存到数据文件mydat.mat中。 双击打开Matlab,在命令窗口(command window)中,输入一组数据:实验一数据处理方法的MATLAB实现 一、实验目的 学会在MATLAB环境下对已知的数据进行处理。 二、实验方法 1. 求取数据的最大值或最小值。 2. 求取向量的均值、标准方差和中间值。 3.在MATLAB环境下,对已知的数据分别进行曲线拟合和插值。 三、实验设备 1.586以上微机,16M以上内存,400M硬盘空间,2X CD-ROM 2.MATLAB5.3以上含CONTROL SYSTEM TOOLBOX。 四、实验内容

1.在MATLAB环境下,利用MATLAB控制系统工具箱中的函数直接求取数据的最大值或最小值,以及向量的均值、标准方差和中间值。 2.在MATLAB环境下,选择合适的曲线拟合和插值方法,编写程序,对已知的数据分别进行曲线拟合和插值。 五、实验步骤 1. 在MATLAB环境下,将已知的数据存到数据文件mydat.mat中。 双击打开Matlab,在命令窗口(command window)中,输入一组数据: x=[1,4,2,81,23,45] x = 1 4 2 81 2 3 45 单击保存按钮,保存在Matlab指定目录(C:\Program Files\MATLAB71)下,文件名为“mydat.mat”。 2. 在MATLAB环境下,利用MATLAB控制系统工具箱中的函数直接求取数据的最大值或最小值,以及向量的均值、标准方差和中间值。 继续在命令窗口中输入命令: (1)求取最大值“max(a)”; >> max(x) ans = 81 (2)求取最小值“min(a)”; >> min(x) ans = 1 (3)求取均值“mean(a)”; >> mean(x) ans =

matlab与多元统计分析

m a t l a b与多元统计分 析 Company Document number:WTUT-WT88Y-W8BBGB-BWYTT-19998

Matlab 与多元统计分析 胡云峰 安庆师范学院 第三章习题 对某地区的6名2周岁男婴的身高、胸围、上半臂进行测量。得样本数据如表所示。假设男婴的测量数据X (a )(a=1,…,6)来自正态总体N 3(,∑) 的 随机样本。根据以往的资料,该地区城市2周岁男婴的这三项的均值向量0= (90,58,16)’,试检验该地区农村男婴与城市男婴是否有相同的均值向量。 表 某地区农村2周岁男婴的体格测量数据 解 1.预备知识 ∑未知时均值向量的检验: H 0:=0 H 1:≠0 H 0成立时 122)(0,)(1)(1,) ()'((1)))()'()(,1)(1)1(,) (1)P P X N n S W n n X n S X n X S X T p n n p T F P n p n p μμμμμ---∑--∑??∴----=-----+∴-- 当 2 (,)(1) n p T F p n p p n α-≥--或者22T T α≥拒绝0H 当 2 (,)(1) n p T F p n p p n α-<--或者22T T α<接受0H

这里2(1) (, )p n T F p n p n p αα-= -- 2.根据预备知识用matlab 实现本例题 算样本协方差和均值 程序x=[78 ;76 ;92 ;81 ;81 ;84 ]; [n,p]=size(x); i=1:1:n; xjunzhi=(1/n)*sum(x(i,:)); y=rand(p,n); for j=1:1:n y(:,j)= x(j,:)'-xjunzhi'; y=y; end A=zeros(p,p); for k=1:1:n; A=A+(y(:,k)*y(:,k)'); end xjunzhi=xjunzhi' S=((n-1)^(-1))*A 输出结果xjunzhi = S = 然后u=[90;58;16]; t2=n*(xjunzhi-u)'*(S^(-1))*(xjunzhi-u) f=((n-p)/(p*(n-1)))*t2 输出结果t2 = f = 所以21()'()T n X S X μμ-=--=

数学建模多元统计分析

实验报告 一、实验名称 多元统计分析作业题。 二、实验目的 (一)了解并掌握主成分分析与因子分析的基本原理和简单解法。 (二)学会使用matlab编写程序进行因子分析,求得特征值、特征向量、载荷矩阵等值。(三)学会使用排序、元胞数组、图像表示最后的结果,使结果更加直观。 三、实验内容与要求

四、实验原理与步骤 (一)第一题: 1、实验原理: 因子分析简介: (1) 1.1 基本因子分析模型 设p维总体x=(x1,x2,....,xp)'的均值为u=(u1,u2,....,u3)',因子分析的一般模型为 x1=u1+a11f1+a12f2+........+a1mfm+ε 1 x2=u2+a21f1+a22f2+........+a2mfm+ε 2 ......... xp=up+ap1f1+fp2f2+..........+apmfm+εp 其中,f1,f2,.....,fm为m个公共因子;εi是变量xi(i=1,2,.....,p)所独有的特殊因子,他们都是不可观测的隐变量。称aij(i=1,2,.....,p;j=1,2,.....,m)为变量xi的公共因子fi上的载荷,它反映了公共因子对变量的重要程度,对解释公共因子具有重要的作用。上式可以写为矩阵形式 x=u+Af+ε

其中A=(aij)pxm 称为因子载荷矩阵;f=(f1,f2,....,fm)'为公共因子向量;ε=(ε1,ε2,.....εp)称为特殊因子向量 (2) 1.2 共性方差与特殊方差 xi的方差var(xi)由两部分组成,一个是公共因子对xi方差的贡献,称为共性方差;一个是特殊因子对xi方差的贡献,称为特殊方差。每个原始变量的方差都被分成了共性方差和特殊方差两部分。 (3) 1.3 因子旋转 因子分析的主要目的是对公共因子给出符合实际意义的合理解释,解释的依据就是因子载荷阵的个列元素的取值。当因子载荷阵某一列上各元素的绝对值差距较大时,并且绝对值大的元素较少时,则该公共因子就易于解释,反之,公共因子的解释就比较困难。此时可以考虑对因子和因子载荷进行旋转(例如正交旋转),使得旋转后的因子载荷阵的各列元素的绝对值尽可能量两极分化,这样就使得因子的解释变得容易。 因子旋转方法有正交旋转和斜交旋转两种,这里只介绍一种普遍使用的正交旋转法:最大方差旋转。这种旋转方法的目的是使因子载荷阵每列上的各元素的绝对值(或平方值)尽可能地向两极分化,即少数元素的绝对值(或平方值)取尽可能大的值,而其他元素尽量接近于0. (4) 1.4 因子得分 在对公共因子做出合理解释后,有时还需要求出各观测所对应的各个公共因子的得分,就比如我们知道某个女孩是一个美女,可能很多人更关心该给她的脸蛋、身材等各打多少分,常用的求因子得分的方法有加权最小二乘法和回归法。 注意:因子载荷矩阵和得分矩阵的区别: 因子载荷矩阵是各个原始变量的因子表达式的系数,表达提取的公因子对原始变量的影响程度。因子得分矩阵表示各项指标变量与提取的公因子之间的关系,在某一公因子上得分高,表明该指标与该公因子之间关系越密切。简单说,通过因子载荷矩阵可以得到原始指标变量的线性组合,如X1=a11*F1+a12*F2+a13*F3,其中X1为指标变量1,a11、a12、a13分别为与变量X1在同一行的因子载荷,F1、F2、F3分别为提取的公因子;通过因子得分矩阵可以得到公因子的线性组合,如F1=a11*X1+a21*X2+a31*X3,字母代表的意义同上。 (5) 1.5 因子分析中的Heywood(海伍德)现象 如果x的各个分量都已经标准化了,则其方差=1。即共性方差与特殊方差的和为1。也就是说共性方差与特殊方差均大于0,并且小于1。但在实际进行参数估计的时候,共性方差

matlab及多元统计分析

Matlab 与多元统计分析 胡云峰 师学院 第三章习题 3.1 对某地区的6名2周岁男婴的身高、胸围、上半臂进行测量。得样本数据如表3.1所示。假设男婴的测量数据X (a )(a=1,…,6)来自正态总体N 3(μ,∑) 的随机样本。根据以往的资料,该地区城市2周岁男婴的这三项的均值向量μ0=(90,58,16)’,试检验该地区农村男婴与城市男婴是否有相同的均值向量。 1.预备知识 ∑未知时均值向量的检验: H 0:μ=μ0 H 1:μ≠μ0 H 0成立时 122)(0,)(1)(1,) ()'((1)))()'()(,1)(1)1(,) (1)P P X N n S W n n X n S X n X S X T p n n p T F P n p n p μμμμμ---∑--∑??∴----=-----+∴-- 当 2 (,)(1) n p T F p n p p n α-≥--或者22T T α≥拒绝0H 当 2 (,)(1) n p T F p n p p n α-<--或者22T T α<接受0H

这里2 (1) (, )p n T F p n p n p αα-= -- 2.根据预备知识用matlab 实现本例题 算样本协方差和均值 程序x=[78 60.6 16.5;76 58.1 12.5;92 63.2 14.5;81 59.0 14.0;81 60.8 15.5;84 59.5 14.0]; [n,p]=size(x); i=1:1:n; xjunzhi=(1/n)*sum(x(i,:)); y=rand(p,n); for j=1:1:n y(:,j)= x(j,:)'-xjunzhi'; y=y; end A=zeros(p,p); for k=1:1:n; A=A+(y(:,k)*y(:,k)'); end xjunzhi=xjunzhi' S=((n-1)^(-1))*A 输出结果xjunzhi = 82.0000 60.2000 14.5000 S = 31.6000 8.0400 0.5000 8.0400 3.1720 1.3100 0.5000 1.3100 1.900 然后u=[90;58;16]; t2=n*(xjunzhi-u)'*(S^(-1))*(xjunzhi-u) f=((n-p)/(p*(n-1)))*t2 输出结果t2 = 420.4447 f = 84.0889 所以2 1 ()'()T n X S X μμ-=--=420.4447 2 (1) n p F T p n -= -=84.0889 查表得F 3,3(0.05)=9.28<84.0889 F 3,3(0.01)=29.5<84.0889 因此在a=0.05或 a=0.01时拒绝0H 假设

多元统计分析 MATLAB

《多元统计分析》 实验报告 姓名:赵晴晴 学号:176121115 日期:2017.11.15

实验一:主成分分析实验 (2)利用协方差、相关系数矩阵进行主成分分析,可否只用第一主成分排名。(3)构造新的实对称矩阵,使得可以只用第一主成分排名。 (4)排名的结果是否合理?为什么?

解:(1)首先输入数据,程序如下: A=[data]; %data 即为表5-12中的数据 [m,n]=size(A); m=31 n=6 %根据指标的属性将原始数据统一趋势化,其中资产负债率为成本型,转换成效益型。 根据如下公式:B=(b ij )n?p ,b ij = (x ij ?x ij ) j min (x ij ?x ij )j min j max (效益型)(x ij ?x ij )j max (x ij ?x ij )j min j max (成本型)( x ij ?αj ? x ij ?αj )j max max x ij ?αj ? x ij ?αj j min (适度型),得出 A1=(A(:,1)-min(A(:,1)))./(max(A(:,1))-min(A(:,1))); A2=(A(:,2)-min(A(:,2)))./(max(A(:,2))-min(A(:,2))); A3=(max(A(:,3))-A(:,3))./(max(A(:,3))-min(A(:,3))); A4=(A(:,4)-min(A(:,4)))./(max(A(:,4))-min(A(:,4))); A5=(A(:,5)-min(A(:,5)))./(max(A(:,5))-min(A(:,5))); A6=(A(:,6)-min(A(:,6)))./(max(A(:,6))-min(A(:,6))); A=[A1,A2,A3,A4,A5,A6];则程序中统一趋势化后的矩阵A 如下: ???????????? ??????????????0.9134 0.8938 0.9925 0.3871 0.7420 0.5473 0.7512 0.0323 0.4906 0.0872 0.1631 0.3761 0.7124 0.7795 0.5245 0.0952 0.3710 0.4446 ...................................................................................... ......................................................................................0.8258 0.1073 0.7547 0.1403 0.2817 0.1292 0.8479 0.2882 0.7887 0.1056 0.4237 0.2545 0.8120 0.1316 0.5736 0.7113 0.0725 0.0374 =A %详细数据见附件1 (2)①%利用相关系数矩阵进行主成分分析 R=corrcoef(A); 得到相关系数矩阵为:????????? ???????????= 1.0000 0.0909 0.6592 0.4629 0.3818 0.4993- 0.0909 1.0000 0.0838 0.1695- 0.7293 0.5812 0.6592 0.0838 1.0000 0.3994 0.5214 0.5342 - 0.4629 0.1695- 0.3994 1.0000 0.1377 0.3414- 0.3818 0.7293 0.5214 0.1377 1.0000 0.2121 0.4993- 0.5812 0.5342- 0.3414- 0.2121 1.0000R %在指标中无明显的共性关系 [v,d]=eig(R); %计算特征值与特征向量

基于MATLAB的EXCEL数据计算与分析

基于MATLAB的EXCEL数据计算与分析 潜刘方 摘要:再怎么样希望先看摘要,阅读本文需要一定的MA TLAB基础知识,不需要excel相关知识。结合本人近期工作上的需要测量计算,想偷懒就选择了利用MATLAB偷懒,于是便有了本文。本文首先利用MA TLAB读取数据,计算,将数据写入excel,然后花了很大的精力来根据实际需要画图,最后将图保存在excel所在的文件夹下。这个m文件可谓花了我不少的时间和精力。最后根据m文件的不足(不能将图形输入到excel文档当中),进一步弥补这不足,就有了exlink(也叫excel link),在网上搜索了相关的知识,发现很多关于exlink 的培训,觉得实在可笑,所以就将exlink的使用写的比较详细,以供读者自行分析体会。关键字:MATLAB excel exlink 接口 一、前沿 MATLAB是一款应用在各个领域的数学软件,最初叫做矩阵实验室,专用于矩阵的运算,后来的版本再各个领域都得到了很好的应用,比如:通信、电力电子、电机控制、运动控制、计算机控制、自动控制,DSP数字信号处理。但是MATLAB对于数据的处理与可视化是很多软件所不能及的。 EXCEL作为办公必备软件,能对简单数据分析计算与作图分析,但是处理复杂数据显得力不从心,比如三维作图就无法利用EXCEL作出;EXCEL本身的函数远远没有MATLAB 多,MATLAB作为数据有其独特的优势,集成了很多数学函数,包括数据拟合差值等。MATLAB 可以从EXCEL中读取数据,经过相关运算之后又可以将数据写入EXCEL,假如需要重复性的对excel可以利用MATLAB编写函数,每次只要运行MATLAB程序就可以完成,大大节省时间和精力。 另外,MATLAB还有与EXCEL的接口,叫做EXLINK,运用这个接口可以在excel中完成MATLAB函数的调用,还能传送数据给MATLAB,从MATLAB当中读取数据,从MATLAB 当中读取图形,使用方便,操作简单。 二、基于MATLAB的数据分析 数据分析操作流程主要分为三步:第一步,从excel中读取数据;第二部:利用MATLAB 大量函数对数据分析处理;第三步:将分析结果写入excel中。在整个过程中,不需要打开excel软件,操作十分方便,每次操作唯一要做就是修改excel所在的目录及文件名。主要函数如下(具体使用方法可在MATLAB命令窗口输入help +函数名查看):Xlsread 从excel中读数据 Xlswrite 向excel中邪数据 num2str 将数字转换为字符串 strncmp 字符串比较 polyfit 数据拟合 polyval 具体数值代入求值 plot 作图

相关文档
最新文档