我正在估算一个模型,其中因变量是一个分数(介于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的另一个命令? 或者我必须使用不同的评估方法吗?
答案 0 :(得分:1)
看来fracreg
输出中出现的伪R平方是McFadden的伪R平方。我不确定这是否与您提到的McFadden的调整后的 r ^ 2相同。
根据@ nick-cox post on Stata.com的建议,您可以看到McFadden的伪R-squared调查maximize
命令。在maximize
的参考手册,第1478页(Stata 14)中,它说:
令L1为完整模型的对数似然(即输出中显示的对数似然值),并且让L0为“仅恒定”模型的对数似然。 ...伪R2(McFadden 1974)定义为1-L1 / L0。这只是比例上的对数似然,其中0对应于“仅恒定”模型,1对应于离散模型的完美预测(在这种情况下,整体对数似然为0)。
如果您正在寻找此项,则可以使用
取出此值fracreg logit y x, vce(robust)
scalar myRsquared = e(r2_p)
答案 1 :(得分:0)
要调整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))