nnet 中的 P 值: multinom() 。提取的 P 值 Wald 检验,但我如何通过似然比提取它?
P-value in nnet: multinom() . P-value Wald test extracted, but ¿how i extract it by LIkehood ratio?
我得到了一个多项式模型,它是这样的:
我得到了一堆观察结果(患者),其中有 1 个是 5 个 类:对照、A_severe、A_low、B_severe 和 B_low.
所以我尝试用包 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")
但如本帖的回复所示:
使用 Wald 而不是 LogLikehood 存在一些问题。
¿如何从我的模型中获取似然比检验 p 值?
我不介意对我的数据使用其他函数,但是 mloget 包中的 mlogit 要求我将我的数据传递为宽格式,这并不像看起来那么容易,但我想我可以从中提取:
如果最后一个函数的某些用户可以告诉我是否有一些秘密函数可以自动执行此操作,那也可以解决我的问题。
好的,我知道了。
从这个 post 我提取了一个函数来获取 nnet:multinom 模型中似然的 p 值,我 post 它也作为响应。
你可以在下面看到它。
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))
}
我得到了一个多项式模型,它是这样的:
我得到了一堆观察结果(患者),其中有 1 个是 5 个 类:对照、A_severe、A_low、B_severe 和 B_low.
所以我尝试用包 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")
但如本帖的回复所示:
使用 Wald 而不是 LogLikehood 存在一些问题。 ¿如何从我的模型中获取似然比检验 p 值?
我不介意对我的数据使用其他函数,但是 mloget 包中的 mlogit 要求我将我的数据传递为宽格式,这并不像看起来那么容易,但我想我可以从中提取:
如果最后一个函数的某些用户可以告诉我是否有一些秘密函数可以自动执行此操作,那也可以解决我的问题。
好的,我知道了。
从这个 post 我提取了一个函数来获取 nnet:multinom 模型中似然的 p 值,我 post 它也作为响应。
你可以在下面看到它。
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))
}