0

根据同时点击的用户,我有关于网站响应时间的数据。

例如:
10 个用户同时点击有(平均)响应时间 300 毫秒
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")

这是我的情节图像:

在此处输入图像描述

我的问题是:

  1. 如何在同一图中绘制我的非线性函数以将其与其他线进行比较?
    例如:response_time (f(x)) = 30*users^2。

  2. 还有如何对函数线loess和我的函数进行预测并将它们显示到图中,例如:如果我的数据直到 250 个用户,则进行预测直到 500 个用户

4

2 回答 2

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))
于 2014-02-06T11:52:40.570 回答
0

了解基础函数的绘制曲线的另一种解决方案是 function 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.
于 2014-02-06T12:11:42.147 回答