1

連続変数A=gamrnd(5,0.4,1000,28)と出力変数がありますY=lognrnd(7,1.9,1000,28)

 A
    7.6472    3.4284    6.3352    8.0480    8.1021
   12.3371    5.1611    6.3986    9.3687    9.5652
    8.7700    5.2980    6.0307    2.8651   12.6011
   12.2042    4.5636    6.0570    7.1348    8.6586
    7.8960    5.5213    3.7105    6.4875    7.4891

 Y
    1.9733   14.0951   14.0951   14.0951   14.0951
    9.4284   11.7573   15.6730   25.4495   24.6680
    3.4724    4.4953    7.1237    9.4191   18.4504
    8.9548    8.9548    8.9548    8.9548    8.9548
    1.4834    2.5393    2.5393    2.5393    2.5393

その赤いボックスの A (または幅) の特定の値のvarianceを計算したいですか? Yのドメインを 20 個の赤いボックスに分割するとします。ボックスごとAに の分散を計算したいと思います。Yつまり、次のようになります。

$Var(Y|A=a_i)$

どうやってそれをするか考えましたか?

これまでの私の考え:

[i j]=find(9.5<=A & A<=10.5)
sig=var(reshape((Y([i j])),length(i)*2,1))

しかし、これは正しいですが、アドホックです。A に 100 の部門があるとしましょう。もっと効率的なものを使用することは可能ですか? ここに画像の説明を入力

4

1 に答える 1

1

accumarray救助へ!

%# split A into 100 chunks
nChunks = 100;

Aidx = round(A/maxA*(nChunks-1))+1;

%# get the number of data points just in case
nDataPoints = histc(Aidx,1:nChunks);

%# calculate the variance
varA = accumarray(Aidx,Y,[100,1],@var,NaN);
于 2013-04-11T19:22:56.273 に答える