我有几百个从两个不同模型计算的参数估计值,我想知道这些参数是否具有不同的方差。
什么是比较这些参数的方差的简单测试?(直截了当的意思,最少的假设)。
我有几百个从两个不同模型计算的参数估计值,我想知道这些参数是否具有不同的方差。
什么是比较这些参数的方差的简单测试?(直截了当的意思,最少的假设)。
为了比较方差,Wilcox 建议使用百分位自举法。请参阅“稳健估计和假设检验简介”的第 5.5.1 章。这可以comvar2
从R中的 wrs 包中获得。
编辑:要找到从每一侧修剪不同值的引导差异的数量,的建议进行蒙特卡洛研究。我在 Matlab 中有一个又快又脏的(扔鞋的鸭子):
randn('state',0); %to make the results replicable.
alphas = [0.001,0.005,0.01,0.025,0.05,0.10,0.15,0.20,0.25,0.333];
nreps = 4096;
nsizes = round(2.^ (4:0.5:9));
nboots = 599;
cutls = nan(numel(nsizes),numel(alphas));
for ii=1:numel(nsizes)
n = nsizes(ii);
imbalance = nan(nreps,1);
for jj=1:nreps
x1 = randn(n,1);x2 = randn(n,1);
%make bootstrap samples;
x1b = x1(ceil(n * rand(n,nboots)));
x2b = x2(ceil(n * rand(n,nboots)));
%compute stdevs
sig1 = std(x1b,1);sig2 = std(x2b,1);
%compute difference in stdevs
Dvar = (sig1.^2 - sig2.^2);
%compute the minimum of {the # < 0} and {the # > 0}
%in (1-alpha) of the cases you want this minimum to match
%your l number; then let u = 599 - l + 1
imbalance(jj,1) = min(sum(Dvar < 0),sum(Dvar > 0));
end
imbalance = sort(imbalance);
cutls(ii,:) = interp1(linspace(0,1,numel(imbalance)),imbalance(:)',alphas,'nearest');
end
%plot them;
lh = loglog(nsizes(:),cutls + 1);
legend(lh,arrayfun(@(x)(sprintf('alpha = %g',x)),alphas,'UniformOutput',false))
ylabel('l + 1');
xlabel('sample size, n_m');
我得到了相当无益的情节:
一点点hackery表明,形式为的模型非常适合我的蒙特卡罗模拟,但它们给出的结果与 Wilcox 不同在他的书中引用。在您喜欢的下自己运行这些实验可能会更好。
编辑我再次运行了这个实验,每个样本大小使用更多的重复(的经验值表。第一行是 NaN,然后是 alpha(I 型比率)。之后,第一列是样本的大小的经验值。(我希望作为我们会有)
NaN,0.001,0.005,0.01,0.025,0.05,0.1,0.15,0.2,0.25,0.333
16,0,0,1,4,9,22,35,49,64,88
23,0,0,1,4,10,23,37,51,66,91
32,0,0,1,4,10,24,38,52,67,92
45,0,0,1,5,11,25,39,54,69,94
64,0,0,2,5,12,26,41,55,70,95
91,0,1,2,6,13,27,42,56,71,96
128,0,1,2,6,13,28,42,58,72,97
181,0,1,2,6,13,28,43,58,73,98
256,0,1,2,6,14,28,43,58,73,98
362,0,1,2,7,14,29,44,59,74,99
512,0,1,2,7,14,29,44,59,74,99