生物医学数据分析及其MATLAB应用
表3-12 八只大白鼠的进食量和体重增加量
进食量/g 增 量/g 800 185 780 158 720 130 867 180 690 134 787 167 934 186 750 133 (1) 此资料有无可疑的异常点?
(2) 求直线回归方程并对回归系数作假设检验。
(3) 试估计进食量为900g时,大白鼠的体重平均增加多少,计算其95%的可信区间,并说明其含义。
(4) 求进食量为900g时,个体Y值的95%置信区间,并解释其意义。
答:由原始数据的散点图可看出样本资料有直线趋势,如下图。
200190180170160增 量y150140130120110100600650700750800进食量x8509009501000
(1)回归系数假设检验:
H0:β=0,即进食量与增重之间无直线关系 H1:β≠0,即进食量与增重之间有直线关系
利用regress函数,得到b=[-47.353, 0.261],其置信区间分别为[-173.627, 78.921]和[0.102, 0.42],对应的P值为0.007<0.05,说明拒绝H0,回归模型成立。 观查残差分布,可发现有不包含零点的异常点存在(第1号点,(800,185)),为提高回归模型的准确性,应将此异常点剔除后重新估计回归参数。
12
第2章 MATLAB应用基础
Residual Case Order Plot40302010Residuals0-10-20-30-4012345Case Number678
(2)删除异常点后重新进行回归分析并进行残差分析,可以看到残差分布无异常点。 对应的P值为0.0027<0.05,说明拒绝H0,回归模型成立。回归方程为:
y=-46.298+0.255x, 回归系数的95%置信区间分别为:[-140.78, 48.18]]和[0.136,0.375]。
回归曲线结果如图:
x-y散点图及其拟合直线240220200180增 量y160140120100650700750800进食量x850900950
13
生物医学数据分析及其MATLAB应用
(3)当进食量为900g时,大白鼠的体重平均增加183.6g,其95%的可信区间为
[170.935,196.265],表示当进食量为900g时,,相应的平均增重服从一个正态分布,由样本得到的均值估计值为183.6g,如果从此正态分布中重复抽样100 次,这100 个可信区间中理论上将有95 个区间包含真正的总体均数。
(4)当进食量为900g时,个体Y值的95%置信区间为[154.048,213.153],表示在估计总体中,进食量为900g 时,有95%的大白鼠增加体重在154.048~213.153g 范围内。 详细程序代码见assign38.m
9.观测细菌繁殖过程,已知不同时刻细菌数目如下,试用Logistic曲线对其进行拟合: t=[1,2,3,4,5,6,7,8]
Pop=[5.19,5.30,5.60,5.82,6.00,6.06,6.45,6.95] 注:Logistic曲线的一般形式为y(t)?a1?bect
答:从如下t~pop的散点图中可以看出,可用Logistic曲线进行拟合。可利用nlinfit函数来确定拟合曲线的参数。
76.86.66.46.2pop65.85.65.45.251234t5678
拟合结果为:a=3467.9,b=702.6489,c=-0.0399。 详细程序代码见assign39.m
第四章
1.主成分分析的目的是什么?
14
第2章 MATLAB应用基础
答:删除原有变量之间的冗余信息,达到数据降维的目的。
2.利用例4.3中的数据文件15boysdata,不要使用MATLAB的princomp函数进行主成分分析,而是自己编程采用对协方差矩阵进行特征根分解的方法进行主成分分析,比较二者的结果是否相同。
答:二者结果相同(方向相反),自编程序如下(assign42.m): load 15boysdata; %%%利用现成函数
[pc,SCORE,latent]=princomp(X);%%%主成分分析 %%%%自编代码
X0=X-repmat(mean(X),size(X,1),1);%%去均值 C=cov(X0);%%协方差阵
[eigV,eigR]=svd(C); %%%特征根和特征向量分解
mylatent=diag(eigR); mypc=eigV;
myScore=X0*(mypc);
3.解释PCA中特征值、特征向量(载荷轴)、主成分得分的含义。
答:在PCA中,特征值表征了数据在各个主成分方向上分布的方差大小;特征向量(载荷轴)表征了各个主成分的方向;主成分得分表征原数据(去均值后)在主成分方向上的投影。
4.表4-8为某学校20名学生肺活量与有关变量的测量结果,试对其进行多元回归分析,并仔细分析。
答:参考【例4.1】,注意残差分析。
5.举例说明聚类分析和判别分析的联系和差异。
答:聚类分析是判别分析的基础,没有已分好的类别就无法进行判别分析。二者都希望能保证类内方差最小、类间方差最大。聚类分析不需要学习过程,是无监督的;判别分析需要学习样本,是有监督的。
6.在采用K-均值聚类时,每次运行程序后的分类结果一定相同吗?上机验证后回答,并解释原因。
答:不一定。因为每次初始的类别中心种子是随机生成的,所以分类结果不能保证每次都相同。另外与选择什么样的距离度量也有关系。
7.利用例4.3中的数据文件15boysdata,任选其中的10个样本进行聚类分析,确定最
15
生物医学数据分析及其MATLAB应用
佳类别,然后利用聚类结果对剩余的5个样本进行判别分析。(思考是否可以用到主成分分析。)
答:本题中原来的样本含6个指标,可以先采用主成分分析进行降维处理,从各主成分的累积贡献率来看,前三个主成分已经包含了原始信息的95%,因此数据可降维到3个新的指标,计算原数据在这三个新方向上的投影(得分)后进行分层聚类,得到2、3、7、10四个样本为一类,另外四个为一类,获得类别样本后,对后五个待分类判别样本首先进行在主成分方向上投影后进行判别分析。程序如下(assign47.m): load 15boysdata; X1=X(1:10,:);
%%%选取主成分,实现降维
[pc,SCORE,latent]=princomp(X1);%%%主成分分析 pp=cumsum(latent)./sum(latent)%%累积贡献率 figure,plot(latent,'o-'),title('特征根变化')
%%%降维后分类
X2=SCORE(:,[1:3]);
Y=pdist(X2,'mahalanobis'); Z=linkage(Y,'ward'); c=cophenet(Z,Y)
ge=cluster(Z,'maxclust',2); figure,dendrogram(Z) j1=find(ge==1); j2=find(ge==2);
figure,plot3(X2(j1,1),X2(j1,2),X2(j1,3),'*',X2(j2,1),X2(j2,2),X2(j2,3),'o')
%%%判别分析
X3=X(11:end,:);
XX=(X3-repmat(mean(X3),5,1))*pc; X4=XX(:,[1:3]);
[class,err]=classify(X4,X2,ge)
%%%assign47.m
9.对例4.6,如何通过迭代尝试的方法来确定正确的分类数?重新编写程序来完成正确的聚类。
答:当采用k均值聚类时,可用silhouette函数的返回值来判断聚类的效果,总体上希
16