我正在使用线性回归运行GLM,然后使用预测使响应适合我的测试数据,但是问题是我正在获取概率,而且我不知道如何将这些概率转换为真实值。 / p>
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
答案 0 :(得分:0)
据我所知,鉴于您使用的是 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
确保您在预测中得到这一点。