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.