1、一、数值变量的统计描述在 R 中没有一个直接的统计描述命令,可以把常见的指标都一起算出来。如概述中所说,R 往往是提供一些比较基础的统计命令,需要使用者自己编程组合。1、 算术均数:mean(x)例如:c(12,13,14)-xmean(x)将输出 x 的均数 13。2、 中位数:median(x)3、 几何均数:我没有找到计算几何均数的命令,但可以通过对数函数来算几何均数。例如:log(x,10)-y 将 x 取自然对数mean(y)-z 计算 y 的算术平均数10z 将 z 取反对数,即得 x 的几何平均数4、 极差:max(x)-min(x)5、 样本方差:var(x)6、 样本标准差:
2、sd(x)请注意都是“样本”。7、 变异系数:(sd(x)/mean(x)*100通过以上命令和程序,可以求出想要的描述指标。 二、分类变量的统计描述1、 table(x) 该命令可以输出变量中各个值的绝对频数。2、 table(x/sum(x) 可输出相对数的频数。这个方法一般,还要把频数*百分比,不过我没有找到更好的方法。3、 table(x,y) 可输出绝对频数的交叉表分类资料的描述,我还没有找到较好的命令。如有人知道,请指教。三、正态性检验可采用 Shapiro-Wilk 检验。程序如下:library(ctest)先加载 ctest 模块,许多检验方法都在此模块中。shapiro.t
3、est(x)可对 x 进行正态性检验。 四、方差齐性检验程序如下:var.test(x,y)可对 x 和 y 进行方差齐性检验。 五、统计图制作R 是统计制图的高手。1、 直方图:hist例如:rnorm(1000)-gg产生样本量为 1000的正态样本hist(gg)制图结果如下:2、 饼图:pie例如:c(1,2,2,5)-x赋值yxc(6,5,4,8,7,4,6,5,8,4,7,1,4,5)-yplot(x,y)结果如下:4、 箱式图:boxplot例如:rnorm(10)-xboxplot(x)结果如下:R 的制图功能非常强大,是 R 的亮点之一。一、变量数据直接输入1、数值变量如果有
4、一个变量,变量名为 x,其数据如下:12,15,46,23,15。命令语句如下:xx其中:x 为变量名;为赋值符;c( )为向量建立函数,表示把括号中的数据建立为一个向量。以上命令语句建立了一个数值变量 x。2、字符变量字符变量的建立与数值变量一致。字符串使用引号(单、双均可),如:yy将建立字符变量 y。3、逻辑变量逻辑变量中的元素是:TRUE(或简写为 T)、FALSE(F)、NA(表示缺省)。请注意必须都是大写。逻辑变量可以直接输入,如:ztest便把数据集读入,并命名为 test。注:文件的后缀不必一定要.txt,关键文件要为纯文本,里面不能有特殊格式符。如果数据文件中没有第一列记录序
5、号,如:Price Floor Area Rooms Age Cent.heat52.00 111.0 830 5 6.2 no54.75 128.0 710 5 7.5 no57.50 101.0 1000 5 4.2 no57.50 131.0 690 6 8.8 no59.75 93.0 900 5 1.9 yes则命令语句为:read.table(“c:/test.txt”, header=TRUE)-test系统根据每个变量第一个值的类型,自动识别变量类型,如以上数据集中,除最后一个“Cent.hear”是字符变量,其他均为数值变量。2、 读入其他格式的数据库要读入其他格式数据库,必
6、须先安装“foreign”模块。它不属于 R 的 8 个内在模块,需要在使用前安装。安装方法很简便,只需键入命令:library(foreign)即可。Epi info:R 可读入 epi5 和 6 的数据库。命令如下:read.epiinfo(“文件名.rec”)即可。要给数据集一个名字,则是:read.epiinfo(“文件名.rec”)-名称例如:read.epiinfo(“d:/ttt.rec”)-tttStata:R 可读入 Stata5,6,7 的数据库。命令如下:read.dta(“文件名.dta”)SAS:对于 SAS,R 只能读入 SAS Transport format(X
7、PORT)文件。所以需要把普通的 SAS 数据文件(.ssd 和.sas7bdat )转换为 Transport format(XPORT)文件,再用命令:read.xport( )SPSS:read.spss( )可读入 SPSS 数据文件。读入数据文件后,使用 数据集名$变量名 ,可使用各个变量。如:mean(ttt$age)便是计算数据集 ttt 中的变量 age 的均数。一、T 检验1、 样本均数与总体均数的假设检验例如:样本如下:12,15,32,12,15,16,28,56,42总体均数为:20程序如下:c(12,15 ,32,12,15,16,28,56,42)-x 建立变量 x
8、t.test(x,mu=20,alternative=”two.sided”, conf.level=0.95) T 检验注:以上程序中,x 为数据变量;mu=20 为总体均数;alternative=”two.sided”表示行双侧检验,如果 alternative=”less”,为 的单侧检验,反之,alternative=”greater”,为 的单侧检验;conf.level=0.95 指检验水准为 0.05。以上程序结果如下:One Sample t-testdata: x t = 1.0312, df = 8, p-value = 0.3326alternative hypothe
9、sis: true mean is not equal to 20 95 percent confidence interval:13.40659 37.26008 sample estimates:mean of x 25.33333输出假设检验结果、备择假设、总体均数 95可信区间和样本均数。2、 配对资料 T 检验注:以下都假设 ctest 模块已经加载。如资料如下:甲:11,16,35,24,16,32,16,24乙:13,21,23,16,24,15,32,16程序如下:c(11,16,35,24,16,32,16,24)-xc(13,21,23,16,24,15,32,16)-yt
10、.test(x,y,alternative=”two.sided”,paired=TRUE, conf.level=0.95)结果如下:Paired t-testdata: x and y t = 0.4401, df = 7, p-value = 0.6731alternative hypothesis: true difference in means is not equal to 0 95 percent confidence interval:-7.652913 11.152913 sample estimates:mean of the differences 1.75输出假设检验
11、结果、备择假设、两样本差值均数的可信区间和两样本差值的均数。3、 两样本成组设计的 T 检验3.1 如两样本资料如下:甲:15,12,15,13,22,26,12,14乙:23,15,24,23,16,25程序如下:c(15,12,15,13,22,26,12,14)-xc(23,15,24,23,16,25)-yvar.test(x,y)方差齐性检验t.test(x,y,alternative=”two.sided”,paired=FALSE,var.equal=TRUE,conf.level=0.95)结果如下:F test to compare two variancesdata: x
12、and y F = 1.3896, num df = 7, denom df = 5, p-value = 0.7414alternative hypothesis: true ratio of variances is not equal to 1 95 percent confidence interval:0.2027743 7.3445113 sample estimates:ratio of variances 1.389628方差齐性检验结果为两样本方差齐性,所以在下面 T 检验中 var.equal=TURE。Two Sample t-testdata: x and y t =
13、-1.8792, df = 12, p-value = 0.08471alternative hypothesis: true difference in means is not equal to 0 95 percent confidence interval:-10.5271616 0.7771616 sample estimates:mean of x mean of y 16.125 21.000T 检验结果相信大家都能看懂了。3.2 如果数据是如下输入的:x 15,12,15,13,22,26,12,14,23,15,24,23,16,25group 1, 1, 1, 1, 1,
14、1, 1, 1, 2, 2, 2, 2, 2, 2则程序如下:c(15,12 ,15,13,22,26,12,14,23,15,24,23, 16,25)-xc(1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2)-groupt.test(xgroup=1,xgroup=2,)二、秩和检验(使用 wilcox.test 方法)1、 单变量秩和检验样本资料如下:15,12,14,32,12,15,11。已知总体均数为 20。程序如下:c(15,12,14,32,12,15,11)-xwilcox.test(x,mu=20,alternative=”two.sided
15、”, conf.level = 0.95)结果如下:Wilcoxon signed rank test with continuity correctiondata: x V = 7, p-value = 0.2702alternative hypothesis: true mu is not equal to 20输出 p 值为 0.2702。2、 配对设计资料的秩和检验资料如下:甲:12,14,15,12,21,31,26,21乙:21,32,15,21,12,14,12,15程序如下:c(12,14,15,12,21,31,26,21)-xc(21,32,15,21,12,14,12,1
16、5)-ywilcox.test(x,y,paired=TRUE, conf.level = 0.95)结果如下:Wilcoxon signed rank test with continuity correctiondata: x and y V = 15, p-value = 0.9322alternative hypothesis: true mu is not equal to 03、 成组设计资料的秩和检验如资料同上,非配对设计:甲:12,14,15,12,21,31,26,21乙:21,32,15,21,12,14,12,15程序如下:c(12,14,15,12,21,31,26,2
17、1)-xc(21,32,15,21,12,14,12,15)-ywilcox.test(x,y,paired=FALSE, conf.level = 0.95)结果如下:Wilcoxon rank sum test with continuity correctiondata: x and y W = 34.5, p-value = 0.8305alternative hypothesis: true mu is not equal to 0T 检验、秩和检验小结:T 检验、秩和检验的参数格式大致是一样的。t.test ,wilcox.test(x,(y), alternative = (“t
18、wo.sided“, “less“, “greater“),mu = , paired = (FALSE,TRUE), conf.level = 0.95)可以只有一个变量 x,也可以有两个,alternative 指定双侧还是单侧检验,mu 指定总体均数,paired 指定是否配对,conf.level 指定检验水准。 三、方差分析1、 完全随机设计资料的方差分析如资料如下:A 12,15,21,31,21,15B 21,22,15,15,21C 24,15,12,15,32,15,12程序如下:c(12,15,21,31,21,15,21,22,15,15,21,24,15,12,15,3
19、2,15,12)-xfactor(c(rep(1,6),rep(2,5),rep(3,7)-group建立分组变量 groupanova(lm(xgroup)方差分析注:rep(1,6)函数表示:将 1 重复 6 次。factor()函数则是表明 group 是一个分组变量lm(xgroup)表示建立 x 为因变量,group 为自变量的线性模型anova(lm(xgroup)表示将线性模型中的方差表输出。结果如下:Analysis of Variance TableResponse: yDf Sum Sq Mean Sq F value Pr(F)gr 2 14365.5 7182.8 1.
20、8869 0.2132Residuals 8 30453.2 3806.7 输出方差分析结果和残差结果。2、 配伍组设计资料的方差分析资料如下:A B C Dgroup1 5.27 5.27 4.94 4.61 2 5.27 5.22 4.88 4.66 3 5.88 5.83 5.38 5.00 4 5.44 5.38 5.27 5.005 5.66 5.44 5.38 4.88 6 6.22 6.22 5.61 5.22 7 5.83 5.72 5.38 4.88 8 5.27 5.11 5.00 4.44程序如下:xF) g1 3 2.90438 0.96812 77.310 1.632
21、e-11 *g2 7 2.49800 0.35686 28.497 2.379e-09 *Residuals 21 0.26297 0.01252 输出了 g1、g2 的方差分析结果。 四、卡方检验(使用 chisq.test 方法)如资料如下:A B甲 15 12乙 23 12丙 24 21程序如下:matrix(c(15,23,24,12,12,21),nc=2)-x 建立两维表 nc 指列数chisq.test(x,correct=TRUE) correct 表示是否矫正结果如下:Pearsons Chi-squared testdata: x X-squared = 1.3229, d
22、f = 2, p-value = 0.5161 五、线性回归(采用 lm()函数)1、如资料如下:x 820,780,720,867,690,787,934,679,639,820y 165,158,130,180,134,167,186,145,120,158对 y,x 做线性相关回归分析,程序如下:c(820,780,720,867,690,787,934,679,639,820)-xc(165,158,130,180,134,167,186,145,120,158)-yplot(x,y)画 x,y 的散点图lm(yx)-rr做相关回归分析,结果存在 rr 中summary(rr)全部显示
23、 rr 内容输出结果如下:首先是散点图:summary(rr)输出结果:Call:lm(formula = y x)Residuals:Min 1Q Median 3Q Max -12.4065 -4.2977 -0.6728 4.3013 11.6912 Coefficients:Estimate Std. Error t value Pr(|t|) (Intercept) -17.3575 22.2644 -0.780 0.458 x 0.2219 0.0286 7.759 5.44e-05 *-Signif. codes: 0 * 0.001 * 0.01 * 0.05 . 0.1 1
24、Residual standard error: 7.879 on 8 degrees of freedomMultiple R-Squared: 0.8827, Adjusted R-squared: 0.868 F-statistic: 60.2 on 1 and 8 DF, p-value: 5.44e-05可见输出了残差情况、截距、x 的系数及假设检验结果、决定系数(R-Squared)和方差分析结果(最后一行)。2、如果资料是已经输入在一个数据集中的,那么分析方法如下。如上资料,设已经输入在一个数据集 dd 中:程序如下:lm(yx,data=dd)-rrsummary(rr)3、多
25、元回归分析中的方程式表达方程式:yx 表示 x 为自变量方程式:yx+z 表示 x,z 为自变量,探讨的是 x,z 的主效应方程式:yx+z+x:z 表示探讨 x,z 的主效应及其交互作用方程式:yx*z 意义同 x+z+x:z方程式:y(x+z+m)2 表示 x+z+m+x:z+x:m+z:m(n 表示包含所有 n 阶以下的交互作用 )方程式:yx%in%z 表示 x 包含在 z 中,即等同于 z+z:x方程式;y(x+z+m)2-x:z 表示从(x+z+m)2 中去掉 x:z以上方法也适用于其他一些多元分析方法。作者:陶立波一、R 的常用函数(一)、数据操作函数(二)、常用统计函数(三)、
26、制图函数二、R 的程序编制(一)、R 程序中的控制结构(二)、自定义函数R 是一个以函数为核心的统计软件。在 R 中,所有的功能几乎都是以函数的形式提供的。各种数据操纵、统计处理,都表现为:函数名:(参数 1,参数 2,)的形式。而通过编制自己的函数,便可以方便的扩展 R 的功能。 一、R 的常用函数(一)、数据操作函数1、c( )此函数用于建立向量(vector)。如:c(1,5,32,2) 建立向量 (1,5,32,2)c(21,5:8) 建立向量(21,5,6,7,8,)。5:8 表示 5 至 8。c(“dte”,”eri”,sdi”) 建立字符串向量(“dte”,”eri”,sdi”)
27、 。c()-x 表示建立一个向量,其名称为 x;也可以理解为把一个向量赋值给变量 x。2、rep( )重复函数。rep(1,5)表示把 1 重复 5 次。如:c(rep(2,4),3,2) 表示建立向量(2,2,2,2,3,2)。3、matrix( )此函数用于建立矩阵。如:matrix(c(1,2,3,5,4,6),nc=2) 将建立 3*2 的矩阵,其中 nc=2 指列数为 2。结果如下: ,1 ,21, 1 52, 2 43, 3 64、data.frame( )此函数用于建立数据集。例如:程序如下:c(12,15,14,12)-xc(“bb”,”cc”,”dd”,”ee”)-yc(0,
28、0,1,1)-group已经建立了 3 个变量:x,y,groupdata.frame(x,y,group)将建立如下数据集:5、scan( )在数据较多的时候,用 c( )函数不太方便。此时,可用 scan( )函数。如:scan()-x12 15 23 15 12 14 12 14 12 54 12 .便可把下面的数据输入 x 变量中,数据块可以任意长度、在任意地方回车另起一行,数据之间以空格相互分隔。6、read.?( )这是一组读入其他格式数据文件的函数。常用的有:read.epiinfo(读入 epi info 数据文件)、read.dta (读入 stata 数据文件)等。如:re
29、ad.epiinfo(“d:/test.rec”)-x 便读入 test.rec 文件,并命名为 x。需要注意的是,在使用这些读入函数前,必须先加载 foreign 模块,因为这些数据读入函数不在缺省的模块中。加载 foreign 模块的命令是 library(foreign)。7、attch( ) 和 detach( )指定和撤销可用数据集。如:attch(dd)这样,在以后程序中,便可以直接应用 dd 中的变量。detach( )则相反。 (二)、常用统计函数1、t.test( )用于对一个或两个样本做 T 检验。格式:t.test(x, y ,alternative = c(“two.s
30、ided“, “less“, “greater“), mu = ?,paired = (FALSE,TRUE), var.equal = (FALSE,TRUE), conf.level = .)2、wilcox.test( )用于对一个或两个样本做 wilcoxon 秩和检验。格式:wilcox.test(x, y ,alternative = c(“two.sided“, “less“, “greater“), mu = ?,paired = (FALSE,TRUE), conf.level = .)3、chisq.test( )格式:chisq.test(x,correct=(FALSE
31、,TRUE)注:x 是一个矩阵,可采用 matrix( )建立。格式 2:chisq.test(x,y,correct=)x,y 是两个变量,对其交叉表做卡方检验。4、lm( )用于线性回归分析。如:lm(yx)lm(yx,data=dd) 如果 y,x 在数据集 dd 中。以上具体内容,请见前面章节。 (三)、制图函数1、 plot(x,y)散点图。2、 hist(x)直方图。3、 boxplot(x)箱式图。等等。二、R 的程序编制(一)、R 程序中的控制结构1、 if else.结构语法:if ( 条件 ) 语句 1 else 语句 2如:x=2if (x2) z=1 else z=2语
32、句可以是多条语句,这时,需要用,语句之间用分号相隔。如:if (xxy=0for(x in 1:5) y=y+1得到:y 为 5。3、while 循环结构语法:while( 条件 ) 语句例:x6) break将得到:x 为 4,y 为 8。在语句中使用“next”语句,将停止当前循环,直接进入下一轮循环。例:x3) next;y=y+2将得到:x 为 5,y 为 6。因为当 x 大于 3 后,y 就不再累加了。 (二)、自定义函数创制自己的函数方法如下:函数名 a c(3.3, 3.4, 3.8) - b # Can also assign pointing right assign(“c“
33、, c(a, 4.0, b) # Or explicitly to a variable name c # Concatenation “flattens“ arguments1 3.1 4.2 2.7 4.1 4.0 3.3 3.4 3.8 1/c # Operate on each element of vector1 0.3225806 0.2380952 0.3703704 0.2439024 0.2500000 0.3030303 0.29411768 0.2631579 a * b # Cycle shorter vector “b“ (but warn)1 10.23 14.28
34、 10.26 13.53Warning message:longer object lengthis not a multiple of shorter object length in: a * b a+1 # “1“ is treated as vector length 11 4.1 5.2 3.7 5.1下面有关于 R 语法的注标(indexing) 、分割、可选参数以及其他内容的更多示例。R shell 提示符 尤其是如果您安装了 GNU readlines 是一个极好的用于研究的界面。工作时别忘记了通过 help(function) 命令来学习更多内容(您也可以使用 ?functi
35、on) 。Python shell 用户将发现 R shell 实在是很熟悉 而且将会高度评价两者的实用程序。 温度数据集近一年以来,Brad 一直在通过他房子里面以及附近的四个温度计来收集温度数据,并使用 GnuPlot(参阅 参考资料 以获得关于 Gnuplot 更多资料的链接)将不断变化的读数窗口自动编译为可以通过 Web 访问的图形。尽管此类 hackerish 的数据收集不能真正地用于任何主要的科学用途,但是,它拥有很多 类似于 科学数据的极好特性。 每三分钟收集一次数据,这样,一年中就会有非常多数据点(四个测量位置大约共有 750,000 个) 。由于温度计、传输通路或者进行记录的
36、计算机的各种失误,有一些数据会丢失。在较为少见的一些情况下,据了解,由于计时错误,会导致单线传输通路会发生同时读取的问题。换句话说,Brad 的温度数据看起来与 相当好 的实际科学数据很类似,但是还是有一些小问题,也并不是理想的。 读取数据 温度数据收集到四个以收集位置命名的独立数据文件中,每个的格式如下: 清单 2. 初始温度数据文件的格式2003 07 25 16 04 27.5000002003 07 25 16 07 27.3000002003 07 25 16 10 27.300000读取数据的第一个步骤可能是这样: 清单 3. 读取温度数据的第一个步骤 lab basement l
37、ivingroom outside l_range b_range v_range o_range global global # Temperature range across all sites1 -19.8 32.2整理数据 未经处理的初始数据格式有一些问题。一方面,没有显式地标明丢失的数据,而只是通过不存在的行和时间戳进行了简单的标记。另外,日期的存储格式也是不标准的(而不是 ISO8601/W3C) ,有内部的空格。有一个小问题,那就是四个文件中重复的时间戳浪费了空间。当然,我们可以在 R 本身中来整理数据,不过我们采取的是“R Data Import/Export”一文中 R 作
38、者的建议(参阅 参考资料 以获得链接) 。文本处理最好使用专门进行文本处理的语言来完成:在我们的例子中,我们编写了一个 Python 脚本来生成 R 直接可读的统一标准的数据文件。例如,新的数据文件 glarp.temps 的前几行是: 清单 4. 统一标准的温度数据格式timestamp basement lab livingroom outside2003-07-25T16:04 24.000000 NA 29.800000 27.5000002003-07-25T16:07 24.000000 NA 29.800000 27.3000002003-07-25T16:10 24.00000
39、0 NA 29.800000 27.300000让我们来使用改进的数据集: 清单 5. 使用统一标准的温度数据 glarp timestamps names(glarp) # What column names were detected?1 “timestamp“ “basement“ “lab“ “livingroom“ “outside“ class(glarp,basement) # Kind of data is in basement column?1 “numeric“ basement lab outside livingroom summary(glarp) # Handy
40、built-in to describe most R objectstimestamp basement lab livingroomLength:171349 Min. : 6.40 Min. : -6.40 Min. : 7.20Class :character 1st Qu.: 17.00 1st Qu.: 16.60 1st Qu.: 18.10Mode :character Median : 19.10 Median : 17.90 Median : 20.30Mean : 18.88 Mean : 18.12 Mean : 20.173rd Qu.: 20.50 3rd Qu.:
41、 19.50 3rd Qu.: 22.00Max. : 27.50 Max. : 25.50 Max. : 31.30NAs :1854.00 NAs :2406.00 NAs :1855.00outsideMin. : -19.8001st Qu.: 2.100Median : 9.800Mean : 9.5853rd Qu.: 17.000Max. : 32.200NAs :1858.000基本的统计分析我们已经看到 range() 函数: min() 和 max() 找到了一个数据范围的单独的极值。 summary() 显然也会显示这一信息,不过不直接用于其他计算中。首先让我们来寻找此数
42、据的另外一些非常基本的统计属性: 清单 6. 温度数据的基本统计计算 mean(basement) # Mean fails if we include unavailable data1 NA mean(basement, na.rm=TRUE)1 18.87542回页首 sd(basement, na.rm=TRUE) # Standard deviation must also exclude NA1 2.472855 cor(basement, livingroom, use=“all.obs“) # All observations: no goError in cor(baseme
43、nt, livingroom, use = “all.obs“) :missing observations in cov/cor cor(basement, livingroom, use=“complete.obs“)1 0.9513366 cor(outside, livingroom, use=“complete.obs“)1 0.6446673正如您直观上所期待的,两个室内温度的相关性比任意一个与室外温度的相关性更强。这也很容易验证。 温度的分布 您已经看到均值和标准偏差,直观上您可能会觉得温度是正态分布的。让我们来看看: 清单 7. 生成一个短线形式的直方图 hist(outsid
44、e)很多 R 命令都会弹出第二个窗口来显示数据集的 plot、chart 或者 diagram。由于平台和个人配置的不同,如何这样做的细节也不相同。您也可以将这些图形重定向到外部文件中以备后用。上面的 hist() 命令生成: 图 1. 室外温度的默认直方图第一次尝试很不错。有一些参数可以限制舍入界限: 清单 8. 改变直方图舍入密度hist(outside, breaks=1000, border=“blue“)图 2. 室外温度的稠密直方图注意,在稠密直方图中 7-12 度附近出现了偶然性的不平滑,有一些温度频率非常高,也有一些频率出人意料地低。我们相信,这些非常明显的不连续表明存在取样偏
45、差,也许要归因于工具特性。另一方面,在 24 度附近有一个非常高而且窄的突起 恰好是在室内温度自动调节区域附近 可能是我们前面提到度量变换的结果,与工具传输通路有关。无论如何,这个图中包含有一些有趣的内容,值得去研究和分析。 两个更为生动的变化展示出室内温度的分布: 清单 9. 起居室温度直方图 hist(livingroom, breaks=40, col=“blue“, border=“red“) hist(livingroom, breaks=400, border=“red“)图 3. 起居室温度的 40-级 直方图图 4. 起居室温度的 400-级 直方图起居室温度分布看起来更合理。
46、在高解析度的图中出现了一些不连续,似乎是小规模工具取样的原因。不过,总体上的模式遵循了我们所期望三峰分布,这种分布基于 Brad 的计时器控制的自动调温器(高峰值在 21 附近,稍低的峰值在 16 和 24 度附近) 。 数据可视化进阶每一个测量位置是温度值的一个线性向量。不过,直观地讲,我们会期望数据中有两个主要的循环:每天和每年的(晚上和冬天冷) 。 我们的第一个问题是将一维数据向量转化为数据点的二维矩阵。然后,我们将可视化这个二维数据集: 清单 10. 重构向量并绘制温度图 oarray dim(oarray) - c(480,356) # Re-dimension the vector 回页首