空间数据分析与R语言实践

S语言是由AT&T贝尔实验室开发的一种用来进行数据探索、统计分析、作图的解释型语言。它的丰富的数据类型(向量、数组、列表、对象等)特别有利于实现新的统计算法,其交互式运行方式及强大的图形及交互图形功能使得我们可以方便的探索数据。
目前S语言的实现版本主要是S-PLUS。它基于S语言,并由MathSoft公司的统计科学部进一步完善。作为统计学家及一般研究人员的通用方法工具箱,S-PLUS强调演示图形、探索性数据分析、统计方法、开发新统计工具的计算方法,以及可扩展性。
S-PLUS可以直接用来进行标准的统计分析得到所需结果,但是它的主要的特点是它可以交互地从各个方面去发现数据中的信息,并可以很容易地实现一个新的统计方法。
S-PLUS有微机版本和工作站版本,它是一个商业软件。Auckland大学的Robert Gentleman 和 Ross Ihaka 及其他志愿人员开发了一个R系统,其语法形式与S语言基本相同,但实现不同,两种语言的程序有一定的兼容性。R是一个GPL自由软件,现在的版本是 1.00版,它比S-PLUS 还少许多功能,但已经具有了很强的实用性。我们在这里尽量介绍S-PLUS和R都能使用的功能,且以R为主。下面我们用S统称S-PLUS和R。

参考资料:
1.S的基本界面是一个交互式命令窗口,命令提示符是一个大于号,命令的结果马上显示在命令下面。S命令主要有两种形式:表达式或赋值运算(用<-表示)。在命令提示符后键入一个表达式表示计算此表达式并显示结果。赋值运算把赋值号右边的值计算出来赋给左边的变量。可以用向上光标键来找回以前运行的命令再次运行或修改后再运行。
2.S是区分大小写的,所以x和X是不同的名字。
3.我们用一些例子来看S-PLUS的特点。假设我们已经进入了S-PLUS(或R)的交互式窗口。如果没有打开的图形窗口,在R中,用:
4.> x11()
5.在S-PLUS Windows版中用:
6.> win.graph()
7.可以打开一个作图窗口。然后,输入以下语句:
8.> x1 <- 0:100
9.> x2 <- x12pi/100
10.> y <- sin(x2)
11.> plot(x,y, type=‘l’)

R是用于统计分析、绘图的语言和操作环境。R是基于S语言的一个GNU项目,所以也可以当作S语言的一种实现,通常用S语言编写的代码都可以不作修改的在R环境下运行。R 是统计领域广泛使用的诞生于 1980年左右的 S 语言的一个分支。 S的主要设计者John M. Chambers 因为S语言方面的工作获得了1998年 ACM 软件系统奖(ACM Software Systems Award)。 R可以在多种平台下编译和运行,包括UNIX (也包括FreeBSD和Linux)、Windows和MacOS。该语言的语法表面上类似 C,但在语义上是函数设计语言的(functional programming language)的变种并且和Lisp 以及 APL有很强的兼容性。特别的是,它允许在“语言上计算”(computing on the language)。这使得它可以把表达式作为函数的输入参数,而这种做法对统计模拟和绘图非常有用。官方网站:http://www.r-project.org/

R是主要用于统计分析、绘图的语言和操作环境。R本来是由来自新西兰奥克兰大学的Ross Ihaka 和 Robert Gentleman 开发。(也因此称为 R )现在由"R开发核心团队"负责开发。R是基于S语言的一个GNU项目,所以也可以当作S语言的一种实现,通常用S语言编写的代码都可以不作修改的在R环境下运行。R的语法是来自Scheme。R的源代码可自由下载使用,亦有已编译的执行档版本可以下载,可在多种平台下运行,包括UNIX (也包括FreeBSD和Linux)、Windows和MacOS。R主要是以命令行操作,同时有人开发了几种图形用户界面。

R内建多种统计学及数字分析功能。R的功能也可以透过安装套件(Packages,用户撰写的功能)增强。因为S的血缘,R比其他统计学或数学专用的编程语言有更强的面向对象(面向对象程序设计)功能。R的另一强项是绘图功能,制图具有印刷的质素,也可加入数学符号。虽然R主要用于统计分析或者开发统计相关的软件,但也有人用作矩阵计算。其分析速度可比美GNU Octave甚至商业软件MATLAB。

R的功能能够透过由用户撰写的套件增强。增加的功能有特殊的统计技术、绘图功能,以及编程接口和数据输出/输入功能。这些软件包是由R语言、LaTeX、Java及最常用C语言和Fortran撰写。下载的执行档版本会连同一批核心功能的软件包,而根据CRAN纪录有过千种不同的软件包。其中有几款较为常用,例如用于经济计量、财经分析、人文科学研究以及人工智能。

CRAN为Comprehensive R Archive Network(R综合典藏网)的简称。它除了收藏了R的执行档下载版、源代码和说明文件,也收录了各种用户撰写的软件包。现时,全球有超过一百个CRAN镜像站。

参看
SPSS - 另一种统计分析软件
Stata - 另一种统计分析软件
SAS系统 - 另一种统计分析软件
S-PLUS - 同样建基于S语言的统计分析软件

希望越来越多的人喜欢R(http://www.r-project.org/),喜欢R语言中文论坛(http://rbbs.biosino.org/Rbbs/forums/list.page)。下面根据CRAN的介绍资料综述一下R分析空间数据的功能(http://cran.r-project.org/web/views/Spatial.html;http://r-spatial.sourceforge.net/;http://sal.uiuc.edu/csiss/Rgeo//),仅仅是翻译总结资料,有不对的地方请批评指正。

R分析空间数据(Spatial Data)的包主要包括两部分:
1)导入导出空间数据
2)分析空间数据

功能及函数包:
1)分类空间数据(Classes for spatial data):
包sp(http://cran.r-project.org/web/packages/sp/index.html)为不同类型的空间数据设计了不同的类,如:点(points),栅格(grids),线(lines),环(rings),多边形(polygons)。另外sp提供总结数据,获取坐标等功能;提供画图函数,并且允许在图上添加空间元素(spatial elements)和参考元素(reference elements),如:比例尺(scale bar),指北针(north arrows)等。现在很多包都利用了sp包中的类,如:rgdal,maptools。
2)处理空间数据(Handling spatial data):
spsurvey包提供做概率抽样的函数(http://cran.r-project.org/web/packages/spsurvey/index.html);trip包扩展sp包的类,针对动物跟踪数据(http://cran.r-project.org/web/packages/trip/index.html);hdeco包用等级分解熵比较类型地图(categorical map)(http://cran.r-project.org/web/packages/hdeco/index.html);GeoXp包允许交互式的分析空间数据(http://cran.r-project.org/web/packages/GeoXp/index.html)。
3)读写空间数据(Reading and writing spatial data):
图像有向量式绘图和光栅式两种。Rgdal可以读入和导出GDAL支持的光栅式格式(http://www.gdal.org/)和OGR(http://www.gdal.org/ogr/)支持的向量格式(http://cran.r-project.org/web/packages/rgdal/index.html)。ncdf包用来处理NetCDF文件(http://cran.r-project.org/web/packages/ncdf/index.html);maps包可连接一些地理学数据库并展示地理图(http://cran.r-project.org/web/packages/maps/index.html);RArcInfo 包可读取ArcInfo v.7二进制文件和*.e00文件(project.org/web/packages/RArcInfo/index.html);maptools 包管理和读入地理数据,也为PBSmapping包、spatsta包和sp类提供接口函数(http://cran.r-project.org/web/packages/maptools/index.html),还可以通到GSHHS 数据库;classInt包为专题地图制图选择单变量的类间距(http://cran.r-project.org/web/packages/classInt/index.html);gmt包提供R和GMT 绘图软件的接口(http://cran.r-project.org/web/packages/gmt/index.html)。
4)点格局分析(Point pattern analysis):
spatstat包做空间点分布型态(Spatial Point Patterns)分析,长处在于模型拟合和仿真(http://cran.r-project.org/web/packages/spatstat/index.html);spatgraphs包提供点格局的可视化图形(http://cran.r-project.org/web/packages/spatgraphs/index.html);splancs包允许分析多边形区域,包括很多种方法,如: 2维核密度(http://cran.r-project.org/web/packages/splancs/index.html);ecespa包提供书"Introduccion al Analisis Espacial de Datos en Ecologia y Ciencias Ambientales: Metodos y Aplicaciones"里用的点格局分析函数和数据(http://cran.r-project.org/web/packages/ecespa/index.html);aspace包计算空间中心统计(centrographic satistics)和最小凸多边形(http://cran.r-project.org/web/packages/aspace/index.html);spatialkernel包做多元数据的非参核密度估计和核回归估计(http://cran.r-project.org/web/packages/spatialkernel/index.html)。
5)地质统计学(Geostatistics) :
gstat 包做单变量和多变量地质统计,适合于大的数据集(http://cran.r-project.org/web/packages/gstat/index.html);geoR包(用贝叶斯模型,http://cran.r-project.org/web/packages/geoR/index.html)和geoRglm 包(用线性模型,http://cran.r-project.org/web/packages/geoRglm/index.html)做基于模型的地质统计;fields包也提供许多类似的函数(http://cran.r-project.org/web/packages/fields/index.html);spBayes包用蒙特卡洛一马尔科夫链方法(MCMC)做单变量和多变量的高斯模型(http://cran.r-project.org/web/packages/spBayes/index.html)。
RandomFields包模拟和分析随机场(http://cran.r-project.org/web/packages/RandomFields/index.html);tripack包用于不规则数据的三角测量法(http://cran.r-project.org/web/packages/tripack/index.html);akima包用于不规则数据的线性或三次样条插值(http://cran.r-project.org/web/packages/akima/index.html);spatialCovariance包计算矩形数据的空间协方差矩阵(http://cran.r-project.org/web/packages/spatialCovariance/index.html)……。
6)疾病制图和地区数据分析(Disease mapping and areal data analysis):
DCluster包用计数数据探测疾病的空间聚类,计算空间权重,测试空间自相关,建立空间回归模型等(http://cran.r-project.org/web/packages/DCluster/index.html);spgwr包做地理加权回归模型,检测平稳性(http://cran.r-project.org/web/packages/spgwr/index.html);spatclus包(http://cran.r-project.org/web/packages/spatclus/index.html)。spatclus包探测2维或3维空间点分布的任意形状的聚类(http://cran.r-project.org/web/packages/spatclus/index.html)。
7)生态学分析(Ecological analysis):
R有很多分析生态和环境数据的包。如:grasp包用GAM模型 (灰色代数曲线型模型)做环境预报(http://cran.r-project.org/web/packages/grasp/index.html);ade4包用做环境科学里的探索和欧几里德方法(http://cran.r-project.org/web/packages/ade4/index.html);adehabitat包分析动物的栖息地选择(http://cran.r-project.org/web/packages/adehabitat/index.html);pastecs包做时空序列的分解和分析(http://cran.r-project.org/web/packages/pastecs/index.html);vegan包做群落和植被生态学中的排序方法(http://cran.r-project.org/web/packages/vegan/index.html);WeedMap包做空间预测(http://cran.r-project.org/web/packages/WeedMap/index.html);clustTool包做聚类分析(http://cran.r-project.org/web/packages/clustTool/index.html)。更多资料见:http://cran.r-project.org/web/views/Environmetrics.html。

R是一个有着统计分析功能及强大作图功能的软件系统,是由Ross Ihaka和Robert Gentleman1共同创立。R语言可以看作是由AT&T贝尔实验室所创的S语言发展出的一种方言1。因此,R即是一种软件也可以说是一种语言。S语言现在主要内含在由Insightful2公司经营的S-PLUS软件中。R和S在设计理念上存在有着许多不同:关于这方面的详细内容大家可以参考Ihaka & Gentleman (1996) 或R-FAQ3,该文档同时随R一起发布。

R是在GNU协议General Public Licence4下免费发行的,它的开发及维护现在则由R开发核心小组R Development Core Team具体负责。

R的安装文件有多种形式,有在Unix 或Linux系统下所需的一些源代码(主要用C及Fortran 编写),及在Windows, Linux及Macintosh上使用的预编

译二进制码。这些安装文件以及安装说明都可以在Comprehensive R ArchiveNetwork (CRAN)5 网站上下载。该网站提供的关于Linux的安装文件只适用于较新版本的Linux。详情请参考CRAN网站。

R内含了许多实用的统计分析及作图函数。作图函数能将产生的图片展示在一个独立的窗口中,并能将之保存为各种形式的文件(jpg, png, bmp, ps,pdf, emf, pictex, x¯g; 具体形式取决于操作系统)。统计分析的结果也能被直接显示出来,一些中间结果(如P-值,回归系数,残差等)既可保存到专门的文件中,也可以直接用作进一步的分析。

在R语言中,使用者可以使用循环语句来连续分析多个数据集,也可将多个不同的统计函数结合在一个语句中执行更复杂的分析。R使用者还可以借鉴网上提供的用S编写的大量程序6,而且大多数都能被R直接调用。

一些 R 语言的学习资源

http://www.r-project.org/ R 的官方网站
http://cran.r-project.org/manuals.html R 官方文档
http://www.bioconductor.org/ R 在生物学里面的应用, 主要是芯片数据.
http://www.biosino.org/R/R-doc/ R的一些中文文档
http://cran.r-project.org/doc/Rnews/ R 的官方杂志. 里面有一些具体问题的 R 例子.
http://wiki.r-project.org/rwiki/doku.php R 的官方Wiki. 目前还不够完善, 有一些具体的例子说明.
http://addictedtor.free.fr/graphiques/ 一个不错R绘图的例子网站(点击"Graphics List", 就可以看到所有 R 图片的列表).
http://zoonek2.free.fr/UNIX/48_R/all.html R在统计学方面应用最全的一个文档
http://www.math.csi.cuny.edu/Statistics/R/simpleR/index.html simpleR 的官方网站,主要用于工业方面的统计分析
http://statcomp.ats.ucla.edu/R/ UCLA 的 R 资源列表
R for Beginners: 一本不错的 R 入门教材,例子比较通俗易懂. (已有中文版)
simpleR: 我早期看过的一个例子比较多的文档,个人推荐。
Using R for Data Analysis and Graphics - Introduction, Examples and Commentary: 写的通俗易懂,可操作性强,比 simpleR 略为复杂一点,个人推荐。
An Introduction to R: R 官方文档中面向一般用户的, 内容较全, 可能针对性不强,可以当手册查。 (已有中文版)
Practical Regression and Anova using R: 用 R 做回归分析,写得有点涩,需要一些数学功底。(该文档有点老)
Statistics with R: 除了 R 官方的Manual, 这个文档可能是我看到的对 R传统统计方面描述的最全面的一个.

你可能感兴趣的:(空间数据分析与R语言实践)