matlab源码 卡方分布,概率统计方面的底层需要实现的相关函数

一、需要实现的函数(参考matlab命名规则)

密度函数:normpdf,chi2pdf,fpdf,tpdf

分布函数:normcdf,chi2cdf,fcdf,tcdf

方差、均值:normstat,chi2stat,fstat,tstat

逆累积分布:norminv,chi2inv,finv,tinv

假设检验:ttest,test2,ztest, ,signtest, kstest,kstest2,jbtest,signrank,ranksum

参数估计:unifit、normfit、binofit、expfit、poissfit、[gamfit、weibfit、betafit,---未实现]

betalike、gamlike、normfit、weibfit[只实现输出一个参数]

需要实现全部代码的double vector,matrix三种形式的输入输出

对比结果工具:MATLAB , R ,Eviews,SPSS,SAS (可能几个结果会有不一致)

其中matlab在实现密度函数、分布函数、逆累积分布时是利用函数概念定义,采用的是充分利用matlab自身的矩阵运算快和强大的数值积分微分操作来实现。精度高,需要精度较高时效率降低。

密度函数、分布函数主要参考R的底层在R源码包的src中的nmath下,

其中开头为d代表密度函数   -----对应matlab的pdf

p代表分布函数   -----对应matlab的cdf

q代表分位数---------未使用

r 代表按照某种分布生成随机数---未使用

Normal  (guass)

R 中dnorm是直接按照定义操作,在使用时先计算x = (x - mu) /sigma,避免在下面计算时重复进行。

R在pnorm时使用有理切比雪夫来近似结果(参考文章:Rational Chebyshevapproximations for the error function,W. J. Cody, Math. Comp., 1969, 631-637)

Chisq

R 中的dchisq是直接的调用了dgamma,因为卡方分布是伽玛分布的一种特殊形式。在dgamma中调用dpois_raw,计算泊松概率。

R中的pchisq是直接调用pgamma。

F分布,T分布

R中的df,dt,pf,pt

normstat,chi2stat,fstat,tstat

根据matlab代码而写

Norminvfinv chi2inv tinv

参考GSL底层库

在GSL源码的其中的cdf文件夹下

Gaussinv为对应matlab中的norminv

Fdistinv对应matlab中的finv

Chisqinv对应matlab中的chi2inv

Tdistinv对应matlab中的tinv

ttest,test2,ztest,,signtest

参考matlab源码和本身的概念定义

kstest,kstest2,jbtest,signrank,ranksum

kstest、kstest2 参考R的底层 --------- src\library\stats\R下的ks.test.R需要用到src\library\stats\src下的ks.c

signrank,ranksum参考R的底层-------src\library\stats\R下的wilcox.test.R需要用到nmath下的wilcox.c

jbtest参考R的外部加载包tserise包中的test.R  jarque.bera.test

参数估计:

normfit参考概念与定义,参考matlab源码

二、相关底层库

1.Sleipnir[harvard计算功能基因组](个人偶然发现的一个,不算什么底层库)

中的statistics.cpp有相关的函数C++版本

其中包含有chi2cdf、Normal01CDF、GammaLog、SampleGammaLogStandard

其中的IncompleteBeta (不完全beta积分)R中的beta_inc

包含有:WilcoxonRankSum

Sleipnir中还包含贝叶斯相关,聚类相关,SVM等

2. Lapack、BLAS  Lapcak不解释,接触计算矩阵类底层必须要用到的,主要是实现了矩阵操作,矩阵分解等,最小二乘。。。BLAS:基础线性代数程序集(主要实现矢量或矩阵乘法)等。

3. GSL(GNU scientific lib.)[线性代数部分采用BLAS来实现]包含有:FFT(傅立叶变换),cdf(相关的概率分布函数)等,功能较全,可以参考。具体参见:

6. pspp:,仿照SPSS的统计类开源软件,PSPP还是一个成长中的项目,目前还不能替代SPSS的全部功能。但其已经可以实现很多基本功能,满足一般用户的需求。PSPP的成长速度很快,新特性在不断被添加到新版本中。我们有理由相信,它能够在不久的将来替代SPSS等商业软件。

7. scilab

SCILAB

是由

国家信息、自动化研究院

(INRIA)

的科学家们开发的

开放源码

软件

SCILAB

一词来源于英文

“ScientificLaboratory"

(科学实验室)词头的合并。

Scilab

语言也是一种交互性的数学脚本语言,语法与

MATLAB

语言相近,也以矩阵作为数据的基本组织形式。

Scilab

还有一个可以把

MATLAB

源程序转换为

Scilab

源程序的代码翻译器。参见:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值