MATLAB 多元数据统计分析

时间:2021-09-30 01:45:34

身体指标化验数据为四元数据,即指标x=(脂蛋白x1,甘油三脂x2,a蛋白x3,b蛋白x4),一系列病人的身体化验数据构成了四元总体。

问题1:检验数据是否服从正态分布。

分析:P-P图或者Q-Q图,如果数据均匀分布在y=x直线两侧,则认为服从正态分布

代码如下:

%导入数据,命名为y矩阵,n行4列,n是病人数,4代码四元数据
p=4;%四元数据
s=cov(y);
bar=mean(y);
D=[];
pt=[];
for i=1:20
  %tmp=[x(i,1),x(i,2),x(i,3),x(i,4)]';
  D(i)=(y(i,:)-bar)*inv(s)*(y(i,:)-bar)';
  %pt=(i-0.5)/20;
  %chi(i)=chi2inv(pt,p);
end
D=sort(D);
%%%%%%%%pp图%%%%%%%%%%%
pt=((1:20)-0.5)/20;
H=chi2cdf(D,p)
plot(pt,H,'o');
hold on
i=0:0.05:1;
plot(i,i)
title('P-P图')
%%%%%%%%%%%%%%qq图%%%%%%
figure
chi=[];
chi=chi2inv(pt,p);%卡方分布函数的逆函数
plot(D,chi,'o');
hold on
i=0:12;
plot(i,i),title('Q-Q图')
问题2:假设病人分为三组,分别为20-35岁女性、20-25岁男性,35-50岁男性,检验这三组指标有无显著性差异

(key:三个总体均值的比较,原假设是没有显著差异)

代码如下:

%三组指标均值的比较,有无显著差异,60*4的矩阵x,1-20行是总体1,21-40行是总体2,41-60行是总体3
n=60;%共60个病人数据
bar=mean(x)';
T=(n-1)*cov(x);
y1=x(1:20,:);y2=x(21:40,:);y3=x(41:60,:);%三个分总体
a1=(20-1)*cov(y1);
a2=(20-1)*cov(y2);
a3=(20-1)*cov(y3);
A=a1+a2+a3;
gama=det(A)/det(T);
f=(54/4)*(1-sqrt(gama))/sqrt(gama)
k=3;
pval=1-fcdf(f,2*p,2*(n-p+1-k))
if pval<0.05
     disp('拒绝原假设,有显著差异')
else
    disp('接受原假设')
end
问题3:比较三个组的协方差矩阵有无显著差异

分析:原假设是没有显著差异

代码如下:

y1=x(1:20,:);y2=x(21:40,:);y3=x(41:60,:);%三个分总体
p=4;k=3;n=60;%p代表四元总体,k表示三个总体
s1=cov(y1);s2=cov(y2);s3=cov(y3);
d=(2*p^2+3*p-1)*(k-1)/(6*(p+1)*(n-k));
f=(1/2)*(p+1)*(k-1)*p;
part1=(n-k)*log(det(A./(n-k)));
S=[log(det(s1)),log(det(s2)),log(det(s3))];
part2=sum(19*S);
M=part1-part2
kesai=(1-d)*M;
p_val=1-chi2cdf(kesai,f)
if p_val<0.05
   disp('拒绝原假设')
else
    disp('接受原假设')
end   

问题4:比较总体1和2之间的指标有无差异

根据问题2得,总体1和2之间的协方差没有差异,所以选择F统计量

代码如下:

y1=x(1:20,:);y2=x(21:40,:);y3=x(41:60,:);%三个分总体
%检验y1,y2
n=20;m=20;p=4;
bar1=mean(y1)';bar2=mean(y2)';
A1=cov(y1)*19;A2=cov(y2)*19;
D2=(n+m-2)*(bar1-bar2)'*inv(A1+A2)*(bar1-bar2);
T2=n*m*D2/(n+m);
F=(n+m-p-1)*T2/((n+m-2)*p);%F统计量
p=1-fcdf(F,p,n+m-p-1);%p值
if p_val<0.05
   disp('拒绝原假设,有显著差异')
else
    disp('接受原假设,无差异')
end