我有一些数据,我用R将它们画在一张图上,然后,我画出关于这些数据的黄土函数。代码如下:
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")这是我的图:

怎样才能得到这个回归的函数呢?例如: responseTime = 68 + 45 *个用户。
谢谢。
发布于 2014-03-17 06:27:29
您可以使用代码中的loess_fit对象来预测响应时间。如果你想估算230个用户的平均响应时间,你可以这样做:
predict(loess_fit, newdata=data.frame(users=230))这里有一个关于这个主题的有趣的blog post。
编辑:如果您想对数据之外的值进行预测,则需要一个理论或进一步的假设。最简单的假设是线性拟合,
lm_fit <- lm(responseTime ~ users, data=ur)
predict(lm_fit, newdata=data.frame(users=400))但是,您的数据可能会显示异方差(非常量方差),并且可能会显示非正态残差。您可能需要检查是否存在这种情况。如果是,那么一个健壮的线性拟合过程,比如MASS软件包中的rlm,或者一个广义的线性模型glm可能值得一试。我不是这方面的专家,也许其他人或Cross Validated可以提供更好的帮助。
发布于 2014-03-17 09:31:01
TeachingDemos包中的loess.demo函数显示了loess背后的逻辑。这可以帮助您了解发生了什么,以及为什么没有简单的预测功能。但是,对于预测,有一个与黄土拟合一起使用的predict函数来创建预测。您还可以找到预测特定x值的线性方程(但对于您想要预测的每个x值,它将是不同的)。
https://stackoverflow.com/questions/22443302
复制相似问题