R - 根据现有 lm 使用预测函数确定新数据的拟合优度
R - Determine goodness of fit of new data with predict function based on existing lm
我正在尝试将现有模型应用于新数据集。我试着用一个例子来解释它。我想知道确定适合度的优雅方法是什么样的。
基本上,我 运行 进行回归并获得模型。使用汇总函数,我获得了通常的输出,例如调整后的 R 平方、p 值等。
model.lm <- lm(Sepal.Length ~ Petal.Length, data = iris[1:75,])
summary(model.lm)
现在我想运行新数据的预测函数,我很想知道模型对新数据的表现如何。
pred.dat <- predict(model.lm, newdata = iris[76:150,])
我想问一下如何使用新数据获得预测值的调整 R 平方。例如,是否有类似 summary 功能的东西?理想情况下,我想找出基于新数据获得现有模型拟合优度的最佳实践。
非常感谢
可以将R-squared
的公式转化为函数,如:
r_squared <- function(vals, preds) {
1 - (sum((vals - preds)^2) / sum((vals - mean(preds))^2))
}
# Test
> r_squared(iris[76:150,]$Sepal.Length, pred.dat)
#[1] 0.5675686
基于此函数,使用正确的公式,我们还可以将 adjusted R-squared
定义为:
r_squared_a <- function(vals, preds, k) {
1 - ((1-r_squared(vals, preds))*(length(preds)-1))/(length(preds) - k - 1)
}
其中 k
是预测变量的数量,因此:
> r_squared_a(iris[76:150,]$Sepal.Length, pred.dat, 1)
#[1] 0.5616448
我正在尝试将现有模型应用于新数据集。我试着用一个例子来解释它。我想知道确定适合度的优雅方法是什么样的。
基本上,我 运行 进行回归并获得模型。使用汇总函数,我获得了通常的输出,例如调整后的 R 平方、p 值等。
model.lm <- lm(Sepal.Length ~ Petal.Length, data = iris[1:75,])
summary(model.lm)
现在我想运行新数据的预测函数,我很想知道模型对新数据的表现如何。
pred.dat <- predict(model.lm, newdata = iris[76:150,])
我想问一下如何使用新数据获得预测值的调整 R 平方。例如,是否有类似 summary 功能的东西?理想情况下,我想找出基于新数据获得现有模型拟合优度的最佳实践。
非常感谢
可以将R-squared
的公式转化为函数,如:
r_squared <- function(vals, preds) {
1 - (sum((vals - preds)^2) / sum((vals - mean(preds))^2))
}
# Test
> r_squared(iris[76:150,]$Sepal.Length, pred.dat)
#[1] 0.5675686
基于此函数,使用正确的公式,我们还可以将 adjusted R-squared
定义为:
r_squared_a <- function(vals, preds, k) {
1 - ((1-r_squared(vals, preds))*(length(preds)-1))/(length(preds) - k - 1)
}
其中 k
是预测变量的数量,因此:
> r_squared_a(iris[76:150,]$Sepal.Length, pred.dat, 1)
#[1] 0.5616448