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 * 사용자^2.

    또한 기능 loess의 라인 내 기능에 대한 예측을하고, 플롯, 예에게 보여하는 방법에
  2. : 나는 250 명의 사용자까지 데이터가있는 경우, 500 사용자

+0

시작 행 (x)는 F중인 예에서
는 30X^= 2. 재현 할 수있는 예제를 제공하면 질문에 대한 대답이 더 쉬워집니다. 이 경우 샘플 데이터를 사용하면 도움이됩니다. 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

답변 해 주셔서 감사합니다. 비선형 회귀 모형이 있나요? 예를 들면, 선형 (선형)일까요? – Abraham

+0

녹색 선은 황토 기능입니다. 데이터에 더 잘 맞는 다른 함수가 있습니까? – Abraham

+0

'lm'에서 비선형 항을'I()'에 래핑하여 사용할 수 있습니다. 예를 들어'responseTime ~ I (users^2)'와 같이 입력하십시오. –

0

기본 기능을 알고있는 곡선을 그릴 수있는 또 다른 솔루션은 기능 curve입니다. SO

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.