r语言 - nnet 中的 P 值:multinom() 。提取的 P 值 Wald 检验,但我如何通过 LIkehood 比率提取它?



我得到了一个多项式模型,如下所示:

我得到了一堆观察结果(患者(,分为五类中的一类:对照组、严重组、低组、严重和低组。

因此,我试图用包nnet拟合一个多项式模型,并提取Wald测试p值如下:

multinom_wout20_1 = multinom(formula_wout20_base,data=wout_20_training, maxit=10000)
summary(multinom_wout20_1)

系数:

exp(coef(multinom_wout20_1))

Z值

z_wout <- summary(multinom_wout20_1)$coefficients/summary(multinom_wout20_1)$standard.errors
z_wout

我们得到p值:

# 2-tailed z test
p_wout <- (1 - pnorm(abs(z_wout), 0, 1)) * 2
p_wout

然后我将它们传递给一个自定义变量,将它们视为字母(更直观(

## Function to Pass our values to letters.
sign_levels_df_letter <- function(df) {
df <- ifelse(df >.80, "Z", ifelse(df >.50, "FFF",
ifelse( df >.30, "FF",
ifelse(df >.10 , "F", 
ifelse(df <= 0.0001, "AAA",
ifelse(df <= .0005,"AA+",
ifelse(df <= .001,"AA",
ifelse(df <= .005, "A+",
ifelse (df<= .01, "A",
ifelse(df<= .05, "A-",
ifelse(df <=.07, "B",
    ifelse(df <=.10, "C", NA

))))))))))))


return(df)
}
aux_pwout0 = sign_levels_df_letter(p_wout) ; aux_pwout0

如果我使用包stargazer,我想这是相同的(因为它们的符号学与*、***和**一致(

library(stargazer)
stargazer(multinom_wout20_1, type= "text" )   #   "html", out="multi1.htm")

但正如这个线程的响应所示:

R中的多项式逻辑回归:nnet包中的多项式结果与mlogit包中的mlogit不同?

使用Wald而不是LogLikehood存在一些问题。?如何从我的模型中获得似然比测试p值

我不介意对我的数据使用其他函数,但mloget包中的mlogit要求我将数据传递到宽格式中,这并不像看起来那么容易,但我想我可以从中提取

R: 如何为多项式logit格式化我的数据?

如果最后一个函数的某个用户可以告诉我是否有一些秘密函数可以自动执行,这也解决了我的问题。

好吧,我明白了。

从这篇文章中,我提取了一个函数来获得nnet:multinom模型中Likehood的p值,我也将其作为响应发布。

https://stackoverflow.com/a/60835647/10465155

你可以在下面看到它。


likehoodmultinom_p <- function(model_lmm) 
{
i <- 1
variables <-c("No funciona")
values <- c("No funciona") 

for (var in model_lmm$coefnames[-1]) { 
variables[i] =paste(var)
values[i]= lrtest(model_lmm, var)[[5]][2]
i=i+1
## Contributed to stack at: 
}
return (data.frame(variables,values))
}

最新更新