四、表3.9的图形表示方法 1、轮廓图(图21) 先建立轮廓图函数(函数名:outline.R) outline<-function(x, txt=TRUE){ # x is a matrix or data frame of data if (is.data.frame(x)==TRUE) x<-as.matrix(x) m<-nrow(x); n<-ncol(x) plot(c(1,n), c(min(x),max(x)), type=\ main=\ xlab=\ for(i in 1:m){ lines(x[i,], col=i) if (txt==TRUE){ k<-dimnames(x)[[1]][i] text(1+(i-1)%%n, x[i,1+(i-1)%%n], k) } } } 表3.9轮廓图的源代码为 source(\source(\outline(df) 图21
15 2、星图(图22) 表3.9星图的程序代码: source(\stars(df) 图22 分析: 星图中水平轴的变量X1,沿着逆时针方向,依次是X2,X3....,由于星图既是像雷达屏上看到的图像,也像一个蜘蛛网,因此也称为雷达图和蜘蛛图。从图上可以看出:16号学生身体最好,7号学生身体最差。 16
2、调和曲线图(图23) 先建立调和曲线函数图(函数名:unison.R) unison<-function(x){ # x is a matrix or data frame of data if (is.data.frame(x)==TRUE) x<-as.matrix(x) t<-seq(-pi, pi, pi/30) m<-nrow(x); n<-ncol(x) f<-array(0, c(m,length(t))) for(i in 1:m){ f[i,]<-x[i,1]/sqrt(2) for( j in 2:n){ if (j%%2==0) f[i,]<-f[i,]+x[i,j]*sin(j/2*t) else f[i,]<-f[i,]+x[i,j]*cos(j%/%2*t) } } plot(c(-pi,pi), c(min(f),max(f)), type=\ main=\ xlab=\ for(i in 1:m) lines(t, f[i,] , col=i) } 调和曲线图源代码为: source(%unison(df) #表3.9的调和曲线图 17 图23 实验结果与讨论: 通过绘制统计图,编制统计表,计算统计量,运用R软件中的函数对表3.9数据的进行描述性分析;这样做直观简洁,本文用到的函数有:函数hist()作样本直方图,核密度估计函数density(),它与直方图相配,经验分布函数ecdf(),茎叶图函数stem(),箱线图函数boxplot(),五数总括函数fivenum(),在R软件的绘图命令中,用plot()函数实现绘制散点图,在对表3.9中数据作多元数据分析时,用mean()函数、cov()函数、和cor()函数计算样本均值、协方差和相关矩阵,用函数cor.test()作两两分量的相关性检验。最后对数据做出轮廓图和调和曲线图,但这种方法尚未成熟,在这里只作出结果,并未进行分析。 在R软件中,计算多元样本的均值与方差的命令基本上与二元变量的命令相同,只是有些地方略有改动。计算多元数据的均值与方差采用数据框的结构输入数据,在计算中比较方便。当样本个数较大时,样本相关,总体也相关。但个数较少时,无法得到相应的结论。轮廓图可以很直观的看出那些学生年龄、身高、体重相似;对于各个变量而言,也可以直观的看出各个学生的身体一个分散与聚集的程度。星图中水平轴的变量X1,沿着逆时针方向,依次是X2,X3....,由于星图既是像雷达屏上看到的图像,也像一个蜘蛛网,因此也称为雷达图和蜘蛛图,因此星图可以看出那些学生的身体状况好,哪些的差。 Plot还可以作回归诊断图等,boxplot()函数作两样本的均值检验,考察两样本的均值是否相同。 指导教师意见: 签名: 年 月 日
18