Como obtenho valores de p usando a multinom
função nnet
package R
?
Eu tenho um conjunto de dados que consiste em "Escores de patologia" (ausente, leve, grave) como variável de resultado e dois efeitos principais: idade (dois fatores: vinte / trinta dias) e grupo de tratamento (quatro fatores: infectados sem ATB; infectados + ATB1; infectado + ATB2; infectado + ATB3).
Primeiro, tentei ajustar um modelo de regressão ordinal, que parece mais apropriado, dadas as características da minha variável dependente (ordinal). No entanto, a suposição de proporcionalidade de probabilidades foi violada severamente (graficamente), o que me levou a usar um modelo multinomial, usando o nnet
pacote.
Primeiro, escolhi o nível de resultado que preciso usar como categoria de linha de base:
Data$Path <- relevel(Data$Path, ref = "Absent")
Então, eu precisava definir categorias de linha de base para as variáveis independentes:
Data$Age <- relevel(Data$Age, ref = "Twenty")
Data$Treat <- relevel(Data$Treat, ref="infected without ATB")
O modelo:
test <- multinom(Path ~ Treat + Age, data = Data)
# weights: 18 (10 variable)
initial value 128.537638
iter 10 value 80.623608
final value 80.619911
converged
A saída:
Coefficients:
(Intercept) infected+ATB1 infected+ATB2 infected+ATB3 AgeThirty
Moderate -2.238106 -1.1738540 -1.709608 -1.599301 2.684677
Severe -1.544361 -0.8696531 -2.991307 -1.506709 1.810771
Std. Errors:
(Intercept) infected+ATB1 infected+ATB2 infected+ATB3 AgeThirty
Moderate 0.7880046 0.8430368 0.7731359 0.7718480 0.8150993
Severe 0.6110903 0.7574311 1.1486203 0.7504781 0.6607360
Residual Deviance: 161.2398
AIC: 181.2398
Por um tempo, não consegui encontrar uma maneira de obter os valores- para o modelo e as estimativas ao usar . Ontem, deparei-me com um post em que o autor apresentou uma questão semelhante em relação à estimativa de valores- para coeficientes ( como configurar e estimar um modelo de logit multinomial em R? ). Lá, um blogueiro sugeriu que é muito fácil obter valores- do resultado de , primeiro obtendo os valores seguinte maneira:nnet:multinom
summary
multinom
pt(abs(summary1$coefficients / summary1$standard.errors), df=nrow(Data)-10, lower=FALSE)
(Intercept) infected+ATB1 infected+ATB2 infected+ATB3 AgeThirty
Moderate 0.002670340 0.08325396 0.014506395 0.02025858 0.0006587898
Severe 0.006433581 0.12665278 0.005216581 0.02352202 0.0035612114
De acordo com Peter Dalgard, "Há pelo menos um fator 2 ausente para um valor bicaudal . Geralmente, é um erro usar a distribuição para a estatística ; para dados agregados, pode ser um erro muito grave ". De acordo com Brian Ripley, "também é um erro usar os testes de Wald para ajustes, pois eles sofrem dos mesmos problemas (potencialmente graves) que os ajustes binomiais. Use intervalos de confiança de probabilidade de perfil (para os quais o pacote fornece software) ou se você deve testar, testes de razão de verossimilhança (idem). "multinom
Eu só preciso conseguir valores- confiáveis .
fonte
nnet
aanova()
função 's .Respostas:
Que tal usar
Basicamente, isso seria baseado nos coeficientes estimados em relação ao erro padrão e usaria o teste az para testar uma diferença significativa com zero com base em um teste bicaudal. O fator dois corrige o problema mencionado por Peter Dalgaard acima (você precisa dele porque deseja um teste bicaudal, não um caudal) e usa um teste z, em vez de um t, para resolver o outro problema que você mencionou.
Você também pode obter o mesmo resultado (testes z de Wald) usando
Os testes de razão de verossimilhança são geralmente considerados mais precisos que os testes de Wald z (estes últimos usam uma aproximação normal, os testes de RL não) e podem ser obtidos usando
Se você deseja realizar testes posthoc de Tukey em pares, eles podem ser obtidos usando o
lsmeans
pacote, conforme explicado no meu outro post !fonte