假设 A 是我的数据矩阵,它表示一个家庭样本,行的第一个元素表示房屋 ID,第二列表示该房屋中的人员 ID。
A = [100 1 56;
101 1 34;
101 2 33;
102 1 22;
102 2 55;
102 3 2]
w = [3 2 1] % weight of each household to generate the synthetic population
我想扩展样本以创建一个合成总体,使我的输出如下所示:
100 1 56
100 1 56
100 1 56
101 1 34
101 2 33
101 1 34
101 2 33
102 1 22
102 2 55
102 3 2
我使用以下代码为给定的权重重复矩阵中的所有行
cc = [0 cumsum(w)];
idx = zeros(1,sum(w));
for i=1:length(w)
idx(cc(i)+1:cc(i+1))=i;
end
weighted_replicated_matrix = A (idx,:)
但是对于我想要的输出,我需要重复一组行。行集的长度取决于家庭中的人数(可以是像 w 这样的单独矩阵),并且每组要重复的次数由权重矩阵给出。
对代码修改的任何帮助都会非常有帮助!