Düzgünleştirilmiş verilerden R'deki bükülme noktalarını bulma


14

Düzgün kullandığım bazı verilerim var loess. Düzeltilmiş çizginin bükülme noktalarını bulmak istiyorum. Mümkün mü? Eminim birisi bunu çözmek için süslü bir yöntem yapmış ... Yani ... sonuçta, R!

Kullandığım yumuşatma işlevini değiştirme konusunda iyiyim. Sadece kullandım loessçünkü geçmişte kullandığım şey buydu. Ancak herhangi bir yumuşatma işlevi iyidir. Bükülme noktalarının kullandığım yumuşatma fonksiyonuna bağlı olacağının farkındayım. Bununla iyiyim. Sadece çekim noktalarının tükürülmesine yardımcı olabilecek herhangi bir düzeltme işlevine sahip olarak başlamak istiyorum.

İşte kullandığım kod:

x = seq(1,15)
y = c(4,5,6,5,5,6,7,8,7,7,6,6,7,8,9)
plot(x,y,type="l",ylim=c(3,10))
lo <- loess(y~x)
xl <- seq(min(x),max(x), (max(x) - min(x))/1000)
out = predict(lo,xl)
lines(xl, out, col='red', lwd=2)

resim açıklamasını buraya girin


3
Belki de değişim noktası analizine bakmak istersiniz .
nico

Bu kod satırını çok yararlı buldum: infl <- c (YANLIŞ, diff (diff (çıkış)> 0)! = 0) Ancak bu kod, yukarı veya aşağı dönmesine bakılmaksızın tüm dönüm noktalarını bulur. Bir zaman diliminde hangi noktaların büküldüğünü ve hangilerinin büküldüğünü nasıl anlayabilirim? Örneğin, yeşil ve aşağıya doğru kırmızıya dönüş noktası çizin ve renklendirin.
user3511894

Yanıtlar:


14

Yumuşatılmış eğrideki bükülmeleri bulmak için R'yi kullanma açısından, y'deki değişikliğin işaret ettiği yumuşatılmış y değerlerinde bu yerleri bulmanız yeterlidir.

infl <- c(FALSE, diff(diff(out)>0)!=0)

Daha sonra grafiğe bu bükülmelerin oluştuğu noktalar ekleyebilirsiniz.

points(xl[infl ], out[infl ], col="blue")

İstatistiksel olarak anlamlı bükülme noktaları bulma açısından, @nico ile bazen segmentli regresyon olarak da adlandırılan değişim noktası analizine bakmanız gerektiğini kabul ediyorum.


Bu işi biraz iyi yapıyor gibi görünüyor. Bunun ideal olmadığını ve verdiği sonucun kesinlikle ideal olmadığını anlıyorum. Katkınız için teşekkürler. Düz çizgi gibi şeyler dışında çoğu durumu kapsar.
user164846

3
Anladığımdan emin değilim, @ user164846. Düz bir çizginin bükülme noktası yoktur.
Jean V. Adams

Ayrıca, derhal türev sağlayan düzleştiricilere, örneğin Savitzky-Golay-filtrelerine bakmak isteyebilirsiniz. Ancak daha pürüzsüz bir seçim her zaman verileriniz ve uygulamanız tarafından kararlaştırılmalıdır, aksi yönde değil!
Cbeleites

4

Burada çeşitli düzeylerde sorunlar var.

İlk önce, loess sadece daha pürüzsüz olur ve aralarından seçim yapabileceğiniz çok, çok vardır. İyimserler, hemen hemen her türlü akıcı maddenin gerçek bir desen bulacağını ve neredeyse tüm makul düzleştiricilerin gerçek modeller üzerinde hemfikir olduğunu iddia ediyorlar. Kötümserler bunun sorunun olduğunu ve "makul düzleştirici" ile "gerçek kalıpların" birbirleri ile tanımlandığını iddia ediyorlar. Bu noktaya gelince, neden lös ve neden burada iyi bir seçim olduğunu düşünüyorsun? Seçim sadece tek bir daha pürüzsüz veya daha pürüzsüz bir tek uygulamadan ibaret değildir (yazılımda loess veya lowess adı altında olan her şey aynı değildir), aynı zamanda tek bir düzleştirme derecesi (aynı zamanda sizin için rutin). Bu noktadan bahsediyorsunuz ama bu konuya değinmiyor.

Daha spesifik olarak, oyuncak örneğinizin de gösterdiği gibi, dönüm noktaları gibi temel özellikler lös ile kolayca korunamayabilir (lösü de beklemek değil). İlk yerel asgari kaybolur ve ikinci yerel asgari miktar, gösterdiğiniz düzlükle değiştirilir. Birinciden ziyade ikinci türevin sıfırları tarafından tanımlanan bükülmelerin daha da kararsız olması beklenebilir.


Löseyi seçtim çünkü internetten yakaladım. Genel olarak düzgünleştirme konusunda çok deneyimliyim, bu yüzden sadece online kod aldım. Daha iyi bir öneriniz var mı?
user164846

Üzgünüm, ama yorumunu anlamıyorum. Düzgünleştirme konusunda çok deneyimliyseniz, gürültülerin bastırılması sırasında düzleştiricilerin en iyi şekilde korunduğu argümanlarınız olmalıdır. Bu benim için çelişkili bir amaç gibi gözüküyor, ama neden yanlış olduğumu gösteren teknik argümanları duymaktan mutluluk duyarım.
Nick Cox

Üzgünüz, ben "deneyimsiz"
demek değil

1
Anlıyorum. Hayat kısa ve mümkün olan her yöntemi deneyemezsiniz. Gerçek verilerinizi göremiyoruz, ancak oyuncak örneğiniz, düzleştirmenin tanımlanabilir yapıyı kaldırabileceğinin altını çiziyor.
Nick Cox

2

Bu konuda bir sürü harika yaklaşım var. Bazıları içerir. (1) - değişim noktası paketi (2) - bölümlere ayrılmış - paket. Ancak, değişiklik noktası sayısını seçmeniz gerekir. (3) -ekinci ambalajda uygulanan MARS

Önyargı / sapma dengelemenize bağlı olarak, hepsi size biraz farklı bilgiler verecektir. -segment - bir göz atmaya değer. Farklı sayıda değişim noktası modeli AIC / BIC ile karşılaştırılabilir


1

Belki fda kütüphanesini kullanabilirsiniz ve uygun bir sürekli işlevi tahmin ettikten sonra, ikinci türevin sıfır olduğu yerleri kolayca bulabilirsiniz.

FDA VİNÇ

FDA Tanıtım


İlk türevin sıfırları minima ve maxima'yı tanımlar. Sanırım ikincisini kastediyorsun. Herhangi bir şekilde "kolayca" nedir? Sayısal olarak farklılaşmanın birden fazla yolu vardır.
Nick Cox

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.