有没有人在MATLAB中实现Box Cox方法来转换多变量数据?我找到了一个 R package,但没有为MATLAB做的。 感谢。
答案 0 :(得分:0)
谷歌搜索“MATLAB Box Cox”告诉我:
答案 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
随便使用它。