假设我有三个向量,向量
我想要将
换句话说:
问题在于,这种方法似乎并不十分优雅或高效。有没有其他的方法来解决这个问题?对于金融人士来说,这个问题类似于Fama-French(1993)对投资组合进行双重分类。
A
是 (n x 1)
,向量 B
是 (n x 1)
,向量 C
是 (n x 1)
。我想要将
A
的元素分成5组,并在这些组内将相应的 B
元素排序为5组。然后取 C
元素的平均值。因此我会得到25个平均值。换句话说:
- 将
A
的元素分为5个五分位数; - 选出第一组
A
元素,获取相应的B
值; - 将选定的
B
元素分为5组。 - 从
C
中获取每组的平均值。 - 选出第二组
A
元素,获取相应的B
值; - 将选定的
B
元素分为5组。 - 从
C
中获取每组的平均值。 - 以此类推。
minimum = 50;
maximum = 100;
A = (maximum-minimum).*rand(1000,1) + minimum;
B = (maximum-minimum).*rand(1000,1) + minimum;
C = (maximum-minimum).*rand(1000,1) + minimum;
nbins1 = 5;
nbins2 = 5;
bins1 = ceil(nbins1 * tiedrank(A) / length(A));
for i=1:nbins1
B1 = B(bins1==i);
C1 = C(bins1==i);
bins2 = ceil(nbins1 * tiedrank(B1) / length(B1));
for j=1:nbins2
C2 = C1(bins2==j);
output(i,j) = mean(C2);
clearvars C2
end
clearvars B1 C1
end
问题在于,这种方法似乎并不十分优雅或高效。有没有其他的方法来解决这个问题?对于金融人士来说,这个问题类似于Fama-French(1993)对投资组合进行双重分类。