0

我有关于在同一时间点击用户的网站响应时间的数据。如何绘制我的函数来绘制R中的数据

例如:
10用户击中同一时间有(平均)响应时间300ms的
20个用户 - > 450ms等

我导入R中的数据和I使从2点中的数据的曲线图(用户,响应时间)。 另外我使用函数loess在图上画出关于这些点的一条线。

这里,我写的代码:

users <- seq(5,250, by=5) 
responseTime <- c(179.5,234.0,258.5,382.5,486.0,679.0,594.0,703.5,998.0,758.0,797.0,812.0,804.5,890.5,1148.5,1182.5,1298.0,1422.0,1413.5,1209.5,1488.0,1632.0,1715.0,1632.5,2046.5,1860.5,2910.0,2836.0,2851.5,3781.0,2725.0,3036.0,2862.0,3266.0,3175.0,3599.0,3563.0,3375.0,3110.0,2958.0,3407.0,3035.5,3040.0,3378.0,3493.0,3455.5,3268.0,3635.0,3453.0,3851.5) 

data1 <- data.frame(users,responseTime) 
data1 

plot(data1, xlab="Users", ylab="Response Time (ms)") 
lines(data1) 

loess_fit <- loess(responseTime ~ users, data1) 
lines(data1$users, predict(loess_fit), col = "green") 

这里是我的阴谋的形象:

enter image description here

我的问题是:

  1. 如何画我的非线性函数在相同的情节比较它与其他线?
    示例:response_time(f(x))= 30 * users^2。

  2. 还怎么进行预测的功能loess行和我的功能,并将它们显示的情节,例如:如果我有,直到250层的用户数据,进行预测,直到500级的用户

+0

欢迎来到SO。如果您提供可重现的示例,问题更容易回答。在这种情况下,给我们一些样本数据的使用将是非常有帮助的。 http://stackoverflow.com/q/5963269/134830 –

+0

此外,目前还不清楚你在哪里挣扎。您是否遇到了拟合数据模型或将模型预测添加到图表的问题? –

+0

谢谢你的帮助。现在我改变我的问题来更清楚我想要什么。我也把我的数据。 – Abraham

回答

1

如果你知道你要绘制直线的方程,那么就定义一个变量为您预测:

predictedResponseTime <- 30 * users^2 
lines(users, predictedResponseTime) 

如果问题是要满足一条线,那么你需要调用一个建模功能。

由于loess是一个非参数模型,因此不适合用它来进行数据范围之外的预测。

在这种情况下,使用lm的简单(普通最小二乘)线性回归提供了合理的拟合。

model <- lm(responseTime ~ users) 

prediction <- data.frame(users = 1:500) 
prediction$responseTime <- predict(model, prediction) 
with(prediction, lines(users, responseTime)) 
+0

谢谢你的回答。是否有非线性回归模型,如lm(线性)? – Abraham

+0

绿线是黄土功能。是否有其他功能更适合数据? – Abraham

+0

你可以在'lm'中使用非线性项,把它们包装在'I()'中。例如'responseTime〜I(users^2)'。 –

0

知道底层函数绘制曲线的另一个解决方案是函数curve
在你的例子中f(x)= 30x^2:

plot(data1, xlab="Users", ylab="Response Time (ms)") 
lines(data1) 
lines(data1$users, predict(loess_fit), col = "green") 
curve(30*x^2,col="red", add=TRUE) #Don't forget the add parameter.