有没有人在 MATLAB 中实现了 Box Cox 方法来转换多元数据?我找到了一个可以做到这一点的R 包,但对于 MATLAB 没有。谢谢。
问问题
3956 次
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”告诉我:
- Box-Cox 转换在Financial Toolbox中可用
- MATLAB Central File Exchange 上有一个免费提供的实现。
于 2013-03-21T12:41:28.043 回答