多元统计分析实验报告

重 庆 交 通 大 学

学 生 实 验 报 告

实验课程名称             多元统计分析               

开课实验室                数学实验室                 

             年级       专业          

                             

开 课 时 间20132014学年   第   2   学期


实验一   Matlab软件的简单熟悉    1

实验目的:... 1

实验内容:... 1

实验要求:... 2

实验过程:... 2

实验体会:... 5

实验二   统计变量的描述性分析... 6

实验目的:... 6

实验内容:... 6

实验过程:... 7

实验体会:... 12

实验三   聚类分析... 13

实验目的... 13

实验内容... 13

实验过程... 13

实验结果... 13

实验结果分析... 14

实验体会... 14

附录... 14

实验四   判别分析... 15

实验目的... 15

实验内容... 15

实验过程... 15

实验结果... 16

实验结果分析... 17

实验体会... 17

实验五    主成分分析... 18

实验目的... 18

实验内容... 18

实验过程... 18

实验结果... 19

实验结果分析... 19

实验体会... 19

实验六   因子分析... 20

实验目的... 20

实验内容... 20

实验过程... 20

实验结果... 22

实验结果分析... 23

实验体会... 23

实验七   典型相关分析... 24

实验目的... 24

实验内容... 24

实验过程... 24

实验结果... 26

实验结果分析... 27

实验体会    27

实验一 Matlab软件的简单熟悉

实验目的:

熟悉在 MATLAB 中数据的录入、保存和调用方法;

熟悉 matlab 中关于矩阵运算和函数运算的各种命令。

实验内容:

1、 矩阵和数组的输入

2 、矩阵的运算

3 、矩阵的裁剪与拼接

4、 变量与函数

5、 命令和环境窗口

实验要求:

了解matlab的基本操作

实验过程:

1、 矩阵和数组的输入

直接输入:MATLAB 中不用描述矩阵的类型和维数,它们由输入的格式和内容决

定。小矩阵可以用排列各个元素的方法输入,同一行元素用逗号或空格分开,不

同行的元素用分号或回车分开。如

>> A=[1,2,3;4,5,6] (>>表示键入,[ ]后接回车,然后屏幕上显示输出)

>> A=[1 2 3;4 5 6]

>> A=[1 2 3

4 5 6]

都输入了一个 2*3 的矩阵A,屏幕上显示结果相同。

数组的输入除了向矩阵一样输入以外,还常采用“:”输入方式,如

>> t=1:5 (从 1 到 5 公差为1 的等差数组)

t =

1 2 3 4 5

>> c=1:2:7(从 1 到7 公差为2 的等差数组)

c =

1 3 5 7

>> linspace(0,1,9) (从 0 到 1 共 9 个等差数组)

ans = 0 0.1250 0.2500 0.3750 0.5000 0.6250 0.7500 0.8750 1.0000

由语句或函数生成;

在 M-文件中生成:。

2 、矩阵的运算

MATLAB 中提供了以下矩阵运算符:

+ 加法;- 减法;' 转置;* 乘法;^ 乘幂;\ 左除;/ 右除

它们要符合矩阵的运算规律,如果矩阵的行列数不符合运算符的要求将产生

错误信息。

>> a=[1 11 3 ;4 12 6 ]

>> A+a (MATLAB 区分大小写)

ans =

2 13 6

8 17 12

不指定输出变量,MATLAB 将回应 ans(answer 缩写)

>> B=A-a

B =

0 -9 0

0 -7 0

A-a将结果保存在B 变量中,变量可以随时调用,除非被清除或替代。

\ 左除;/ 右除用法如下:设A时可逆矩阵,AX=B 的解是 A左除 B,即

X=A\B(当B 是列向量时, 得到方程出的解); XA=B 的解是 A右除 B, 即 X=B/A. 如

>> A=[2 5 -3;3 6 -2;2 4 -3]

>> b=[3 1 4]'

>> X=A\b

X =

1

-1

-2

3 、矩阵的裁剪与拼接

从一个矩阵中取出若干行(列)构成新的矩阵称为裁剪,MATLAB 中“:”

是非常重要的裁剪工具,如

>> A(3,:) (A的第三行)

>> A(:,2) (A的第二列)

将几个矩阵接在一起,称为拼接,左右拼接行数要相同,上下拼接列数要相

同,如

>> E=[A,b]

E =

2 5 -3 3

3 6 -2 1

2 4 -3 4

>> F=[b;X]

4、 变量与函数

MATLAB 的变量由字母、数字和下划线组成,最多 31 个字符,区分大小写

字母,第一个字符必须是字母。当输入一个新变量时,MATLAB 自动建立

变量并为其分配内存空间。

几个特殊的量:pi 圆周率;Inf 正无穷大指 1/0;NaN 不定数,指 0/0。

常用的函数: 三角函数 sin cos tan cot sec csc;其它基本函数 sqrt; exp; log; log10;

abs(绝对值);round( 四舍五入)。这些函数本质上是作用于标量的,当它们作用于

矩阵时,使作用于矩阵的每一个元素。例如

>> x=linspace(0,2*pi,30); (如过语句一分号“;”结束,Matlab 只进行计算,

不显示计算的结果。

>> y=sin(x);

>> plot(x,y)

plot是最常用的画2 维图形的命令

向量函数:max; min; sum; mean(平均值); sort(从小到大排序)这些函数只

有作用于向量时才有意义

>> a=[5 2 1 4 3]

>> b=min(a),c=sum(a),e=sort(a)

矩阵函数:构造函数 zeros(0 阵);ones(1 阵);eye(单位阵);rand(随机阵)

>> w=zeros(2,3)

>> u=ones(3)

>> v=eye(3,4)

>> x=rand(1,3)

矩阵计算函数:求秩 rank(A);求逆 inv(A);求迹:trace(A);求行列式:det(A);

求特征值 eig(A)

>> a=[1 11 3 ;4 12 6 ;7 2 9]

>> d=det(a),r=rank(a),t=trace(a),e=eig(a)

5、 命令和环境窗口

在线帮助可以用命令 help 主题名

例如:>> help sum

显示在当前工作区中的所有变量名:>> whos

清除当前工作区中的所有变量:>> clear

把变量储存在文件中:>> save 文件名

调出文件中的变量:>> load 文件名

>> save magik

>> clear

>> load magik

实验体会:

通过这次实验熟悉了一些matlab的基本操作,感受到了应用软件的优越性。借助一些软件,我们就可以把一些数学问题用软件进行求解,方便快捷。

实验二统计数据的描述性分析

实验目的

熟悉在 matlab 中实现数据的统计描述方法,掌握基本统计命令:样本均值、

样本中位数、样本标准差、样本方差、概率密度函数pdf、概率分布函数 df、随机

数生成 rnd。

实验内容

1频数表和直方图

2基本统计量

3几个重要的概率及其图形

4了解 EXCEL 的假设检验功能

5书上 P52页例题用 EXCEL 做出轮廓图,雷达图

6用 MATLAB 做出调和曲线图

实验过程:

1 、频数表和直方图

数据输入,将你班的任意科目考试成绩输入

>>data=[93 88 75 76 75 86 66 90…….]

用 hist命令实现频数表和直方图

命令 1:[N,X]=hist(data,k) (数组 data 的频数表。它将区间[min(data),max(data)]

等分为 k 分,N返回 k 个小区间的频数,X返回 k 个小区间的中点。 )

命令 2: hist(data,k) (数组 data 的直方图)

练习:>> [N,X]=hist(data,5),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) , >> median(data) , >> std(data),>> var(data) , >>

range(data) , >> skewness(data),>> k= kurtosis(data)

*矩阵统计量练习(注意x’表示数据阵 x 的转置)

作为研究杨树形状的一部分,测定20 株杨树树叶,每个叶片测定了四个变量,

下表第一行为叶片长度,第二行为叶片2/3处宽,第三行为叶片 1/3 处宽,第四行

为叶片 1/2处宽,计算数据的平均数、标准差、方差、极差及偏度和峰度。

x ‘=[108 90 130 114 113 120 87 94 115 90 117 134 150 140 126 118 136 145 161 155

95 95 95 85 87 90 67 66 84 75 60 73 73 64 75 43 55 63 64 60

118 117 140 113 121 122 97 88 118 103 84 104 110 95 96 59 89 9 112 100

110 110 125 108 110 114 88 86 106 96 76 92 96 87 90 52 75 84 94 83]

>> mean(x) , >> median(x) , >> std(x)

>> var(x) , >> range(x) , >> skewness(x)

3、 几个重要的概率分布

Matlab 统计工具箱中有20 种概率分布,主要的几种分布命令字符:

norm(正态分布),exp(指数分布),poiss(泊松分布), beta(B 分布) ,

weib(威布尔) , chi2(

2

c 卡方分布),t (T 分布) , f (F 分布)

对每一种分布都提供了5 类函数,其函数命令的字符是:

pdf(概率密度) , cdf(概率分布) , inv(逆概率分布) ,

stat(均值和方差) , rnd(随机数生成)

当需要一种分布的某一类函数时,将以上所列的分布命令字符和函数命令的

字符接起来,并输入自变量和参数就行了,例如

1) 计算正态分布概率密度函数:

语法:p=normpdf(x,mu,sigma)

说明:计算均值 mu、标准差 sigma 的正态分布在 x 点概率密度 p=p(x)。

练习 1: 画出正态分布 N(0,1),N(0,4)的概率密度函数图形

>> x=-6:0.01:6; y=normpdf(x);z=normpdf(x,0,2);

>> plot(x,y,x,z),gtext('N(0,1)'),gtext('N(0,2^2)')(请同学通过help gtext了解gtext

命令)

2)计算正态分布的累积分布函数

语法:Y=normcdf(X,mu sigma)

说明:根据相应的均值 mu 和方差 sigma 计算 X 中每个值的正态分布的累积分布

函数值。

练习:求服从标准正态分布的样本值落在区间[-2,2]上的概率

>> P=normcdf(2)-normcdf(-2) (均值 mu =0 和方差sigma=1 时可缺省)

3)计算正态分布的逆累积分布函数

语法:X=norminv(P,mu sigma)

说明:根据相应的,mu 和 sigma 计算正态分布中累积分布概率值为 P 的正态分布

对应点。P中的值必须位于[0,1]区间上。

练习 1:>> x=norminv(0.5,0,1) (标准正态分布累积分布概率为 0.5 对应的点)

练习 2:找一个区间,使它包含95%的标准正态分布值,

>> x=norminv([0.025 0.975],0,1)

4)二项分布均值和方差

语法:[m,v]=binostat (N,P)

说明:返回二项分布的均值m和方差 v

练习:>> [m,v]=binostat(500,0.01) (试验 500 次,每次事件发生概率 0.01,返回

二项分布的均值 m和方差 v)

5)生成服从正态分布的随机数

语法:R=normrnd(mu,sigma,m,n)

说明:生成 m*n形式的正态分布的随机矩阵。

练习:生成均值 u=70,方差 v=25,30 行 1 列的正态随机数组。

>> R=normrnd(70,25,30,1)

****卡方分布和 F分布图命令

>> x=0:0.01:20; y=chi2pdf(x,5);z=chi2pdf(x,10);

>> plot(x,y,x,z),gtext('chi2(5)'),gtext('chi2(10)')

>> x=0:0.01:3; y=fpdf(x,10,50);z=fpdf(x,10,5);

>> plot(x,y,x,z),gtext('F(10,50)'),gtext('F(10,5)')

4、了解 EXCEL 的假设检验功能

EXCEL:工具 → 数据分析 → 描述统计

5、书上 P52页例题用 EXCEL 做出轮廓图,雷达图

打开 EXCEL >>输入数据包括变量名和样品名>>选定数据 >>点击菜单栏的插

入 >>图表>>折线图(轮廓图)>>…

同法,可选雷达图等其他多元数据图示

6、用 MATLAB 做出调和曲线图

>>t=-pi:pi/90:pi;

>>f1=563.51/2.^(1/2)+227.78*sin(t)+147.76*cos(t)+235.99*sin(2*t)+510.78*cos(2*t);

>>f2=678.92/2.^(1/2)+365.07*sin(t)+112.82*cos(t)+301.46*sin(2*t)+465.88*cos(2*t);

>>f3=237.38/2.^(1/2)+174.48*sin(t)+119.78*cos(t)+141.07*sin(2*t)+245.57*cos(2*t);

>>f4=253.41/2.^(1/2)+156.13*sin(t)+102.96*cos(t)+108.13*sin(2*t)+212.20*cos(2*t);

>>plot(t,f1,'r-',t,f2,'b-',t,f3,'y-',t,f4,'k-')

>>title(‘四个地区人均消费支出’)

7、做二元正态分布密度函数立体图

>>[x,y]=meshgrid([-2:0.1:2]);

>>z=1/2*pi*exp(-0.5*x.^2-0.5*y^2);

>>plot3(x,y,z); 或者 >>mesh(x,y,z); 或者 >>surf(x,y,z)

>> title(` (X,Y)~N(0,0,1,1,0)立体图`)

>> grid on

实验体会:

了解了matlab在统计方面的应用及基本操作,对于MATLAB的操作更加熟悉。

实验三聚类分析

一、实验目的

熟悉在 MATLAB 中聚类分析命令,并会运用聚类分析方法解决实际分类问

题。

二、实验内容

题目:为了更深入了解我国人口文化程度,现利用 1990年全国人口普查数据对全国 30

个省市进行聚类分析。分析选用了三个指标:1)大学以上文化程度的人口占全部人口的比例

(DXBL);2)初中文化程度的人口占全部人口的比例(CZBL);3)文盲半文盲的人口占全部人

口的比例(WMBL)*数据见书上 P90页*

了解如下与聚类分析有关的MATLAB 函数

(1) 函数 pdist()

功能:计算观察值两两之间的距离

**语法:Y=pdist(X)

说明:X 为 m*n 矩阵(m 个 n 维样本) ,返回值是两两对象间的欧氏距

离。Y 是长度为(m-1)*m/2 的向量。可以用 squareform()将此向量转换为

方阵,这样可以使矩阵中的的元素(i,j)对应原始数据集中的对象 i, 和 j

的距离。

**语法:Y=pdist(X,’Euclid’)

说明: 同上

**语法:Y=pdist(X,’SEuclid’)

说明: 由标准欧式距离计算矩阵 X中的对象间距离

dij2=(xi-xj)V-1( xi-xj)’

其中 D-1位对角阵,对角线上的元素为相应变量的方差。

**语法:Y=pdist(X,’Mahal’)

说明:由马氏距离计算矩阵 X中的对象间距离

dij2=(xi-xj)V-1( xi-xj)’

其中 V是样本的协方差

**语法:Y=pdist(X,’CityBlock’)

说明:由绝对值距离计算矩阵 X中的对象间距离

(2) 函数 squareform()

功能:将 pdist的输出转换为方阵

**语法 S=squareform(Y)

说明:将 pdist的输出转换为方阵。

(3) 函数 linkage ()

功能:生成聚类树

**语法 Z = linkage(Y)

说明:使用最短距离法生成具有层次结构的聚类树。输入的矩阵为函数

pdist()输出的距离向量。

**语法 Z = linkage(Y,’method’)

说明:使用’method’指定的方法生成具有层次结构的聚类树

‘method’取值的含义:

‘single ’--------------最短距离(可以缺省)

‘complete’----------最大距离

‘average’-----------平均距离

‘centroid’----------重心距离

‘word’--------------离差平方和法

(4) 函数 dendrogram()

功能:画聚类树图

**语法 H=dendrogram (Z)

说明:生成聚类树Z 的系统树图。Z由函数 linkage ()产生。

三、实验过程

1、输入数据 X(30*3)矩阵

>>x=[9.3 30.55 8.7

4 .67 29.38 8.92

......

1.85 20.66 12.75]

2、计算观察值两两之间的距离

>> Y=pdist(X,’Euclid’)

3、将 pdist的输出转换为方阵(可略)

>> S=squareform(Y)

4、生成聚类树

>> Z = linkage(Y,’ single’)

6、画聚类树图

>> H=dendrogram (Z)

实验结果

实验结果分析

对于使用欧式距离、最短距离法聚类的结果,分成三种情况:1、2、3为第一组,情况差;4、5为第二组,情况中;8、9、6、7、10、11、12、13、14、15为第三组,情况好。而对于使用明氏距离、最短距离法聚类结果,也可分为三种情况:1、2、3为第一组,情况差;13、14、15为第二组,情况好;6、7、8、9、4、5、10、11、12为第三组,情况中。

六 实验体会

通过聚类分析的实验,理解了聚类分析的相关知识,熟悉了聚类分析的步骤和方法。

实验四判别分析

一、实验目的:

熟悉在 MATLAB 中判别分析命令,会运用判别分析方法解决实际归类问题。

二、实验内容

题目:从 1995 年世界各国人文发展指数的排序中,选取高发展水平(用 1 代表) 、中等

发展水平(用 2 代表)的国家各 5个样品,另选 4 个国家作为代判样品作距离判别分析。*数

据见书上 P108页*

1、了解如下与判别分析有关的MATLAB 函数

函数 classify()

功能:判别分析

语法:class=classify(sample,training,group)

说明: sample 数据的每行为一个待判样本,training 是训练集,group 是

training 训练集中样本所对应的类别。函数返回向量 class,它与 sample 具有

相同的行数。Class的每一个元素表示sample 中相应元素(对应行)所属类

别。

2、可以先聚类再判别

三、实验步骤

1、输入训练样本集 X

>>X=[76 99 5374

79.5 99 5359

78 99 5372

72.1 5.9 5242

73.8 77.7 5370

71.2 93 4250

75.3 94.9 3412

70 91.2 3390

72.8 99 2300

62.9 80.6 3799];

2、输入已分好的类构成的向量

>>g=[ 1 1 1 1 1 2 2 2 2 2] '

3、输入待判样品Y

>>Y=[68.5 79.3 1950

69.9 96.9 2840

77.6 93.8 5233

69.3 90.3 5158];

4、执行判别分析函数命令

>> CLASS = CLASSIFY(Y,X,g)

结果:Y 中的 4 个样本都属于中等发展水平(用 2 代表)

CLASS =

2

2

1

1

附注:用 Fisher 判别法对上题进行判别

function class=FisherClassify(Y,X1,X2)

%%其中 Y是待判别样本,X1、X2 分别是两总体训练样本

>>S1=cov(X1);

>>S2=cov(X2);

>>[n1,l1]=size(X1);

>>[n2,l2]=size(X2);

>>a=1/(n1+n2-2);

>>S=a*(S1+S2);

>>Sinv=inv(S);

>>X1mean=mean(X1);

>>X2mean=mean(X2);

>>d=(X1mean-X2mean)';

>>C=Sinv*d;

>>y1mean=X1mean*C;

>>y2mean=X2mean*C;

>>y0=(n1*y1mean+n2*y2mean)/(n1+n2);

>>Yc=Y*C;

>>[n,m]=size(Y);

>>class=zeros(n,1);

>>for i=1:1:n

if y1mean>y2mean

if Yc(i)>y0

class(i)=1;

else

class(i)=2;

end

else

if Yc(i)>y0

class(i)=2;

else

class(i)=1;

end

end

end

>> class=FisherClassify(Y,x1,x2)

class =

2

2

1

1

实验结果

实验结果分析

实验结果很明显,但对比教材上的数据,第二行数据这里被分为第二组。

实验体会

通过实验加深了对于判别分析相关知识的理解,但是数据输入比较麻烦。

实验五主成分分析

一、实验目的:

熟悉在 MATLAB 中主成分分析命令,并会运用主成分分析方法解决问题。

二、实验内容

题目:对全国 30 个省市自治区经济发展基本情况的八项指标作主成分分析 *数据见书

上 P163页*

实验步骤

1、由 MATLAB 提供的主成分分析函数

函数:princomp(X)

功能:主成分分析

语法:

[COEFF, SCORE] = princomp(X)

[COEFF, SCORE,latent] = princomp(X)

[COEFF, SCORE,latent,tsquare] = princomp(X)

2、按主成分分析的计算步骤分步完成

实验过程原始记录:

1、由MATLAB提供的主成分分析函数

i)、对原始数据进行标准化

>>A=[1394.89 2502 519.01 8144 373.9 117.3 112.6 843.4

920.11 2720 345.46 6501 342.8 115.2 110.6 582.51

2849.52 1258 704.87 4839 2033.3 115.2 115.8 1234.8

1092.48 1250 290.9 4721 717.3 116.9 115.6 697.25

832.88 1387 250.23 4134 781.7 117.5 116.8 419.39

2793.37 2397 387.99 4911 1371.1 116.1 114 1840.55

1129.2 1872 320.45 4430 497.4 115.2 114.2 762.47

2014.53 2334 435.73 4145 824.8 116.1 114.3 1280.37

2462.57 5343 996.48 9279 207.4 118.7 113 1642.95

5155.25 1926 1434.95 5943 1025.5 115.8 114.3 2026.

3524.79 2249 1006.39 6619 754.4 116.6 113.5 916.59

2003.58 1254 474 4609 908.3 114.8 112.7 824.14

2160.52 2320 553.97 5857 609.3 115.2 114.4 433.67

1205.11 1182 282.84 4211 411.7 116.9 115.9 571.84

5002.34 1527 1229.55 5145 1196.6 117.6 114.2 2207.69

3002.74 1034 670.35 4344 1574.4 116.5 114.9 1367.92

2391.42 1527 571.68 4685 849 120 116.6 1220.72

2195.7 1408 422.61 4797 1011.8 119 115.5 843.83

5381.72 2699 1639.83 8250 656.5 114 111.6 1396.35

1606.15 1314 382.59 5105 556 118.4 116.4 554.97

364.17 1814 198.35 5340 232.1 113.5 111.3 64.33

3534 1261 822.54 4645 902.3 118.5 117 1431.81

630.07 942 150.84 4475 301.1 121.4 117.2 324.72

1206.68 1261 224 5149 310.4 121.3 118.1 716.65

55.98 1110 17.87 7382 4.2 117.3 114.9 5.57

1000.03 1208 300.27 4396 500.9 119 117 600.98

553.35 1007 114.81 5493 507 119.8 116.5 468.79

165.31 1445 47.76 5753 61.6 118 116.3 105.8

169.75 1355 61.98 5079 121.8 117.1 115.3 114.4

834.57 1469 376.95 5348 339 119.7 116.7 428.76];

>>M=mean(A) %%求A矩阵的均值向量%%

>>I=[111 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1

%%生成一个30维的向量%%

>>X1=I’*M

>>X2=A-X1 %%将原始数据中心化%%

>>S1=std(A) %%求原始数据的标准差向量S1%%

>>s2=[1.4748 0 0 0 0 0 0 0

0 0.8616 0 0 0 0 0 0

0 0 0.4051 0 0 0 0 0

0 0 0 1.3102 0 0 0 0

0 0 0 0 0.4599 0 0 0

0 0 0 0 0 0.0020 0 0

0 0 0 0 0 0 0.0019 0

0 0 0 0 0 0 0 0.5855] %%生成由标准差构成的对角阵%%

>>x=x2*inv(s2) %%得到原始数据的标准化数据X%%

ii)、调用主成分分析函数princomp

>>[COEFF,SCORE,latent,tsquare]=princomp(x)

2、按主成分分析的计算步骤分步完成

i)、对原始数据进行标准化(同上)

ii)、建立相关系数矩阵R

>>R=corrcoef(x)

iii)、求相关系数矩阵R 的特征值和特征向量

>>[p,r]=eig( R )

iv)求出各主成分及其贡献率

>>percent=100*r/sum(r)

>>xx=[x1,x2,x3,x4,x5,x6,x7,x8]

>>prin=p’*xx

实验结果

样本相关系数矩阵求其特征向量与特征值:

方差贡献率:

实验结果分析

对比课本实例,特征值与方差贡献率计算结果基本一致,但相应特征值的特征向量却不完全一样。详细比较后,相应特征值的特征向量仅表现正负号的不同。

实验体会

通过主成分分析的实验,了解主成分分析在MATLAB上的相关操作,也加深了相关知识的理解。

实验六因子分析

一、实验目的:

熟悉在 MATLAB 中因子分析命令,并会运用因子分析方法解决实际问题。

二、实验内容

题目:对全国 30 个省市自治区经济发展基本情况的八项指标作主成分分析 *数据见书

上 P163页*

了解如下与因子分析有关的MATLAB 函数

函数: factoran(X)

功能:因子分析

语法:

lambda = factoran(X,m)

[lambda,psi] = factoran(X,m)

[lambda,psi,T] = factoran(X,m)

[lambda,psi,T,stats] = factoran(X,m)

[lambda,psi,T,stats,F] = factoran(X,m)

[...] = factoran(...,'param1',value1,'param2',value2,...)

三、实验步骤:

1、输入原始数据A(同实验五数据)

>>A=[……]

>>M=mean(A) %%求A矩阵的均值向量%%

>>I=ones(1,30) %%生成一个1*30维的向量%%

>>X1=I’*M

>>X2=A-X1 %%将原始数据中心化%%

>>S1=std(A) %%求原始数据的标准差向量S1%%

>>s2=[1.4748 0 0 0 0 0 0 0

0 0.8616 0 0 0 0 0 0

0 0 0.4051 0 0 0 0 0

0 0 0 1.3102 0 0 0 0

0 0 0 0 0.4599 0 0 0

0 0 0 0 0 0.0020 0 0

0 0 0 0 0 0 0.0019 0

0 0 0 0 0 0 0 0.5855] %%生成由标准差构成的对角阵%%

>>X=x2*inv(s2) %%得到原始数据的标准化数据X%%

2、调用因子分析函数factoran

>>[lambda,psi,T,stats,F] = factoran(X,3)

实验结果

因子分析函数调用后结果如下:

实验结果分析

结果的数据较多,其基本与课本结果一致。

实验体会

通过因子分析的实验,了解因子分析分析问题的基本步骤和方法,认识了MATLAB处理问题的方便性。

实验七典型相关分析

一、实验目的

熟悉在 MATLAB 中典型相关分析命令,并会运用典型相关分析方法解决实际

问题。

二、实验内容

题目:对全国 30 个省市自治区农村居民收入和支出的典型相关分析 *数据见书上

P231页*

三、实验步骤

1、调用典型相关分析有关的MATLAB 函数 canoncorr

>>x=[…]

>>y=[…]

>>[A,B,r,U,V,stats] = canoncorr(x,y) %%返回 21

1

22 12

1

11 R R R R A ? ?

? %%

2、分步骤程序

(i)、输入相关系数分块矩阵

>>R11=[1 0.3682 0.7418 0.5701

0.3682 1 0.4752 0.3811

0.7418 0.4752 1 0.4828

0.5701 0.3811 0.4828 1]

>>R22=[1 0.7193 0.8492 0.8837 0.6948 0.8985 0.8980 0.8772

0.7193 1 0.7273 0.8328 0.7864 0.8144 0.6825 0.7846

0.8492 0.7273 1 0.8980 0.6447 0.9150 0.7766 0.9073

0.8837 0.8328 0.8980 1 0.6838 0.9553 0.8446 0.9080

0.6948 0.7864 0.6447 0.6838 1 0.7071 0.7530 0.7475

0.8985 0.8144 0.9150 0.9553 0.7071 1 0.8739 0.9307

0.8980 0.6825 0.7766 0.8446 0.7530 0.8739 1 0.7981

0.8772 0.7846 0.9073 0.9080 0.7475 0.9307 0.7981 1]

>>R12=[0.8394 0.8526 0.8642 0.9452 0.6704 0.9196 0.7675 0.8737

0.7007 0.4117 0.5364 0.4742 0.5999 0.5147 0.6632 0.5553

0.8134 0.5256 0.6417 0.8239 0.5093 0.8138 0.8242 0.7513

0.6115 0.7269 0.5385 0.6062 0.5615 0.6602 0.6027 0.6543]

(ii)求典型相关系数和典型变量;

>>A=inv(R11)*R12*inv(R22)*R12'

>>B=inv(R22)*R12'*inv(R11)*R12

>>[vecA,valueA]=eig(A) %%A的特征向量和特征值%%

>>[vecB,valueB]=eig(B)

>>rA=valueA.^0.5 %%A的典型相关系数%%

>>rB=valueB.^ 0.5

(iii) 、进行检验

>>M0=det(eye(4)-inv(R11)*R12*inv(R22)*R12')

%%计算检验统计量

>>n=30 %%样本容量%%

>>p1=4 %%第一组变量个数%%

>>p2=8

>>Q0=-(n-1-0.5*(p1+p2+1))*log(M0) %%公式如下表 Qi%%

>>M1=M0/(1-0.9841.^2)

>>Q1=-(n-2-0.5*(P1+P2+1))*log(M1)

>>M2=M1/(1-0.913.^2)

>>Q2=-(n-3-0.5*(P1+P2+1))*log(M2)

>>M3=M2/(1-0.718.^2)

>> Q3=-(n-4-0.5*(P1+P2+1))*log(M3)

实验结果

特征值以及特征向量:

检验结果:

实验结果分析

结果大致与教材近似。典型相关系数的检验中,结果相对偏小。

实验体会

通过典型相关分析的实验,感受到了MATLAB求解数学及统计问题的方便性,同时也更加理解典型相关分析的相关概念和方法。

相关推荐