应用多元统计分析作业
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
多元统计分析实验报告实验课程名称多元统计分析
实验项目名称多元统计理论的计算机实现年级 2013
专业应用统计学
学生姓名侯杰
成绩
理学院
实验时间:2015 年05 月07 日
学生所在学院:理学院专业:应用统计学班级:9131137001
代码及运行结果分析
1、均值检验
问题重述:某医生观察了16名正常人的24小时动态心电图,分析出早晨3小时各小时的低频心电频谱值(LF)、高频心电频谱值(HF),数据见压缩包,试分析这两个指标的各次重复测定均值向量是否有显著差异。
代码如下:
Tsq.test<-function(data,alpha=0.05){
data<-as.matrix(read.table("ch37.csv",header=TRUE,sep=",")) #读取数据
xdat<-data[,2:4];
xbar<-apply(xdat,2,mean); #计算LF指标的均值
ydat<-data[,5:7];
ybar<-apply(ydat,2,mean); #计算HF指标数据
xcov<-cov(xdat); #计算LF样本协差阵
ycov<-cov(ydat); #计算HF样本协差阵
sinv<-solve(xcov+ycov);#求逆矩阵
Tsq<-(16+16-2)*t(sqrt(16*16/(16+16)*(xbar-ybar)))%*%sinv%*%sqrt(16*16/(16+16)*(xbar-ybar)); #计算T统计量
Fstat<-((16+16-2)-3+1)/((16+16-2)*3)*Tsq; #计算F统计量
pvalue<-as.numeric(1-pf(Fstat,3,16+16-3-1));
cat("p值=",pvalue,"\n");
if(pvalue>0.05) #结果输出
cat('均值向量不存在差异')
else
cat('均值向量存在差异');
}
运行结果及分析:
通过运行程序,我们可以得到如下结果:
> Tsq.test()
p值= 1.632028e-14
均值向量存在差异
即LF与HF这两个指标的各次重复测定均值向量存在显著差异。
2、判别分析
问题重述:银行的贷款部门需要判别每个客户的信用好坏(是否未履行还贷责任),以决定
是否给予贷款。可以根据贷款申请人的年龄()、受教育程度()、现在所从事工作的年数()、未变更住址的年数()、收入()、负债收入比例()、信用卡债务()、其它债务()等来判断其信用情况。数据见压缩包。⑴根据样本资料分别用距离判别法、Bayes判别法和Fisher判别法建立判别函数和判别规则。⑵某客户的如上情况资料为(53,1,9,18,50,11.20,2.02,3.58),对其进行信用好坏的判别。
代码如下:
#距离判别法
discrim.dist<-function(x){
data<-read.csv("ch49.csv",header=T,sep=","); #读取数据
G1<-data[1:5,];
G2<-data[6:10,];
u1<-apply(G1,2,mean); #计算信用好的样本数据均值
u2<-apply(G2,2,mean); #计算信用不好的样本数据均值
s1<-cov(G1);
s2<-cov(G2);
s<-s1+s2;
xbar<-(u1+u2)/2;
alpha<-solve(s)%*%(u1-u2); #计算判别系数alpha
w<-t(alpha)%*%(x-xbar); #构造判别函数
if(w>=0) #结果输出
cat("该客户属于信用好的一类","\n")
else
cat("该客户属于信用坏的一类","\n")
}
#费希尔判别法
fisher.test<-function(x){
data<-read.csv("ch49.csv",header=T,sep=","); #读取数据
G1<-data[1:5,];
G2<-data[6:10,];
n1<-nrow(G1);
n2<-nrow(G2);
u1<-apply(G1,2,mean); #计算信用好的一组的数据均值
u2<-apply(G2,2,mean); #计算信用不好的一组的样本数据均值
s1<-cov(G1);
s2<-cov(G2);
E<-s1+s2;
B<-n1*n2*(u1-u2)%*%t(u1-u2)/(n1+n1);
alpha<-eigen(solve(E)%*%B);
vector<-alpha$vectors[,1]; #提取费希尔判别函数系数
d1<-abs(t(vector)%*%x-t(vector)%*%u1); #计算样本到第一组的费希尔判别函数值
d2<-abs(t(vector)%*%x-t(vector)%*%u2); #计算样本到第二组的费希尔判别函数值
if(d1 cat("该客户属于信用好的一类","\n") else cat("该客户属于信用坏的一类","\n") } 运行结果及分析: 注:由于在本题的情形下,距离判别与贝叶斯判别等价,故在此处仅选取距离判别进行编程。 距离判别的运行结果: > x<-c(53,1,9,18,50,11.20,2.02,3.58) > discrim.dist(x) 该客户属于信用好的一类 费希尔判别的运行结果: > x<-c(53,1,9,18,50,11.20,2.02,3.58) > fisher.test(x) 该客户属于信用好的一类 从上面的运行结果可以看出该客户属于信用好的一类,即已履行还贷责任。 3、聚类分析 问题重述:下表(数据见压缩包)是某年我国16个地区农民支出情况的抽样调查数据,每个地区调查了反映每人平均生活消费支出情况的六个经济指标。试使用系统聚类法和K均值法对这些地区进行聚类分析,并对结果进行分析比较。 代码如下: #系统聚类法 data<-read.csv("ch58.csv",header=T,sep=","); #读取数据 Cludata<-data[,2:7]; Dismatrix<-dist(Cludata,method="euclidean"); #计算样本间的欧几里得距离 Clu1<-hclust(d=Dismatrix,method="single"); #最短距离法 Clu2<-hclust(d=Dismatrix,method="complete"); #最长距离法 Clu3<-hclust(d=Dismatrix,method="centroid"); #重心法 Clu4<-hclust(d=Dismatrix,method="ward.D"); #离差平方和法 ###绘出四种方法情况下的谱系图和聚类情况 opar<-par(mfrow=c(2,2)); plot(Clu1,labels=data[,1]);re1<-rect.hclust(Clu1,k=5,border="red");box();