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(或宽度)的特定值varianceY假设我将域A分成 20 个红色框,我想计算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 有一百个部门。是否可以使用更有效的方法? 在此处输入图像描述

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 回答