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).


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 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α
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.