所有由齐韬发布的文章

关于齐韬

Computational Mathematician in Annpro Analytic Technologies, Inc.

WinBUGS在统计分析中的应用(第四部分)

如何生成一个GeoBUGS格式的中国地图

第一节 导言

R, WinBUGS and ArcInfo之前有些对GeoBUGS感兴趣的同学发邮件询问我有没有GeoBUGS的中国地图,以用于分析中国国内的一些空间数据。我想有必要将如何生成GeoBUGS格式的地图的方法分享给大家。这样的话, GeoBUGS就可以真正为我们所用,从而对于其他GeoBUGS没有自带的地图,我们也可以轻松生成了。本节不涉及统计分析,仅为GeoBUGS的研究使用者提供一个软件使用的技术参考。关于GeoBUGS的统计的书,国外实在是很多了,但关于这块地图定制的参考资料较少,故提出来供大家参阅。
继续阅读WinBUGS在统计分析中的应用(第四部分)

在Batch Mode下完成无人值守的R项目测试

今天我来谈一点用R编程的经验吧。好像R的很多方面许多牛人都谈过了,比如R的打包啊,R的图形啊,下面我来谈谈R的测试。如果希望真正学到什么的话,还是要自己花时间实践的。

在很多情况下,你自己或和你的团队在一起开发一个R的项目,而伴随着开发的深入,测试就成了家常便饭。但是往往很多统计算法涉及到比较大的计算,比方说missing data的模型,比方说具有多层次结构的模型。测试这些R程序需要花费大量的时间。当然了如果你的程序规模很小,计算量也不大的情况下,大可不必杀鸡用牛刀,但是一般情况下,再小的一段统计算法,如果需要做一系列的simulation或是case study的话,测试都会花很多的时间。比如,如果你有几个实现了推广的ROC模型的R函数,或者是一个包含这些函数的R包,没有人能说这个程序真正管用,你要测试,那你就需要做simulation和case study。simulation简单的就是模拟出一系列预先设定模型参数的数据,让目标模型去fit,然后比较结果。case study则可以做各式各样的比较研究,特定数据的实例分析等等。好了,废话不多说,总之这篇文章就是告诉你怎么样方便地测试,随时随地想测就测。

其实核心就是调用Rterm,包含的主要文件如下:

(1)创建文件:Rbatch.bat

cd test
date /T >> logout.txt
time /T >> logout.txt
cd..
C:\Progra~1\R\R-2.8.0\bin\Rterm.exe --vanilla <config.R> testout.txt

(2)创建文件:config.R

#如果你已经打好了R包,一下的代码可以减少,只要load你的包就好了。

#下面的版本是你还没有打包,但是调用了C++动态链接库,测试数据,和函数源代码需要source

# PATH
#---------------------------------------------------------
Path.autorun <- "C:\\autorun\\"
Path.rdll <- "C:\\WORK\\Project\\src\\C++\\bin\\"
Path.data <- "C:\\WORK\\Project\\Datasets\\Data\\R\\"
Path.funs <- "C:\\WORK\\Project\\src\\R\\"
Path.dump <- "C:\\autorun\\results\\"
#---------------------------------------------------------
dyn.load(paste(Path.rdll,"RDLL.dll",sep=""))

source(paste(Path.autorun,"source.data.R",sep=""))
source(paste(Path.autorun,"source.funs.R",sep=""))
source(paste(Path.autorun,"source.test.R",sep=""))
source(paste(Path.autorun,"testProjectR.R",sep=""))

source.data(Path.data)
source.funs(Path.funs)
testProjectR(paste(Path.autorun,"test\\",sep=""),TEST=0)

(3)创建测试框架函数testProjectR in testProjectR.R 文件:

testProjectR <- function(loc=getenv("STEST"), TEST=c(0,1,2)) {
## loc: the directory of the Project testing suite
## TEST: (0: the default loop test, 1: test buglist only, 2: loop test and test buglist
if (loc!="") dirOfRTestSuite <- loc
else stop("Specify the directory of testing suite to loc.")
print(dirOfRTestSuite)
TESTBUG <- TEST[1]
tests <- character(0)
if (TESTBUG != 1) tests <- scan(paste(dirOfRTestSuite,"testlist",sep=""),what=character(0))
if (TESTBUG != 0) tests <- c(tests, scan(paste(dirOfRTestSuite,"buglist",sep=""),what=character(0)))
print(tests)
for ( i in 1: length(tests) )
{
print(paste(dirOfRTestSuite,tests[i],sep=""))
source(paste(dirOfRTestSuite,tests[i],sep=""))
}
invisible()
}

(4)创建testlist 文件在\test目录下里面写你要测试的文件名

运行Rbatch.bat,开始测试。

在测试函数中通过用try命令,实现对异常的收集,而不直接跳出测试。

batch mode

Google Visualization API 与在线数据分析

Visualization API近日Google推出了Google Visualization API为在线数据分析开拓了一条崭新的道路。这个项目的初衷就是希望提供一种灵活的在线数据分析的解决方案。之前的名声大噪的Google Map API已经应用到国内的许多诸如地图查询,导航信息,GIS等等诸多领域。也许你也曾是其中一员或将要成为其中一员呢。回过头来,Visualization API则将重点放在数据的探索性分析与结果的展现上。虽然现在没有提供丰富的分析类库,但是在不久的将来,功能强大的在线分析软件,甚至在线开发平台都将不再遥不可及。

继续阅读Google Visualization API 与在线数据分析

WinBUGS在统计分析中的应用(第三部分)

用GeoBUGS做简单的空间数据分析

第一节 实例介绍基本的空间模型

GeoBUGS是WinBUGS的一个模块,专门用来分析空间数据(spatial data)。由于和WinBUGS的基本模型结合得比较好,所以被广泛地使用。目前的GeoBUGS除了自身的地图格式外,还支持Splus, ArcInfo 以及 EpiMap的地图格式。当然了,在使用的时候需要做适当的转化才行。

下面是一个简单的例子,大家也可以在GeoBUGS的Manual中找到它。模型假设为条件自回归模型 Conditional Autoregressive(CAR)。数据为苏格兰唇癌疾病数据,反映的是苏格兰56个郡的唇癌发病率。这个数据比较经典,Clayton and Kaldor (1987) 和 Breslow and Clayton (1993)都曾在他们的论著中分析过该数据。

继续阅读WinBUGS在统计分析中的应用(第三部分)

WinBUGS在统计分析中的应用(第二部分)

第一节 WinBUGS数据分析案例

在这一节中,我将拿一个经典的研究数据,利用WinBUGS给出简单的分析。首先介绍一下这个数据:Seeds

seed O. aegyptiaco 75 	seed O. aegyptiaco 73	Bean 	Cucumber 	Bean 	Cucumber
r 	n 	r/n 	r 	n 	r/n 	r 	n 	r/n 	r 	n 	r/n
10 	39 	0.26 	5 	6 	0.83 	8 	16 	0.5 	3 	12 	0.25
23 	62 	0.37 	53 	74 	0.72 	10 	30 	0.33 	22 	41 	0.54
23 	81 	0.28 	55 	72 	0.76 	8 	28 	0.29 	15 	30 	0.5
26 	51 	0.51 	32 	51 	0.63 	23 	45 	0.51 	32 	51 	0.63
17 	39 	0.44 	46 	79 	0.58 	0 	4 	0 	3 	7 	0.43
10 	13 	0.77

继续阅读WinBUGS在统计分析中的应用(第二部分)