r语言 - 从 GLM 获取实际预测值



我正在运行线性回归的 GLM,然后我使用预测来拟合我的测试数据的响应,但问题是我得到了概率,我不知道如何将这些概率转换为实际值。

log<- glm(formula=stock_out_duration~lag_2_market_unres_dos+lag_2_percentage_bias_forecast_error + forecast,train_data_final,family = inverse.gaussian(link = "log"),maxit=100)
summary(log)

predict <- predict(log, test_data, type = 'response')
table_mat <- table(test_data$stock_out_duration)
table_mat

据我所知,鉴于您使用的是glm,没有魔术函数可以为您执行此操作。正如您所指出的,通常返回的是概率。您可以通过选择具有最大概率的结果,将概率转换为基础类别结果的预测。我同意为此使用单行功能会很好。

如果使用glmnet包,则可以获取此功能。

library(glmnet)
y = ifelse(rnorm(100) > 0, "red", "blue")
y = factor(y)
x = rnorm(100)
fit = glmnet(x, y, family="binomial") # use family="multinomial" if there are more than 2 categories in your factor
yhat = predict(fit, newx=x, type="class", s=0)

上面的yhat将是一个包含"red""blue"的向量。

请注意,type="class"是获取yhat中返回的类别结果的位。s=0意味着对用于获取预测的系数使用 lambda 惩罚值为零。您在问题中指出,您只是在进行普通回归,没有任何脊或套索样式的惩罚因素,因此s=0确保您在预测中得到这一点。

最新更新