繁体   English   中英

如何绘制我的函数以在R中绘制数据

[英]How to draw my function to plot with data in R

我有同时击中用户的有关响应时间的数据。

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

我将数据导入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位用户进行预测

如果知道要绘制的直线方程,则只需为预测定义一个变量:

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))

知道基本功能的另一种绘制曲线的方法是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.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM