Преобразование Box Cox для многомерной нормальности в MATLAB

Кто-нибудь реализовал подход Box Cox в MATLAB для преобразования многомерных данных? Я нашел R пакет, который это делает, но ничего для MATLAB. Спасибо.


person Matteo Maggioni    schedule 19.03.2013    source источник


Ответы (2)


MATLAB не имеет встроенной функции для реализации многомерного преобразования бокса-кокса.

Я написал один сам, и он работает.

Вот код.

Входные данные x представляют собой матрицу наблюдений, где строки обозначают наблюдения, а столбцы обозначают переменные.

Ссылка: Прикладной многомерный статистический анализ, 6 – Джонсон Р. и Вичерн Д. Глава 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

Просто не стесняйтесь использовать его.

person T. Lan    schedule 18.03.2017

Поиск в Google "MATLAB Box Cox" говорит мне, что:

  1. Преобразования Бокса-Кокса доступны в Financial Toolbox.
  2. Существует свободно доступная реализация на MATLAB Central File Exchange.
person Sam Roberts    schedule 21.03.2013
comment
Большое спасибо, чувак, но, возможно, тебе стоит прочитать ответ полностью. Я ищу многомерное преобразование мощности, а не одномерное, которое вы связали. - person Matteo Maggioni; 26.03.2013