En uygun çizgim var. En uygun çizgimi değiştirmeyecek veri noktalarına ihtiyacım var


15

Fitting hatları hakkında bir sunum yapıyorum. Basit bir doğrusal fonksiyonum var, . Aynı eşitliğe en uygun çizgimi koruyacak bir dağılım grafiğine koyabileceğim dağınık veri noktaları almaya çalışıyorum.y=1x+b

Bu tekniği R veya Excel'de öğrenmek isterim - hangisi daha kolaysa.


1
Herhangi bir katsayı kümesine (sizin özel durumunuz olan) sahip çoklu regresyon durumu, bu cevabın (2) maddesinde ele alınmıştır . Buradaki adımları izleyerek basit regresyon durumunu çözer. Yaklaşım, istenen dağılımın rastgele değerlerini simüle edebileceğiniz ve regresyon modellerine uyabileceğiniz hemen hemen her pakette çalışır.
Glen_b

autodeskresearch.com/publications/samestats bunun güzel bir genellemesini sunar: simüle edilmiş tavlama, yalnızca özet istatistiklerinin istenen değerlerine sahip olmakla kalmayıp aynı zamanda belirli bir şekle ("datasaurus" gibi) sahip olan dağılım grafikleri oluşturmak için kullanılır. Bu, Justin Matejka ve George Fitzmaurice tarafından Aynı İstatistikler, Farklı Grafikler: Simüle Tavlama ile Farklı Görünüm ve Aynı İstatistiklerle Veri Kümeleri Oluşturma işidir .
whuber

Yanıtlar:


28

En az ikisinin farklı olması koşuluyla herhangi birini seçin . Bir kesişim ve eğim ve tanımlayın(xi)β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)=β12var(xi)

σ2=τ2(1/R21).

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 .

şekil

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

Simülasyonlar

Bu Rişlev , değeri kümesi verildiğinde ve ( ) spesifikasyonlarına göre vektörleri üretir .yβ=(β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))
}

(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.511/2R2=0.5

şekil

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


1
Çok hoş teşekkürler! Ne yazık ki, yaklaşımınız bu soru için hemen geçerli görünmüyor: Aynı kutu ve bıyık grafiğine sahip Anscombe benzeri veri kümeleri (ortalama / std / median / MAD / dak / maks) , değil mi?
Stephan Kolassa

@Stephan Doğru değilsiniz, çünkü bu oldukça doğrusal olmayan bir sorundur. Benzer bir şekilde çözülebilir - esasen kısıtlı bir optimizasyon problemine uygulanabilir çözümler bularak - ancak farklı bir optimizasyon rutini gerektirir ve çözümler garanti edilmez.
whuber
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.