3

R で実行している回帰の擬似 R2 値を提供するように求められました。vglm コマンドを使用して、患者の肺動脈ひずみ、脈圧、および最大値を考慮して、4 カテゴリの患者の生活の質の数値で回帰を実行しています。肺動脈圧。

ただし、vglm は Residual Deviance のみを提供し、Null Deviance は提供しません。以前の投稿から調べた疑似 R2 適合度の測定値はすべて、null 逸脱度を必要とします。vglm からヌル逸脱を取得または計算する方法はありますか? https://www.stat.auckland.ac.nz/~yee/VGAM/doc/VGAMrefcard.pdf

ありがとう、ショーナ

> summary(fit)

Call:
vglm(formula = resp_var ~ Strain + PP + Pmax, family = multinomial, data = DF)

Pearson Residuals:
                   Min       1Q    Median        3Q    Max
log(mu[,1]/mu[,4]) -3.8849 -0.45457  0.237302  0.456967 4.9936
log(mu[,2]/mu[,4]) -2.7173 -0.45528 -0.255479  0.601062 2.1737
log(mu[,3]/mu[,4]) -2.7175 -0.15174 -0.096334 -0.041271 6.6040

Coefficients:
               Estimate Std. Error    z value
(Intercept):1 -18.37926   1609.958 -0.0114160
(Intercept):2 -22.19514   1609.958 -0.0137862
(Intercept):3 -24.72028   1609.958 -0.0153546
Strain:1      286.66750   3989.303  0.0718590
Strain:2      285.95551   3989.303  0.0716806
Strain:3      284.37742   3989.303  0.0712850
PP:1           -0.87220     67.951 -0.0128356
PP:2           -0.77133     67.951 -0.0113512
PP:3           -0.93263     67.951 -0.0137250
Pmax:1          0.15845     28.841  0.0054941
Pmax:2          0.17548     28.841  0.0060843
Pmax:3          0.28930     28.841  0.0100307

Number of linear predictors:  3 

Names of linear predictors: 
log(mu[,1]/mu[,4]), log(mu[,2]/mu[,4]), log(mu[,3]/mu[,4])

Dispersion Parameter for multinomial family:   1

Residual deviance: 102.8416 on 222 degrees of freedom

Log-likelihood: -51.42081 on 222 degrees of freedom

Number of iterations: 19 
4

1 に答える 1

2

ヌル逸脱度は、ヌル (インターセプトのみ) モデルの残余逸脱度ですresp_var ~ 1。したがって、McFadden の疑似 R 二乗を計算するには、次のようにします。

# generate sample data
set.seed(101)
resp_var = t(rmultinom(100, 1, rep(0.25, 4)))
DF = data.frame(Strain = rnorm(100), PP = rnorm(100), Pmax = rnorm(100))

# fit models
m1 <- vglm(formula = resp_var ~ Strain + PP + Pmax, family = multinomial, data = DF)
null <- vglm(formula = resp_var ~ 1, family = multinomial, data = DF)

# McFadden's pseudo-R^2
print(pseudo_R2 <- 1 - deviance(m1) / deviance(null))

# [1] 0.05300655

これは、たとえば次のように一致しmlogitます。

library(mlogit)
DF$cat_resp = factor(apply(resp_var, 1, function(.) which(. == 1) ) )
mDf <- mlogit.data(DF, choice = "cat_resp", shape = "wide")
summary(mlogit(cat_resp ~ 1|Strain + PP + Pmax, data = mDf))

# Call:
# mlogit(formula = cat_resp ~ 1 | Strain + PP + Pmax, data = mDf, 
#    method = "nr", print.level = 0)
# ...
# ...
# Log-Likelihood: -130.03
# McFadden R^2:  0.053007 
# Likelihood ratio test : chisq = 14.557 (p.value = 0.10386)
于 2013-09-26T23:00:47.427 に答える