Полагаю, вы знаете, что такое гистограммы в целом. Совместные гистограммы данных в N-мерном пространстве признаков N-мерны. Вы просто помещаете точки данных в N-мерные ячейки (обычно это декартовы произведения из N 1-мерных сеток). Маргинальные гистограммы меньше, чем N-мерные гистограммы, где одно или несколько измерений были проигнорированы. Гистограммы суставов и краев очень похожи на распределения суставов / краев .
Как их вычислить, зависит от вашей конкретной ситуации. Вы можете вычислить маргинальные гистограммы из объединенных гистограмм, интегрируя по некоторым измерениям, или вы можете построить их так же, как объединенные гистограммы, но с меньшим количеством измерений. Например, в Matlab histcounts2
вычисляет объединенную гистограмму двумерных данных. Для данных более высокого размера может помочь accumarray
. В Python с NumPy histogramdd
генерирует многомерные гистограммы. Обычно N-мерные элементы - это декартовы произведения элементов в каждом измерении, а полученные гистограммы - это простые массивы Numpy (в Python) или матрицы (в Matlab).
Простой пример в N = 2D (в Matlab)
Давайте сначала создадим некоторые данные
x = 3*randn(1e4, 1);
y = randn(1e4, 1);
scatter(x, y, '.');
xlim([-10,10]);
ylim([-10,10]);
pbaspect([1,1,1]);
Давайте вычислим объединенную гистограмму
h = histcounts2(x, y, -10:10, -10:10);
Давайте отобразим объединенную гистограмму и на каждой стороне маргинальные гистограммы, которые могли быть получены либо путем интегрирования объединенной гистограммы по одному измерению, либо путем создания одномерных гистограмм для осей данных отдельно. Здесь маргинальные гистограммы создаются путем простого вычисления 1D гистограмм (игнорируя другое измерение данных).
fig = figure;
subplot('Position', [0.35, 0.35, 0.6, 0.6]);
im = imagesc(-10:10, -10:10, h.');
im.Parent.YDir = 'normal';
axis image;
title('joint histogram (x,y)');
subplot('Position', [0.43, 0.1, 0.45, 0.15]);
histogram(x, -10:10);
camroll(180);
title('marginal histogram x');
subplot('Position', [0.2, 0.4, 0.15, 0.55]);
histogram(y, -10:10);
camroll(90);
title('marginal histogram y');
Хорошо видно, что маргинальные гистограммы просто соответствуют сложениям совместной гистограммы по направлениям.