我想评估我正在研究的逻辑回归模型的拟合优度。我做了很多研究,碰巧找到似然比检验、卡方检验、Hosmer 和 Lemeshow 检验以及几个 R2 测量(如 Nagelkerke R2、Cox 和 Snell R2 和 Tjuf R2 测量)以评估整体优度适合我的模型。
我还了解到,提供 Hosmer-Lemeshow 测试的有价值结果的有效性和准确性正在争论中,因为组数(测试参数之一)的选择是任意的,不同数量的组可以导致完全不同的结果,所以我想这不是评估该模型拟合优度的可行选择(如此处所述)。
我不是统计学家,而且我对这些主题还很陌生,所以所有这些研究都给我带来了很多困惑,所以如果有人能帮助我了解我应该运行什么样的拟合测试,我将不胜感激以及如何让它们在 R 中运行。
该模型目前有 11 个预测变量,因变量 ( Successful) 是合乎逻辑的。只有一个预测变量具有数值 ( AvgUpperCharsPPost),而其他预测变量是分类变量 ( Weekday, GMTHour, TitleLength, BodyLength, UserReputation) 或逻辑变量 ( CodeSnippet, URL, Tag, SentimentPositiveScore, SentimentNegativeScore)。该数据集有 93k 个观测值。
用于运行逻辑回归的公式是:
logitA1 <- glm(formula = Successful ~ CodeSnippet + I(Weekday=='Weekend') +
I(GMTHour=='Afternoon') + I(GMTHour=='Evening') +
I(GMTHour=='Night') + I(BodyLength=='Medium') +
I(BodyLength =='Long') + I(TitleLength=='Medium') +
I(TitleLength=='Long')+ SentimentPositiveScore +
SentimentNegativeScore + NTag + AvgUpperCharsPPost + URL +
IsTheSameTopicBTitle + I(UserReputation=='Low') +
I(UserReputation=='Established') + I(UserReputation=='Trusted'),
data=dsA1, family=binomial())
我还了解到,运行卡方检验意味着将模型中的拟合值与观察到的计数(数据集中的成功列?)进行比较,并且可以通过使用chisq.testR 中的函数来计算,并且似然比检验是使用lrtest最新包中的功能或替代logLik功能完成。这些信息是否正确?我应该如何解释这些函数的输出?
另外,我尝试使用以下代码获得 ROC 曲线:
dsA1 <-read.csv2("A1 secondStudyNoComments.csv")
prob=predict(logitA1.1, type=c("response"))
dsA1$prob=prob
g <- roc(Successful~prob, data=dsA1)
plot(g)
结果如下:
Call:
roc.formula(formula = Successful ~ prob, data = dsA1)
Data: prob in 60865 controls (Successful FALSE) < 32149 cases (Successful TRUE).
Area under the curve: 0.6499
我应该如何解释这些结果?
