1

有没有人在 MATLAB 中实现了 Box Cox 方法来转换多元数据?我找到了一个可以做到这一点的R ,但对于 MATLAB 没有。谢谢。

4

2 回答 2

1

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

我自己写了一个,它有效。

这是代码。

输入 x 是观测矩阵,其中行表示观测,列表示变量。

参考:Applied Multivariate Statistical Analysis 6th- Johnson R. & Wichern D. Chapter 4.8 Transformations to Near Normality

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

随意使用它。

于 2017-03-18T15:18:27.750 回答
0

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

  1. Box-Cox 转换在Financial Toolbox中可用
  2. MATLAB Central File Exchange 上有一个免费提供的实现。
于 2013-03-21T12:41:28.043 回答