如何计算 R 中的 R 平方 ( ) 统计量和/或函数输出?例如对于这个数据:loess
predict
cars.lo <- loess(dist ~ speed, cars)
cars.lp <- predict(cars.lo, data.frame(speed = seq(5, 30, 1)), se = TRUE)
cars.lp
fit
有两个用于模型和se.fit
标准误差的数组。
如何计算 R 中的 R 平方 ( ) 统计量和/或函数输出?例如对于这个数据:loess
predict
cars.lo <- loess(dist ~ speed, cars)
cars.lp <- predict(cars.lo, data.frame(speed = seq(5, 30, 1)), se = TRUE)
cars.lp
fit
有两个用于模型和se.fit
标准误差的数组。
我的第一个想法是计算伪度量,如下所示:
ss.dist <- sum(scale(cars$dist, scale=FALSE)^2)
ss.resid <- sum(resid(cars.lo)^2)
1-ss.resid/ss.dist
在这里,我们得到一个值 0.6814984 ( ),接近从GAM获得的值: cor(cars$dist, predict(cars.lo))^2
library(mgcv)
summary(gam(dist ~ speed, data=cars))
这似乎也与 Sloess
函数将返回的内容一致(我没有 S,所以我无法自己检查) as Multiple R-squared
。例如,使用airquality
R 数据集,它看起来像air
Chambers 和 Hastie 在“白皮书”中使用的数据(在线帮助中引用的loess
数据;但这不是完全相同的数据集),我得到了一个使用上述公式,这与钱伯斯和哈斯蒂的报道非常一致。
我应该注意到,我没有找到任何专门处理这个问题的论文(好吧,那只是一个快速的谷歌搜索),而且威廉克利夫兰在他的论文中没有谈到类似的度量。
但是,我想知道您可以自由选择平滑度(或 window span
)是否不排除使用基于的度量。