En az ikisinin farklı olması koşuluyla herhangi birini seçin . Bir kesişim ve eğim ve tanımlayın( xben)β0β1
y0i=β0+β1xi.
Bu uyum mükemmel. Uyum değiştirmeden, değiştirebilir için herhangi bir hata vektörü ilave edilerek o vektör hem dik olan Resim için ve sürekli vektörü . Bu tür bir hata elde etmek için kolay bir yol almak için olan herhangi bir vektör ve izin gerileme üzerine artıklar olabilir karşı . Aşağıdaki kodda, , ortalama ve ortak standart sapma ile bağımsız rasgele normal değerler kümesi olarak üretilir .y0y=y0+εε=(εi)x=(xi)(1,1,…,1)e ε e x e 0eεexe0
Ayrıca, muhtemelen ne olması gerektiğini belirleyerek saçılma miktarını önceden seçebilirsiniz . İzin vermek , bu artıklar yeniden ölçeklendirmek bir varyansının olmasıR2τ2=var(yi)=β21var(xi)
σ2=τ2(1/R2−1).
Bu yöntem tamamen geneldir: olası tüm örnekler (belirli bir kümesi için ) bu şekilde oluşturulabilir.xi
Örnekler
Anscombe's Quartet
Anscombe'un Dörtlüsü'nü , aynı tanımlayıcı istatistiklere (ikinci sıraya göre) sahip, nitel olarak farklı iki değişkenli veri kümelerinden kolayca çoğaltabiliriz .
Kod oldukça basit ve esnektir.
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)
Çıktı, her veri kümesi için verileri için ikinci dereceden açıklayıcı istatistikler verir . Dört çizginin hepsi aynıdır. Başlangıçta ( x koordinatları) ve (hata düzenleri) değiştirerek kolayca daha fazla örnek oluşturabilirsiniz .(x,y)x
e
Simülasyonlar
Bu R
işlev , değeri kümesi verildiğinde ve ( ) spesifikasyonlarına göre vektörleri üretir .yβ=(β0,β1)R20≤R2≤1x
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))
}
(Bunu Excel'e taşımak zor olmaz - ama biraz acı verir.)
Kullanımının bir örneği olarak, burada ortak bir değer kümesi verilerinin dört simülasyonu , ( yani , kesme ve eğim ) ve .(x,y)60 xβ=(1,−1/2)1 - 1 / 2 R, 2 = 0.51−1/2R2=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")
}))
Yürüterek summary(fit)
, tahmini katsayıların tam olarak belirtildiği gibi olduğunu ve çoklu istenen değer olduğunu kontrol edebilirsiniz. Regresyon p değeri gibi diğer istatistikler, değerleri değiştirilerek ayarlanabilir .R2xi