0

我有一些数据,我使用 R 在绘图上绘制它们。之后,我绘制关于该数据的 loess 函数。这是代码:

data <- read.table("D:/data.csv", header=TRUE, sep=",", na.strings="NA", dec=".", strip.white=TRUE)
ur <- subset(data, select = c(users,responseTime))
ur <- ur[with(ur, order(users, responseTime)), ]

plot(ur, xlab="Users", ylab="Response Time (ms)")
lines(ur)
loess_fit <- loess(responseTime ~ users, ur)
lines(ur$users, predict(loess_fit), col = "blue")

这是我的情节图像: http://tinypic.com/r/2ziqa2x/8

我怎样才能得到这个回归的功能?例如:响应时间 = 68 + 45 * 用户。

谢谢。

4

2 回答 2

1

您可以使用loess_fit代码中的对象来预测响应时间。如果你想估计 230 个用户的平均响应时间,你可以这样做:

predict(loess_fit, newdata=data.frame(users=230))

这是一篇关于这个主题的有趣的博客文章。

编辑:如果您想对数据之外的值进行预测,您需要一个理论或进一步的假设。最简单的假设是线性拟合,

lm_fit <- lm(responseTime ~ users, data=ur)
predict(lm_fit, newdata=data.frame(users=400))

但是,您的数据可能显示异方差(非恒定方差)并且可能显示非正态残差。您可能想检查是否是这种情况。如果是这样,那么一个稳健的线性拟合过程(例如rlm来自 packageMASS的)或广义线性模型glm可能值得一试。我不是这方面的专家,也许其他人或Cross Validated可以提供更好的帮助。

于 2014-03-16T22:27:29.343 回答
0

TeachingDemos 包中的loess.demo函数显示了黄土拟合的逻辑。这可以帮助您了解正在发生的事情以及为什么没有简单的预测功能。但是,对于预测,有一个predict函数可以与 loess 拟合来创建预测。您还可以找到预测 x 的特定值的线性方程(但对于您可能想要预测的每个 x 值,它会有所不同)。

于 2014-03-17T01:31:01.417 回答