如何在R中获取我的数据的Loess函数?

时间:2014-03-16 21:31:49

标签: r plot nonlinear-functions

我有一些数据,我使用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")

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

如何获得此回归的功能? 例如:responseTime = 68 + 45 * users。

感谢。

2 个答案:

答案 0 :(得分:1)

您可以使用代码中的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))

但是,您的数据可能会显示异方差(非常数方差),并可能显示非正常残差。您可能想检查是否是这种情况。如果是,则可以尝试使用包rlm中的MASS或广义线性模型glm等稳健的线性拟合过程。我不是专家,也许是其他人或Cross Validated可以提供更好的帮助。

答案 1 :(得分:0)

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