Como posso testar

8

Tenho algumas centenas de estimativas de um parâmetro calculado a partir de dois modelos diferentes e gostaria de saber se esses parâmetros têm variações diferentes.

Qual é um teste direto para comparar as variações desses parâmetros? (significado direto, menos suposições).

Abe
fonte
Você está comparando variações (como indicado na primeira linha) ou médias (como indicado na terceira linha)?
whuber
@whuber eu tinha me confundido; Eu esclareci minha pergunta.
Abe
Parece que agora você inverteu "meios" e "variações", mas ainda há uma contradição! (A menos que você queira comparar as variações dos meios.) O que você quer dizer com "variável": os meios ou os valores subjacentes nos quais eles se baseiam?
whuber
@ Whuber desculpe, isso é melhor?
Abe
@ Abe O novo título ajuda muito. Mas só para esclarecer: os quadrados sigma são as variações dos meios ou das variáveis subjacentes nas quais os meios se baseiam?
whuber

Respostas:

7

Para comparar variações , Wilcox sugere um método de autoinicialização por percentil. Consulte o capítulo 5.5.1 de 'Introdução à estimativa robusta e teste de hipóteses' . Está disponível a comvar2partir do pacote wrs em R.

edit : para encontrar a quantidade de diferenças de bootstrap a serem cortadas de cada lado para diferentes valores de , seria realizado um estudo de Monte Carlo, conforme sugerido por Wilcox. Eu tenho um rápido e sujo aqui no Matlab (pato de sapatos arremessados):α

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

Eu recebo o enredo inútil: insira a descrição da imagem aqui

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
fonte
@shabbychef obrigado por me apontar nessa direção. Levei apenas 5 minutos para baixar, ler o capítulo da seção e calcular; muito apreciado, mas continuarei aceitando sua resposta na esperança de que outros métodos sejam sugeridos - pois esse é bastante limitado (apenas testes em alfa = 0,05, e pode haver outras opções para amostras grandes, como no exemplo caso presente)
Abe
@shabbychef Eu já marquei +1, mas tive muito azar com o pacote R - a compilação do OS X não inclui a função mencionada :(
chl
@chl AFAIK o pacote é apenas um pacote conveniente para as funções que estão disponíveis na www-rcf.usc.edu/~rwilcox/Rallfun-v13
caracal
α0.05luα
α=0.05α