根据同时点击的用户,我有关于网站响应时间的数据。
例如:
10个用户同时命中(平均)响应时间300ms
20位用户 - > 450毫秒等
我在R中导入数据,然后从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")
这是我的情节图片:
我的问题是:
如何在同一图中绘制非线性函数,将其与其他线进行比较?
示例:response_time(f(x))= 30 * users ^ 2.
此外,如何对函数行loess
和我的函数进行预测,并将它们显示给图,例如:如果我有数据直到250个用户,则预测直到500个用户
答案 0 :(得分: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))
答案 1 :(得分: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.