가장 잘 맞는 라인이 있습니다. 가장 적합한 라인을 변경하지 않는 데이터 포인트가 필요합니다


15

피팅 라인에 대한 프레젠테이션을하고 있습니다. 간단한 선형 함수 와이=1x+b 있습니다. 내 선이 동일한 방정식에 가장 잘 맞는 분산 형 그림에 넣을 수있는 분산 된 데이터 포인트를 얻으려고합니다.

이 기술을 R 또는 Excel 중 더 쉬운 방법으로 배우고 싶습니다.


1
계수 집합이 포함 된 다중 회귀 분석 사례 (귀하의 계수가 특별한 경우)는 이 답변 의 항목 (2)에서 설명 합니다. 단계를 수행하면 간단한 회귀 사례가 해결됩니다. 이 방법은 원하는 분포의 임의 값을 시뮬레이션하고 회귀 모형에 적합 할 수있는 거의 모든 패키지에서 작동합니다.
Glen_b-복지 주 모니카

autodeskresearch.com/publications/samestats 는 이에 대한 좋은 일반화를 보여줍니다. 시뮬레이션 된 어닐링은 원하는 요약 통계 값을 가질뿐만 아니라 결정된 모양 (예 : "datasaurus")을 갖는 산점도를 만드는 데 사용됩니다. 저스틴 마테 카 (Justin Matejka)와 조지 피츠 모리스 (George Fitzmaurice)는 같은 통계, 다른 그래프 : 시뮬레이션 어닐링을 통해 다양한 모양과 동일한 통계로 데이터 세트 생성 이라는 제목의 작품 입니다.
whuber

답변:


28

둘 중 적어도 두 개가 다른 경우 (엑스나는) 선택하십시오 . 절편 β0 및 기울기 β1 하고 정의

와이0나는=β0+β1엑스나는.

이 적합합니다. 착용감을 변경하지 않고, 수정할 수 와이0 으로 와이=와이0+ε 에러 벡터를 가산함으로써 ε=(ε나는) 그것이 두 벡터에 직교 제공에 엑스=(엑스나는) 및 상수 벡터 (1,1,,1) . 이러한 오류를 얻는 쉬운 방법은 선택하는 어떤 벡터 이자형 및하자 ε 미치지시 잔류 될 이자형엑스 에 대하여 . 아래 코드에서 이자형 는 평균 0 과 공통 표준 편차를 갖는 독립적 인 랜덤 정규 값 세트로 생성됩니다 .

또한 R 2 가 무엇인지 규정 하여 분산 량을 미리 선택할 수도 있습니다. 시키는 τ 2 = VAR ( Y I ) = β (2) (1) VAR ( X ) , 그 잔차를 재조정하는 단계의 분산을 가지고아르 자형2τ2=var(와이나는)=β12var(엑스나는)

σ2=τ2(1/아르 자형21).

이 방법은 완전히 일반적입니다. 가능한 모든 예제 (주어진 엑스나는 세트에 대해 )를 이런 방식으로 만들 수 있습니다.


앙 스콤의 사중주

우리는 동일한 기술 통계량 (2 차를 통해)을 갖는 4 개의 정 성적으로 구별되는 2 변량 데이터 세트로 구성된 Anscombe의 4 중주 를 쉽게 재현 할 수 있습니다 .

그림

코드는 매우 간단하고 유연합니다.

set.seed(17)
rho <- 0.816                                             # Common correlation coefficient
x.0 <- 4:14
peak <- 10
n <- length(x.0)

# -- Describe a collection of datasets.
x <- list(x.0, x.0, x.0, c(rep(8, n-1), 19))             # x-values
e <- list(rnorm(n), -(x.0-peak)^2, 1:n==peak, rnorm(n))  # residual patterns
f <- function(x) 3 + x/2                                 # Common regression line

par(mfrow=c(2,2))
xlim <- range(as.vector(x))
ylim <- f(xlim + c(-2,2))
s <- sapply(1:4, function(i) {
  # -- Create data.
  y <- f(x[[i]])                                         # Model values
  sigma <- sqrt(var(y) * (1 / rho^2 - 1))                # Conditional S.D.
  y <- y + sigma * scale(residuals(lm(e[[i]] ~ x[[i]]))) # Observed values

  # -- Plot them and their OLS fit.
  plot(x[[i]], y, xlim=xlim, ylim=ylim, pch=16, col="Orange", xlab="x")
  abline(lm(y ~ x[[i]]), col="Blue")

  # -- Return some regression statistics.
  c(mean(x[[i]]), var(x[[i]]), mean(y), var(y), cor(x[[i]], y), coef(lm(y ~ x[[i]])))
})
# -- Tabulate the regression statistics from all the datasets.
rownames(s) <- c("Mean x", "Var x", "Mean y", "Var y", "Cor(x,y)", "Intercept", "Slope")
t(s)

출력은 각 데이터 세트 의 (엑스,와이) 데이터에 대한 2 차 설명 통계를 제공합니다 . 네 줄 모두 동일합니다. 처음에 x(x 좌표)와 e(오류 패턴)을 변경하여 더 많은 예제를 쉽게 만들 수 있습니다 .

시뮬레이션

R와이β=(β0,β1)아르 자형20아르 자형21엑스

simulate <- function(x, beta, r.2) {
  sigma <- sqrt(var(x) * beta[2]^2 * (1/r.2 - 1))
  e <- residuals(lm(rnorm(length(x)) ~ x))
  return (y.0 <- beta[1] + beta[2]*x + sigma * scale(e))
}

(이를 Excel로 이식하는 것은 어렵지 않지만 약간 고통 스럽습니다.)

(엑스,와이)60 엑스β=(1,1/2)11/2아르 자형2=0.5.

그림

n <- 60
beta <- c(1,-1/2)
r.2 <- 0.5   # Between 0 and 1

set.seed(17)
x <- rnorm(n)

par(mfrow=c(1,4))
invisible(replicate(4, {
  y <- simulate(x, beta, r.2)
  fit <- lm(y ~ x)
  plot(x, y)
  abline(fit, lwd=2, col="Red")
}))

실행 summary(fit)하면 추정 계수가 정확히 지정된 것과 배수가 여러 개인 지 확인할 수 있습니다아르 자형2의도 된 값입니다. 회귀 p- 값과 같은 다른 통계는 값을 수정하여 조정할 수 있습니다.엑스나는.


1
고마워요! 불행히도, 당신의 접근 방식은이 질문에 즉시 적용되지 않는 것 같습니다 : 같은 상자와 수염 그림이있는 Ancomcom과 같은 데이터 세트 (mean / std / median / MAD / min / max) 입니까?
Stephan Kolassa '

@Stephan 비선형 문제이기 때문에 정확하지 않습니다. 제약 된 최적화 문제에 대한 적절한 솔루션을 찾아서 비슷한 방식으로 해결할 수 있지만 다른 최적화 루틴이 필요하며 솔루션이 보장되지는 않습니다.
whuber
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.