jStat 是一个 Javascript 库,为开发人员提供了统计功能和在浏览器中绘制相应图形的特性。jStat 能够在所有浏览器中执行统计操作,它需要 jQuery 和绘制数据的插件。jStat 是开源统计语言和环境 R 的部分移植版。
InfoQ 采访了 Matthew Williams(英国伯明翰阿斯顿大学研究员、jStat 团队成员),了解 jStat 提供的功能:
jStat 的核心基于向量和矩阵(很像 MatLab)。基本单元是矩阵,可以通过 jStat 函数 (j$) 来创建:
§ var matrix = j$([[1,2,3],[4,5,6],[7,8,9]])
每一个矩阵包含许多方法,包括加法、除法、乘法、减法、对角线、反对角线、转置、点积、正规化、最小值、最大值、平均值和中间值等。
概率发布包括:正态、对数正态、β、γ、韦伯、柯西、卡方、指数、帕雷托、student T 等。每一种概率分布都可以计算 PDF、CDF 并且在给定 X 值(或者矩阵值)对 CDF 反向计算。你也可以计算平均值、中间值、取模、标准差和方差。同时,所有分布都能够产生随机样本。
jStat 还包括了许多“特殊”的函数,包括:伽马函数、反伽马函数、贝塔函数、反贝塔函数、不完全贝塔函数、对数伽马函数、反不完全伽马函数、误差函数、余误差函数、逆余误差函数。它还包含了一些随机数生成器:randn(正态分布的随机样本)和 randg(伽马分布的随机样本)。
阿斯顿大学的在读学生 Tushar Gupta 在今天夏天添加了一些其他功能,如使用 Nelder-Mead 和非线性共轭梯度算法做优化、线性代数函数包括积分、微分和插值。
jStat 项目相对年轻,最缺乏的是丰富的绘图功能,计划在未来添加。之前没有清晰的路线图,jStat 团队决定未来要做计划,包括提供一个插件体系,支持对项目感兴趣的人扩展它。Williams 表示:
jStat 未来有很多计划。我们正在开发一个回归包,为更复杂的贝叶斯方法提供简单的线性回归。而且,还要提供一些更复杂的绘图功能,包括多元变量绘制(3D)。同时,进一步的设想是创建一个全交互式的 jStat 环境。
就像 cloud9 是一个在线 IDE 一样,jStat 希望提供一个在线 Matlab/R 的环境,跟踪变量、交互绘图和保存、恢复工作。
我们也希望创建一个插件体系,其他人可以为 jStat 创建扩展插件。我认为如果插件系统完善,jStat 会有巨大的潜力。
至于官方路线图,目前还很困难。现在我们正忙于重构和记录修改历史,一旦完成这些工作,我们会更新 jStat 网站并提供教程。希望未来几个月能够实现这个目标,往前迈一大步。如果达到这个里程碑,我们会更好地计划 jStat 的未来。
源代码可以从这里 Github/jstat 查看,基于 MIT license 授权。
对于更强壮和成熟的统计解决方案,可以使用 R ——完整的框架,可以执行所有的统计运算和绘制(支持 Unix、Mac 和 Windows)。但是 R 适合编写原生统计应用,而 jStat 适合轻量级跨浏览器 web 应用(不需要 R 提供的所有功能)。(jStat 的精简版本有40KB,而R 的Widnows 安装包有39MB)。
评论