gibi bir regresyon nasıl ?


9

Ölçülen değişkenin ayrık pozitif tamsayıları (sayıları) olduğu bazı zaman serisi verileri var. Zaman içinde yukarı yönlü bir eğilim olup olmadığını test etmek istiyorum (ya da değil). Bağımsız değişken (x) 0-500 aralığında ve bağımlı değişken (y) 0-8 aralığındadır.

Buna y = floor(a*x + b)sıradan en küçük kareler (OLS) kullanarak formun gerilemesini yerleştirerek cevap verdiğimi düşündüm .

Bunu R (veya Python) kullanarak nasıl yapabilirim? Bunun için mevcut bir paket var mı, yoksa kendi algoritmamı yazmaktan daha iyi miyim?

PS: Bunun ideal bir teknik olmadığını biliyorum, ama aslında anlayabileceğim nispeten basit bir analiz yapmam gerekiyor - geçmişim matematik değil biyolojidir. Ölçülen değişkende hata ve zaman içinde ölçümlerin bağımsızlığı ile ilgili varsayımları ihlal ettiğimi biliyorum.


5
Bu formun gerilemesini denemek matematiksel olarak doğal olsa da, arkasında istatistiksel bir hata vardır: hata terimi şimdi tahmin edilen değer ile güçlü bir şekilde ilişkilendirilecektir. Bu, OLS varsayımlarının oldukça güçlü bir ihlalidir. Bunun yerine, Greg Snow'un cevabının önerdiği şekilde sayı temelli bir teknik kullanın. (Bu soruyu memnuniyetle karşıladım, çünkü gerçek bir düşünce ve zekayı yansıtıyor. Burada sorduğunuz için teşekkür ederiz!)
whuber

Yanıtlar:


11

nls(Doğrusal olmayan en küçük kareler) işlevini kullanarak belirttiğiniz modele sığabilirsiniz R, ancak söylediğiniz gibi, varsayımların çoğunu ihlal edecek ve muhtemelen çok mantıklı olmayacaktır (tahmin edilen sonucun bir adım etrafında rastgele olduğunu söylüyorsunuz) işlev, düzgün artan bir ilişki etrafında tamsayı değerleri değil).

Sayım verilerini sığdırmanın daha yaygın yolu, glmişlevini kullanarak Poisson regresyonunu kullanmaktır, Ryardım sayfasındaki ilk örnek bir Poisson regresyonudur, ancak istatistiklere aşina değilseniz, emin olmak için bir istatistikçiye danışmak en iyisidir. doğru yaptığınızı.

8 değeri mutlak bir maksimum ise (daha yüksek bir sayı görmek imkansız, sadece gördüğünüz şey değil) o zaman orantılı oranlar lojistik regresyonunu düşünebilirsiniz, bunu paketlerde yapmak için birkaç araç var R, ancak Bunu yapmak istiyorsanız gerçekten bir istatistikçinin dahil olması gerekir.


"tahmin edilen sonucun bir adım fonksiyonu etrafında rasgele olduğunu söylüyorsunuz, yumuşak bir şekilde artan bir ilişki etrafındaki tamsayı değerleri değil" --- Bu düşünmediğim bir şey. Sonunda, Poisson regresyonuyla glm'ye gittim. Onun mükemmel bir seçim değil, ama ne ı gerek için "yeterince iyi".
afaulconbridge

10

Greg'in önerisinin denemesi gereken ilk şey: Poisson regresyonu birçok betonda doğal modeldir durumlar.

Ancak önerdiğiniz model örneğin yuvarlatılmış verileri gözlemlediğinizde ortaya çıkabilir: iid normal hatalarla .

Yi=axi+b+ϵi,
ϵi

Bence, bununla neler yapılabileceğine bir göz atmak ilginç. Standart normal değişkenin cdf'sini gösteririm . Eğer , daha sonra , bilindik bilgisayar gösterimlerini kullanarak.FϵN(0,σ2)

P(ax+b+ϵ=k)=F(kb+1axσ)F(kbaxσ)=pnorm(k+1axb,sd=σ)pnorm(kaxb,sd=σ),

Veri noktalarını gözlemliyorsunuz . Günlük olasılığı Bu, en küçük karelerle aynı değildir. Bunu sayısal bir yöntemle en üst düzeye çıkarmayı deneyebilirsiniz. İşte R'de bir örnek:(xi,yi)

(a,b,σ)=ilog(F(yib+1axiσ)F(yibaxiσ)).
log_lik <- function(a,b,s,x,y)
  sum(log(pnorm(y+1-a*x-b, sd=s) - pnorm(y-a*x-b, sd=s)));

x <- 0:20
y <- floor(x+3+rnorm(length(x), sd=3))
plot(x,y, pch=19)
optim(c(1,1,1), function(p) -log_lik(p[1], p[2], p[3], x, y)) -> r
abline(r$par[2], r$par[1], lty=2, col="red")
t <- seq(0,20,by=0.01)
lines(t, floor( r$par[1]*t+r$par[2]), col="green")

lm(y~x) -> r1
abline(r1, lty=2, col="blue");

yuvarlak doğrusal model

Kırmızı ve mavi renkte, bu olasılığın sayısal olarak maksimize edilmesiyle çizgileri ve en küçük kareler bulunur. Yeşil merdiven, maksimum olasılıktan için ... bu, 0,5'e kadar bir çeviriye kadar en küçük kareleri kullanabileceğinizi ve kabaca aynı sonucu elde edebileceğinizi gösterir; veya en küçük kareler modeline çok burada en yakın tam sayıdır. Yuvarlanmış veriler o kadar sık ​​karşılanır ki, bunun bilindiğinden ve kapsamlı bir şekilde çalışıldığından eminim ...ax+bax+ba,bb

Yi=[axi+b+ϵi],
[x]=x+0.5

4
+1 Bu tekniği çok seviyorum ve aslında birkaç yıl önce bir risk analizi dergisine bir makale sundum. (Bazı risk analistleri aralık değerli verilerle oldukça ilgilenmektedir.) İzleyicileri için "çok matematiksel" olduğu reddedildi. . :-( Bir ipucu:.. Sayısal yöntemler kullanılırken, her zaman çözüm için başlangıç değerleri besleme yararına iyi bir fikirdir sayısal optimizer ile, bu değerleri elde etmek için ham verilere EKK uygulayarak bunları daha sonra "cila" düşünün
whuber

Evet, bu iyi bir öneri. Aslında, bu durumda "işe yaradığını" vurgulamak için uzak değerleri seçiyorum, ama pratikte öneri verilere bağlı olarak çok düz bir bölgeden başlamaktan kaçınmak için tek çözüm olurdu ...
Elvis
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.