Doğrusal olmayan trend çizgisi R'deki bir dağılım grafiğine nasıl eklenir? [kapalı]


Yanıtlar:


34

Biraz veri oluşturalım.

n <- 100
x <- seq (n)
y <- rnorm (n, 50 + 30 * x ^ (0,2), 1)
Veriler <- data.frame (x, y)

Aşağıdaki, bir loess çizgisine veya doğrusal olmayan bir regresyona nasıl sığabileceğinizi gösterir.

arsa (y ~ x, Veri)

# bir loess hattı sığdırmak
loess_fit <- loess (y ~ x, Veri)
satırlar (Veri $ x, tahmin et (loess_fit), col = "blue")

# doğrusal olmayan bir regresyon sığdırır
nls_fit <- nls (y + a + b * x ^ (- c), Data, start = list (a = 80, b = 20, 
    c = 0.2))
satırlar (Veri $ x, tahmin (nls_fit), col = "red")

öbek arsa


1
komplo hakkında, sipariş problemleriyle karşılaşanlar için bu tavsiye faydalıdır
tflutre

23

Eğer kullanırsanız ggplot2(üçüncü çizim sistemi, R, taban R ve kafes sonra), bu olur:

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

arsa

Verilerin nasıl düzeltileceğini seçebilirsiniz: ?stat_smoothayrıntılar ve örnekler için bkz .


Güzel grafik ve açıklama! Fakat gölge alan ne demektir?
Darwin PC

3
Gölgeli alan, düzleştirilmiş çizginin etrafındaki güven aralığıdır. Bunu Vincent'ın stat_smoothyazdığı şekilde yazarak R yardım dosyasına erişerek kendiniz ?stat_smoothöğrenmiş olabilirsiniz. :-)
İstiyorum

9

Tam olarak ne aradığınızı bilmeden, latticepaketi kullanarak kolayca bir loess eğrisi ekleyebilirsiniz type="smooth"; Örneğin,

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

help("panel.loess")Kullanılacak polinomun derecesini değiştirmek için boşluksuz montaj rutine geçirilebilecek argümanlara bakınız .

görüntü tanımını buraya girin

Güncelleştirme

Loess eğrisinin rengini değiştirmek için küçük bir işlev yazabilir ve bunu panelparametre olarak geçirebilirsiniz 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)

görüntü tanımını buraya girin


çizgiyi farklı bir renkte nasıl yaparsınız?
EngrStudent - Monica

1
@EngrStudent Yanıtımı güncelledim.
Jason Morgan

8

Sorunuz biraz belirsiz, bu yüzden probleminizin ne olduğu hakkında bazı varsayımlarda bulunacağım. Bir dağılım grafiği oluşturabilir ve verileri biraz açıklayabilirseniz çok yardımı olacaktır. Lütfen, kötü varsayımlarda bulunuyorsam cevabımı görmezden gel.

İlk olarak, verilerinizin doğrusal olmadığına inandığınız bazı işlemleri açıklamanız mümkündür. Örneğin, otomobilin hızına karşı ani bir frenlemeyle durması için bir arabanın mesafesine regresyon yapmaya çalışıyorsanız, fizik bize araç enerjisinin hızın karesiyle orantılı olduğunu söyler - hız değil kendisi. Yani bu durumda polinom regresyonunu denemek isteyebilirsiniz ve (R'de) gibi bir şey yapabilirsiniz.model <- lm(d ~ poly(v,2),data=dataset) . Çeşitli doğrusallıkların regresyon modeline nasıl sokulacağına dair birçok belge var.

Öte yandan, "titrek" olan bir hattınız varsa ve neden titrek olduğunu bilmiyorsanız, o zaman iyi bir başlangıç ​​noktası muhtemelen yerel olarak ağırlıklı bir regresyon veya loessR'de olacaktır. Bölge, tüm veri kümelerinin aksine. Herhangi bir noktada eğrinin değerini hesaplayabileceğiniz, ilgilenilen noktaya en yakın k noktalarını bulduğunuz ve bunları ortaladığınız bir "k'ye en yakın" versiyonunu hayal etmek en kolay olanıdır. Loess de aynen böyle ama düz bir ortalama yerine regresyon kullanıyor. Bunun için değişkenin yumuşatmanın derecesini kontrol ettiği model <- loess(y ~ x, data=dataset, span=...)yerlerde kullanın span.

Üçüncü taraftan (ellerin tükenmesi) - trendlerden mi bahsediyorsunuz? Bu geçici bir problem mi? Eğer öyleyse, aşırı trend çizgileri ve istatistiksel anlamlılık konusunda biraz dikkatli olun. Zaman serilerindeki eğilimler “otoregresif” süreçlerde görülebilir ve bu süreçler için sürecin rasgeleliği rasgele gürültünün dışında eğilimleri oluşturabilir ve yanlış istatistiksel anlamlılık testi bunun ne zaman önemli olmadığını söyleyebilir!


6

Saçılma grafiği örnek noktalarını ve aynı grafikte düzgün eğriyi koymak:

  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

Düzgün eğri ile dağılım grafiği

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.