Wie kann ich

8

Ich habe einige hundert Schätzungen eines Parameters, der aus zwei verschiedenen Modellen berechnet wurde, und ich möchte wissen, ob diese Parameter unterschiedliche Varianzen aufweisen.

Was ist ein einfacher Test zum Vergleichen der Varianzen dieser Parameter? (einfache Bedeutung, geringste Annahmen).

Abe
quelle
Vergleichen Sie Abweichungen (wie in der ersten Zeile angegeben) oder Mittelwerte (wie in der dritten Zeile angegeben)?
whuber
@whuber ich hatte mich verwirrt; Ich habe meine Frage geklärt.
Abe
@Abe Es scheint, dass Sie jetzt "Mittel" und "Abweichungen" umgekehrt haben, aber es gibt immer noch einen Widerspruch! (Es sei denn, Sie möchten vielleicht die Varianzen der Mittelwerte vergleichen.) Was meinen Sie mit "Variable": die Mittelwerte oder die zugrunde liegenden Werte, auf denen sie basieren?
whuber
@whuber sorry, ist das besser?
Abe
@Abe Der neue Titel hilft sehr. Aber nur klar sein: sind die Sigma-squareds die Varianzen der Mittel oder der zugrunde liegenden Variablen , auf denen die Mittel basieren?
whuber

Antworten:

7

Für den Vergleich von Varianzen schlägt Wilcox eine Perzentil-Bootstrap-Methode vor. Siehe Kapitel 5.5.1 von 'Einführung in die robuste Schätzung und das Testen von Hypothesen' . Dies ist comvar2ab dem wrs-Paket in R verfügbar .

Bearbeiten : Um die Anzahl der Bootstrap-Unterschiede zu ermitteln, die von jeder Seite für unterschiedliche Werte von zu trimmen sind , würde man eine Monte-Carlo-Studie durchführen, wie von Wilcox vorgeschlagen. Ich habe eine schnelle und schmutzige hier in Matlab (Ente aus geworfenen Schuhen):α

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');

Ich verstehe die eher wenig hilfreiche Handlung: Geben Sie hier die Bildbeschreibung ein

l+0,5=exp5.18α0,94n0,067α

218lnlnl599α/.2

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
shabbychef
quelle
@shabbychef danke, dass du mich in diese Richtung gelenkt hast. Ich brauchte nur etwa 5 Minuten, um das Kapitel herunterzuladen, zu lesen und zu berechnen. Sehr geschätzt, aber ich werde Ihre Antwort in der Hoffnung akzeptieren, dass andere Methoden vorgeschlagen werden - da diese eher begrenzt sind (nur Tests bei Alpha = 0,05, und es gibt möglicherweise andere Optionen für große Stichproben wie in der vorliegenden Fall)
Abe
@shabbychef Ich habe bereits +1, hatte aber großes Pech mit dem R-Paket - OS X Build enthält nicht die oben genannte Funktion :(
chl
@chl AFAIK das Paket ist nur ein praktisches Paket für die Funktionen, die unter www-rcf.usc.edu/~rwilcox/Rallfun-v13
caracal
α0,05luα
α=0,05α