贝塔回归
您可以使用 beta 回归。我对这种类型的回归没有实际经验。但是,这可能是您的任务的正确方法。据我了解,选择链接功能是为了限制是的^∈ [ 0 , 1 ].
这是一个R 实现,文档说:
使用具有均值(取决于协变量上的链接函数)和精度参数(称为 phi)的参数化,通过最大似然拟合比率和比例的 beta 回归模型。
例子:
library("betareg")
data("GasolineYield", package = "betareg")
summary(GasolineYield$yield)
Min. 1st Qu. Median Mean 3rd Qu. Max.
0.0280 0.1165 0.1780 0.1966 0.2705 0.4570
br = betareg(yield ~ batch + temp, data = GasolineYield)
preds = predict(br, newdata=GasolineYield)
summary(preds)
Min. 1st Qu. Median Mean 3rd Qu. Max.
0.04571 0.10309 0.16364 0.19655 0.26429 0.50792
序数数据的回归模型
序数逻辑回归可以用于这个问题,因为类是有序的,多项分类不考虑类的顺序。在实践中,该算法不能扩展到许多类或许多观察,因为它的计算成本很高。
这是使用R 中的序数包将累积链接模型 (CLM) (例如比例赔率模型)拟合到数据的示例。
require("ordinal")
fm1 <- clm(rating ~ contact + temp, data=wine)
summary(fm1)
formula: rating ~ contact + temp
data: wine
link threshold nobs logLik AIC niter max.grad cond.H
logit flexible 72 -86.49 184.98 6(0) 4.01e-12 2.7e+01
Coefficients:
Estimate Std. Error z value Pr(>|z|)
contactyes 1.5278 0.4766 3.205 0.00135 **
tempwarm 2.5031 0.5287 4.735 2.19e-06 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Threshold coefficients:
Estimate Std. Error z value
1|2 -1.3444 0.5171 -2.600
2|3 1.2508 0.4379 2.857
3|4 3.4669 0.5978 5.800
4|5 5.0064 0.7309 6.850
带有逻辑链接函数的回归
正如 Ben Reiniger 在问题评论中所建议的那样,另一种选择是在回归模型中简单地使用 Logistic Link 函数。
一个例子是使用 xgboost 和 reg:logistic 作为目标函数。但是,许多库可能不支持这种行为,因为它们需要目标是 1 或 0。