【发布时间】:2016-07-11 04:44:02
【问题描述】:
我正在使用以下数据使用 locfit 回归,并且对如何计算残差感到困惑。
http://pastebin.com/2iLaSxQD 存储为station.means(我将文本文件称为January_raw_means.txt)
b <- read.table("./January_raw_means.txt", sep = "", header = TRUE)
station.means <- apply(b, 2, as.numeric)
# Above is to store it as it is found within the original code.
我使用以下代码调用 locfit:
locfit.regression <- locfit(SD ~ Tmean + Elevation + Longitude + Latitude,
alpha = 0.3,
data = data.frame(station.means), maxk = 150)
然后使用这个调用残差:
locfit.residuals <- residuals(locfit.regression)
第一个站点(数据行)的值为:
> locfit.residuals[1]
[1] 2.529492
但是,拟合值是
> fitted(locfit.regression, type = "fit")[1]
[1] 18.68174
但是观察到的值是:
> station.means[1, "SD"]
[1] 26.62326
造成这种差异的原因是什么?我尝试找到一个与从残差 + 拟合计算的值相对应的观察值,但没有骰子。甚至尝试更改最后几位以防四舍五入。
> 2.529492 + 18.68174
[1] 21.21123
> which(station.means == 21.21123)
integer(0)
> which((station.means >= 21.21120) & (station.means <= 21.21125))
integer(0)
发生了什么事?
【问题讨论】:
-
显然
station.means[[1]]不是文本文件。发布创建 R 数据对象的代码,或上传 dput(station.mean[[1]] ) 的输出` -
按照要求做了,变量名更清楚了。
-
如果没有看到所有的 station.means[1, ],我们无法确定其中一个协变量中没有 NA 值,因此您可能没有真正比较正确的值。如果您希望我们相信您发现了值得调查的错误,请发布有关数据和模型拟合的更多详细信息。
-
问题实际上出在我认为没有必要发布的 for 循环中。我正在编辑原始问题以突出显示该问题(或者最好将其发布为答案?)
-
当一个无法用于构建答案的问题发布的答案时,我感到很生气。您应该编辑问题,以便它提出一个可以回答的问题。如果你选择然后回答那很好。
标签: r regression