对每个分箱使用相同均值的 2 个变量的分箱值
Binning Values from 2 variables using the same mean for each bin
如何将来自两个不同组的数据分箱到以同一值为中心的分箱中?
举个例子,
A(:,1) = [0.05:0.05:0.80]';
A(:,2) = [ones(7,1); [0.6; 0.6; 0.4]; zeros(6,1)];
B(:,1) = [0.15:0.1:0.95]';
B(:,2) = [ones(4,1); [0.8; 0.8; 0.2]; zeros(2,1)];
plot(A(:,1),A(:,2)); hold on; plot(B(:,1),B(:,2));
我想在同一图上对 A 和 B 进行分箱和绘制,但数据分箱在 A 和 B 的 X 轴上的点 0.2、0.4、0.6 和 0.8,这意味着有每个 bin 中的数据都会不均匀。我应该如何使用以这些点为中心的平均值对这些值进行分组?
您的要求有点不清楚,但仔细阅读这些内容和您的评论,我认为这就是您要找的内容:
edges = [0.2 0.4 0.6 1];
A(:,1) = (0.05:0.05:0.80).';
A(:,2) = [ones(7,1); [0.6; 0.6; 0.4]; zeros(6,1)];
[~,A_bins] = histc(A(:,1),edges);
[A_bin_vals,~,A_idx] = unique(A_bins);
A_avg = accumarray(A_idx,A(:,2),[numel(A_bin_vals) 1],@mean) ;
B(:,1) = (0.15:0.1:0.95).';
B(:,2) = [ones(4,1); [0.8; 0.8; 0.2]; zeros(2,1)];
[~,B_bins] = histc(B(:,1),edges);
[B_bin_vals,~,B_idx] = unique(B_bins);
B_avg = accumarray(B_idx,B(:,2),[numel(B_bin_vals) 1],@mean) ;
plot(0:3,A_avg,'-.r*'),hold on,plot(0:3,B_avg,'-.b*'),hold off;
xticks(0:3);
xticklabels({'0.2' '0.4' '0.6' '0.8'});
输出:
实际上,为了实现这一点,我使用 histc
应用所需的边对矩阵的第一列进行了离散化。然后,使用 accumarray function, I applied the mean function 将第二列的所有值按 bin
.
分组
如何将来自两个不同组的数据分箱到以同一值为中心的分箱中?
举个例子,
A(:,1) = [0.05:0.05:0.80]';
A(:,2) = [ones(7,1); [0.6; 0.6; 0.4]; zeros(6,1)];
B(:,1) = [0.15:0.1:0.95]';
B(:,2) = [ones(4,1); [0.8; 0.8; 0.2]; zeros(2,1)];
plot(A(:,1),A(:,2)); hold on; plot(B(:,1),B(:,2));
我想在同一图上对 A 和 B 进行分箱和绘制,但数据分箱在 A 和 B 的 X 轴上的点 0.2、0.4、0.6 和 0.8,这意味着有每个 bin 中的数据都会不均匀。我应该如何使用以这些点为中心的平均值对这些值进行分组?
您的要求有点不清楚,但仔细阅读这些内容和您的评论,我认为这就是您要找的内容:
edges = [0.2 0.4 0.6 1];
A(:,1) = (0.05:0.05:0.80).';
A(:,2) = [ones(7,1); [0.6; 0.6; 0.4]; zeros(6,1)];
[~,A_bins] = histc(A(:,1),edges);
[A_bin_vals,~,A_idx] = unique(A_bins);
A_avg = accumarray(A_idx,A(:,2),[numel(A_bin_vals) 1],@mean) ;
B(:,1) = (0.15:0.1:0.95).';
B(:,2) = [ones(4,1); [0.8; 0.8; 0.2]; zeros(2,1)];
[~,B_bins] = histc(B(:,1),edges);
[B_bin_vals,~,B_idx] = unique(B_bins);
B_avg = accumarray(B_idx,B(:,2),[numel(B_bin_vals) 1],@mean) ;
plot(0:3,A_avg,'-.r*'),hold on,plot(0:3,B_avg,'-.b*'),hold off;
xticks(0:3);
xticklabels({'0.2' '0.4' '0.6' '0.8'});
输出:
实际上,为了实现这一点,我使用 histc
应用所需的边对矩阵的第一列进行了离散化。然后,使用 accumarray function, I applied the mean function 将第二列的所有值按 bin
.