MATLAB中多元正态性的Box Cox变换

时间:2013-03-19 13:55:19

标签: matlab normalization transformation

有没有人在MATLAB中实现Box Cox方法来转换多变量数据?我找到了一个 R package,但没有为MATLAB做的。 感谢。

2 个答案:

答案 0 :(得分:0)

谷歌搜索“MATLAB Box Cox”告诉我:

  1. Box-Cox转换可在Financial Toolbox
  2. 中找到
  3. MATLAB中央文件交换中有一个免费的implementation

答案 1 :(得分:0)

MATLAB没有内置函数来实现多变量box-cox变换。

我自己写了一个并且有效。

这是代码。

输入x是obervation matix,其中行表示obervations 这些列表示变量。

参考:应用多变量统计分析6th-Johnson R.& Wichern D. Chapter 4.8转变为接近常态

function lambda=boxcoxn(x)
[m,n]=size(x);
lambda_ini=zeros(n,1);
for ii=1:n
    [temp,lambda_ini(ii,1)]=boxcox(x(:,ii));
end
fun=@(lambda)(log(det((cov(((x.^repmat(lambda',m,1)-1)./repmat(lambda',m,1))))))*m/2-(lambda-1)'*(sum(log(x)))');
lambda=fminsearch(fun,lambda_ini);
end

随便使用它。