Portanto, nossos dados estão estruturados da seguinte forma:
Temos participantes, cada participante pode ser categorizado em 3 grupos ( G \ em {A, B, C} ) e, para cada participante, temos N amostras de uma variável contínua. E estamos tentando prever valores que são 0 ou 1.
Como usaríamos o matlab para testar uma interação entre a variável contínua e a variável categórica na previsão desses valores?
logistic
matlab
interaction
mpacer
fonte
fonte
Respostas:
A maneira mais fácil, IMO, é construir você mesmo a matriz de design, poisx g g=1,2,3
glmfit
aceita uma matriz de valores brutos (observados) ou uma matriz de design. Codificar um termo de interação não é tão difícil assim que você escreve o modelo completo. Digamos que temos dois preditores, (contínuo) (categórico, com três níveis não ordenados, digamos ). Usando a notação de Wilkinson, escreveríamos esse modelo como negligenciando o lado esquerdo (para um resultado binomial, usaríamos uma função de logit link). Precisamos apenas de dois vetores fictícios para codificar os níveis (como presente / ausente para uma observação em particular); portanto, teremos 5 coeficientes de regressão, além de um termo de interceptação. Isso pode ser resumido comoy ~ x + g + x:g
g
onde representa uma matriz indicadora que codifica o nível de .I g
No Matlab, usando o exemplo online, eu faria o seguinte:
Não incluí uma coluna de uns para a interceptação, pois ela é incluída por padrão. A matriz de design parece
e você pode ver que os termos de interação são apenas codificados como produto da
x
coluna correspondente deg
(g = 2 eg = 3, pois não precisamos do primeiro nível).Os resultados são apresentados abaixo, como coeficientes, erros padrão, estatística e valor-p (da
stats
estrutura):Agora, o teste da interação pode ser feito calculando a diferença de desvio do modelo completo acima e um modelo reduzido (omitindo o termo de interação, que são as duas últimas colunas da matriz de design). Isso pode ser feito manualmente ou usando a
lratiotest
função que fornece o teste de hipótese da razão de verossimilhança. O desvio para o modelo completo é 4.3122 (dev
), enquanto para o modelo sem interação é 6.4200 (eu useiglmfit(X(:,1:3), [y n], 'binomial', 'link', 'probit');
), e o teste LR associado tem dois graus de liberdade (a diferença no número de parâmetros entre os dois modelos). Como o desvio em escala é apenas duas vezes a probabilidade de log para GLMs, podemos usaronde a estatística é distribuída como a com 2 df (o valor crítico é então 5,9915, consulte ). O resultado indica um resultado não significativo: Não podemos concluir a existência de uma interação entre e na amostra observada.χ2
chi2inv(0.95, 2)
x
g
Eu acho que você pode concluir as etapas acima em uma função conveniente de sua escolha. (Observe que o teste LR pode ser feito manualmente em muito poucos comandos!)
Eu verifiquei esses resultados com relação à saída R, que é dada a seguir.
Aqui está o código R:
Aqui estão os resultados, para os coeficientes no modelo completo,
Para a comparação dos dois modelos aninhados, usei os seguintes comandos:
que produz a seguinte "tabela de desvio":
fonte