我正在尝试验证一个具有连续输出的广义线性模型的性能。通过研究,我发现验证连续模型性能的最有效方法是使用R平方、调整后的R平方和RMSE方法(如果有误请纠正),而不是用于二项模型的混淆矩阵方法(准确率、精确度、F1等)。
如何根据实际值与预测值找到我的模型的平方值?下面是我的glm模型的代码,数据已分为训练集和测试集。
我对此很新,所以欢迎建议。
#GENERALISED LINEAR MODELLR_swim <- glm(racetime_mins ~ event_month +gender + place + clocktime_mins +handicap_mins + Wind_Speed_knots+ Air_Temp_Celsius +Water_Temp_Celsius +Wave_Height_m, data = SwimmingTrain, family=gaussian(link = "identity")) summary(LR_swim)#Predict Race_Time pred_LR <- predict(LR_swim, SwimmingTest, type ="response")pred_LR
回答:
这种性能测量可以通过一行简单的R代码来实现。假设有一些虚拟数据:
preds <- c(1.0, 2.0, 9.5)actuals <- c(0.9, 2.1, 10.0)
均方误差(MSE)简单地为
mean((preds-actuals)^2)# [1] 0.09
mean(abs(preds-actuals))# [1] 0.2333333
并且均方根误差(RMSE)简单地是MSE的平方根,即:
sqrt(mean((preds-actuals)^2))# [1] 0.3
后两种测量方法的额外优势在于它们与原始数据的尺度相同(MSE的情况则不然)。