R의 산포도에 비선형 추세선을 추가하는 방법은 무엇입니까? [닫은]


답변:


34

데이터를 만들어 봅시다.

n <-100
x <-seq (n)
y <-rnorm (n, 50 + 30 * x ^ (-0.2), 1)
데이터 <-data.frame (x, y)

다음은 황토 선 또는 비선형 회귀 분석에 적합하게하는 방법을 보여줍니다.

플롯 (y ~ x, 데이터)

# 황토 라인에 적합
loess_fit <-loess (y ~ x, 데이터)
라인 (Data $ x, 예측 (loess_fit), col = "blue")

# 비선형 회귀에 적합
nls_fit <-nls (y ~ a + b * x ^ (-c), 데이터, 시작 =리스트 (a = 80, b = 20, 
    c = 0.2))
라인 (데이터 $ x, 예측 (nls_fit), col = "red")

청크 export_plot 플롯


1
음모 문제가 발생하는 사람들을 위해 음모에 대해이 조언 이 유용합니다
tflutre

23

ggplot2(기본 R과 격자 다음에 R의 세 번째 플로팅 시스템) 을 사용하면 다음 과 같이됩니다.

library(ggplot2)
ggplot(Data, aes(x,y)) + geom_point() + geom_smooth()

음모

데이터를 부드럽게 만드는 방법을 선택할 수 있습니다 ?stat_smooth. 자세한 내용 및 예를 참조하십시오 .


멋진 그래프와 설명! 그러나 그림자 영역이란 무엇입니까?
Darwin PC

3
음영 영역은 스무딩 된 선 주위의 신뢰 구간입니다. Vincent가 말한대로 stat_smooth입력하여 R 도움말 파일에 액세스하여 직접 확인할 수 있습니다 ?stat_smooth. :-)
저는

9

원하는 것을 정확히 알지 못하면 lattice패키지를 사용하여 쉽게 황토 곡선을 추가 할 수 있습니다 type="smooth". 예를 들어

> library(lattice)
> x <- rnorm(100)
> y <- rnorm(100)
> xyplot(y ~ x, type=c("smooth", "p"))

help("panel.loess")예를 들어, 사용하는 다항식의 정도를 변경하기 위해 황토 피팅 루틴으로 전달할 수있는 인수를 참조하십시오 .

여기에 이미지 설명을 입력하십시오

최신 정보

황토 곡선의 색상을 변경하려면 작은 함수를 작성하여 panel매개 변수로 xyplot다음 과 같이 전달하면됩니다 .

x <- rnorm(100)
y <- rnorm(100)

panel_fn <- function(x, y, ...)
{
    panel.xyplot(x, y, ...)
    panel.xyplot(x, y, type="smooth", col="red", ...)
}

xyplot(y ~ x, panel=panel_fn)

여기에 이미지 설명을 입력하십시오


선을 어떻게 다른 색으로 만드시겠습니까?
EngrStudent-복직 모니카

1
@EngrStudent 답변을 업데이트했습니다.
Jason Morgan

8

귀하의 질문은 약간 모호하므로 귀하의 문제가 무엇인지에 대해 몇 가지 가정을하겠습니다. 산점도를 작성하고 데이터를 조금 설명하면 도움이 될 것입니다. 내가 잘못된 가정을하고 있다면 내 대답을 무시하십시오.

첫째, 데이터는 비선형이라고 합리적으로 믿는 일부 프로세스를 설명 할 수 있습니다. 예를 들어, 차량이 급제동과 급격한 속도로 정지하기 위해 거리에서 회귀를하려고하는 경우 물리학은 차량의 에너지가 속도가 아닌 속도의 제곱에 비례한다고 알려줍니다 그 자체. 따라서이 경우 다항 회귀 분석을 시도하고 (R에서는) 다음과 같은 작업을 수행 할 수 model <- lm(d ~ poly(v,2),data=dataset)있습니다. 다양한 비선형 성을 회귀 모델로 가져 오는 방법에 대한 많은 문서가 있습니다.

반면에 "흔들리는"선이 있는데 왜 흔들리는 지 모른다면, 좋은 출발점은 아마도 국부적으로 가중 된 회귀 또는 loessR 일 것입니다. 전체 데이터 세트와 달리 지역. "k 가장 가까운 이웃"버전을 상상하는 것이 가장 쉽습니다. 어느 지점에서든 곡선의 값을 계산할 때 관심 지점에 가장 가까운 k 지점을 찾아 평균을 구합니다. 황토는 그와 같지만 직선 평균 대신 회귀를 사용합니다. 이 model <- loess(y ~ x, data=dataset, span=...)경우 span변수가 스무딩 정도를 제어하는을 사용하십시오.

세 번째 손에 (손에))-트렌드에 대해 이야기하고 있습니까? 이것은 일시적인 문제입니까? 그렇다면 추세선과 통계적 유의성을 과도하게 해석하여 약간 신중해야합니다. 시계열의 추세는 "자동 회귀"프로세스에 나타날 수 있으며, 이러한 프로세스의 경우 프로세스의 임의성으로 인해 임의 노이즈가 발생하지 않는 경향이 생길 수 있으며 잘못된 통계적 유의성 테스트를 통해 중요하지 않은시기를 알 수 있습니다!


6

분산 그래프 샘플 점과 부드러운 곡선을 같은 그래프에두기 :

  library(graphics)
  ## Create some x,y sample points falling on hyperbola, but with error:
  xSample = seq(0.1, 1.0, 0.1)
  ySample = 1.0 / xSample
  numPts <- length(xSample)
  ySample <- ySample + 0.5 * rnorm(numPts) ## Add some noise

  ## Create x,y points for smooth hyperbola:
  xCurve <- seq(0.1, 1.0, 0.001)
  yCurve <- 1.0 / xCurve

  plot(xSample, ySample, ylim = c(0.0, 12.0))   ## Plot the sample points
  lines(xCurve, yCurve, col = 'green', lty = 1) ## Plot the curve

부드러운 곡선의 산점도

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.