我有一些数据,我使用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 * users。
感谢。
答案 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的每个值,它将是不同的。)