Tôi có một dòng phù hợp nhất. Tôi cần các điểm dữ liệu sẽ không thay đổi dòng phù hợp nhất của tôi


14

Tôi đang trình bày về các dòng phù hợp. Tôi có một hàm tuyến tính đơn giản, y=1x+b . Tôi đang cố gắng để có được các điểm dữ liệu phân tán mà tôi có thể đặt vào một biểu đồ phân tán sẽ giữ cho dòng của tôi phù hợp nhất với cùng phương trình.

Tôi muốn học kỹ thuật này trong R hoặc Excel - bất cứ điều gì dễ dàng hơn.


1
Trường hợp hồi quy bội với bất kỳ tập hợp hệ số nào (trong đó trường hợp của bạn là trường hợp đặc biệt) sẽ được thảo luận trong mục (2) của câu trả lời này . Thực hiện theo các bước có giải quyết trường hợp hồi quy đơn giản. Cách tiếp cận hoạt động chỉ trong bất kỳ gói nào mà bạn có thể mô phỏng các giá trị ngẫu nhiên của phân phối mong muốn và phù hợp với các mô hình hồi quy.
Glen_b -Reinstate Monica

autodeskresearch.com/publications/samestats trình bày một khái quát tốt về điều này: ủ mô phỏng được sử dụng để tạo các biểu đồ phân tán không chỉ có các giá trị mong muốn của các số liệu thống kê tóm tắt, mà chúng còn có hình dạng xác định (chẳng hạn như "dữ liệu"). Đây là tác phẩm của Justin Matejka và George Fitzmaurice có tựa đề Thống kê giống nhau, đồ thị khác nhau: Tạo ra các bộ dữ liệu với diện mạo đa dạng và thống kê giống hệt nhau thông qua mô phỏng .
whuber

Câu trả lời:


28

Chọn bất kỳ (xi) được cung cấp ít nhất hai trong số chúng khác nhau. Đặt đánh chặn β0 và dốc β1 và xác định

y0i=β0+β1xi.

Sự phù hợp này là hoàn hảo. Nếu không có thay đổi phù hợp, bạn có thể sửa đổi y0 đến y=y0+ε bằng cách thêm bất kỳ vector lỗi ε=(εi) để nó miễn là nó là trực giao cả cho vector x=(xi) và vector liên tục (1,1,,1) . Một cách dễ dàng để có được lỗi này là để chọn bất kỳ vector e và để ε là dư khi suy thoái echống lại x . Trong mã dưới đây, e được tạo như một tập hợp các giá trị bình thường ngẫu nhiên độc lập với giá trị trung bình 0 và độ lệch chuẩn chung.

Hơn nữa, bạn thậm chí có thể chọn trước lượng phân tán, có lẽ bằng cách quy định R2 nên là gì. Cho τ2=var(yi)=β12var(xi) , rescale những dư để có một phương sai của

σ2=τ2(1/R21).

Phương pháp này hoàn toàn chung chung: tất cả các ví dụ có thể (đối với một tập xi ) có thể được tạo theo cách này.


Ví dụ

Bộ tứ của Anscombe

Chúng tôi có thể dễ dàng sao chép Bộ tứ của bốn bộ dữ liệu hai biến số định tính khác nhau có cùng số liệu thống kê mô tả (thông qua thứ tự thứ hai).

Nhân vật

Mã này rất đơn giản và linh hoạt.

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)

Đầu ra đưa ra số liệu thống kê mô tả bậc hai cho dữ liệu (x,y) cho mỗi tập dữ liệu. Tất cả bốn dòng là giống hệt nhau. Bạn có thể dễ dàng tạo thêm ví dụ bằng cách thay đổi x(tọa độ x) và e(các mẫu lỗi) ngay từ đầu.

Mô phỏng

Ryβ=(β0,β1)R20R21x

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

(Sẽ không khó để chuyển cái này sang Excel - nhưng hơi đau một chút.)

(x,y)60 xβ=(1,1/2)11/2R2=0.5

Nhân vật

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


Rất đẹp, cảm ơn! Thật không may, cách tiếp cận của bạn dường như không thể áp dụng ngay cho câu hỏi này: Các bộ dữ liệu giống như Anscombe với cùng một ô và biểu đồ râu (có nghĩa là / std / median / MAD / min / max) , phải không?
S. Kolassa - Tái lập Monica

@Stephan Bạn đúng là không, bởi vì đó là một vấn đề phi tuyến tính cao. Nó có thể được giải quyết theo cách tương tự - về cơ bản bằng cách tìm các giải pháp khả thi cho một vấn đề tối ưu hóa bị ràng buộc - nhưng đòi hỏi một thói quen tối ưu hóa khác và các giải pháp không được đảm bảo.
whuber
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.