评估分数 Logit 模型 - McFadden 的 Adjusted R^2
Evaluating the Fractional Logit Model - McFadden's Adjusted R^2
我正在估计一个模型,其中因变量是分数(介于 0 和 1 之间)。我使用了 Stata 14.1
中的命令
glm y x, link(logit) family(binomial) robust nolog
以及
fracreg logit y x, vce(robust)
这两个命令提供相同的结果。
现在我想评估结果,最好使用 McFadden 的调整后 r^2。然而,在我 运行 回归之后,fitstat
和 estat gof
似乎都不起作用。我收到错误消息 fitstat does not work with the last model estimated
和 not available after fracreg r(321)
。
你们中有人知道 McFadden 调整后的 r^2 的替代命令吗?
还是我必须使用不同的评估方法?
fracreg
输出中出现的伪 R 平方似乎是 McFadden 的伪 R 平方。我不确定这是否与您提到的 McFadden 的 adjusted r^2 相同。
根据@nick-cox 的 post on Stata.com 的建议,您可以通过调查 maximize
命令看到它是 McFadden 的伪 R 平方。在 maximize
的参考手册中,第 1478 页(Stata 14)它说:
Let L1 be the log likelihood of the full model (that is, the log-likelihood value shown on the output), and let L0 be the log likelihood of the “constant-only” model. ... The pseudo-R2 (McFadden 1974) is defined as 1 - L1 / L0. This is simply the log likelihood on a scale where 0 corresponds to the “constant-only” model and 1 corresponds to perfect prediction for a discrete model (in which case the overall log likelihood is 0).
如果这是您要查找的内容,可以使用
提取此值
fracreg logit y x, vce(robust)
scalar myRsquared = e(r2_p)
要调整 McFadden 的 R^2,您只需从小数部分的分子中的完整模型对数似然减去预测变量的数量。公式为here。请注意,您可能会得到负值。
您可以这样做:
set more off
webuse set http://fmwww.bc.edu/repec/bocode/w
webuse wedderburn, clear
/* (1) Fracreg Way */
fracreg logit yield i.site i.variety, nolog
di "Fracreg McFadden's Adj. R^2:" %-9.3f 1-(e(ll)-e(k))/(e(ll_0))
/* (2) GLM Way */
glm yield, link(logit) family(binomial) robust nolog // intercept only model
local ll_0 = e(ll)
glm yield i.site i.variety, link(logit) family(binomial) robust nolog // full model
di "McFadden's Adj. R^2: " %-9.3f 1-(e(ll)-e(k))/`ll_0'
GLM R^2 会略有不同,因为最大化算法不同,因此可能性也会不同。我不确定如何调整 ML 选项以使其完全匹配。
您可以使用 fitstat 起作用的命令验证我们是否正确执行操作:
sysuse auto, clear
logit foreign price mpg
fitstat
di "McFadden's Adj. R^2: " %-9.3f 1-(e(ll)-e(k))/(e(ll_0))
我正在估计一个模型,其中因变量是分数(介于 0 和 1 之间)。我使用了 Stata 14.1
中的命令glm y x, link(logit) family(binomial) robust nolog
以及
fracreg logit y x, vce(robust)
这两个命令提供相同的结果。
现在我想评估结果,最好使用 McFadden 的调整后 r^2。然而,在我 运行 回归之后,fitstat
和 estat gof
似乎都不起作用。我收到错误消息 fitstat does not work with the last model estimated
和 not available after fracreg r(321)
。
你们中有人知道 McFadden 调整后的 r^2 的替代命令吗? 还是我必须使用不同的评估方法?
fracreg
输出中出现的伪 R 平方似乎是 McFadden 的伪 R 平方。我不确定这是否与您提到的 McFadden 的 adjusted r^2 相同。
根据@nick-cox 的 post on Stata.com 的建议,您可以通过调查 maximize
命令看到它是 McFadden 的伪 R 平方。在 maximize
的参考手册中,第 1478 页(Stata 14)它说:
Let L1 be the log likelihood of the full model (that is, the log-likelihood value shown on the output), and let L0 be the log likelihood of the “constant-only” model. ... The pseudo-R2 (McFadden 1974) is defined as 1 - L1 / L0. This is simply the log likelihood on a scale where 0 corresponds to the “constant-only” model and 1 corresponds to perfect prediction for a discrete model (in which case the overall log likelihood is 0).
如果这是您要查找的内容,可以使用
提取此值fracreg logit y x, vce(robust)
scalar myRsquared = e(r2_p)
要调整 McFadden 的 R^2,您只需从小数部分的分子中的完整模型对数似然减去预测变量的数量。公式为here。请注意,您可能会得到负值。
您可以这样做:
set more off
webuse set http://fmwww.bc.edu/repec/bocode/w
webuse wedderburn, clear
/* (1) Fracreg Way */
fracreg logit yield i.site i.variety, nolog
di "Fracreg McFadden's Adj. R^2:" %-9.3f 1-(e(ll)-e(k))/(e(ll_0))
/* (2) GLM Way */
glm yield, link(logit) family(binomial) robust nolog // intercept only model
local ll_0 = e(ll)
glm yield i.site i.variety, link(logit) family(binomial) robust nolog // full model
di "McFadden's Adj. R^2: " %-9.3f 1-(e(ll)-e(k))/`ll_0'
GLM R^2 会略有不同,因为最大化算法不同,因此可能性也会不同。我不确定如何调整 ML 选项以使其完全匹配。
您可以使用 fitstat 起作用的命令验证我们是否正确执行操作:
sysuse auto, clear
logit foreign price mpg
fitstat
di "McFadden's Adj. R^2: " %-9.3f 1-(e(ll)-e(k))/(e(ll_0))