การกระจายตัวมีเสถียรภาพเป็นบวกใน R


9

การแจกแจงที่เสถียรในเชิงบวกถูกอธิบายโดยพารามิเตอร์สี่ตัว ได้แก่ พารามิเตอร์ skewness , พารามิเตอร์ของมาตราส่วน\ sigma> 0 , พารามิเตอร์ตำแหน่ง\ mu \ in (- \ infty, \ infty)และอื่น ๆ เรียกว่าพารามิเตอร์ดัชนี\ alpha \ in (0,2]เมื่อ\ betaเป็นศูนย์การกระจายจะสมมาตรรอบ\ muเมื่อมันเป็นบวก (การตอบสนองเชิงลบ) การกระจายจะเบ้ไปทางขวา (ไปทางซ้าย) . การกระจายที่เสถียรช่วยให้ไขมันหางเมื่อ\ alphaลดลงβ[1,1]σ>0μ(,)α(0,2]βμα

เมื่อαเป็นอย่างเคร่งครัดน้อยกว่าหนึ่งและβ=1การสนับสนุนของข้อกำหนดด้านการจัดจำหน่ายไปยัง(μ,)infty)

ฟังก์ชั่นความหนาแน่นมีเพียงนิพจน์แบบปิดสำหรับการรวมค่าพารามิเตอร์ เมื่อμ=0 , α<1 , β=1 , และσ=αมันคือ (ดูสูตร (4.4) ที่นี่ ):

f(y)=1πyk=1Γ(kα+1)k!(yα)ksin(αkπ)

มันมีค่าเฉลี่ยและความแปรปรวนไม่สิ้นสุด

คำถาม

ฉันต้องการใช้ความหนาแน่นนั้นในอาร์ฉันใช้

> alpha <- ...
> dstable(y, alpha=alpha, beta=1, gamma=alpha, delta=0, pm=1)

ที่ซึ่งฟังก์ชั่นdstableมาพร้อมกับแพ็คเกจ fBasics

คุณยืนยันได้ไหมว่านี่เป็นวิธีที่เหมาะสมในการคำนวณความหนาแน่นใน R

ขอบคุณล่วงหน้า!

แก้ไข

เหตุผลข้อหนึ่งที่ทำให้ฉันสงสัยว่าในค่าเอาท์พุทของเดลต้านั้นแตกต่างจากในอินพุต ตัวอย่าง:

> library(fBasics)
> alpha <- 0.4
> dstable(4, alpha=alpha, beta=1, gamma=alpha, delta=0, pm=1)
[1] 0.02700602
attr(,"control")
   dist alpha beta gamma    delta pm
stable   0.4    1   0.4 0.290617  1

คำตอบ:


6

คำตอบสั้น ๆ คือของคุณดี แต่ของคุณผิด ในการรับการแจกแจงเสถียรที่เป็นบวกซึ่งกำหนดโดยสูตรของคุณใน R คุณต้องตั้งค่า δγ

γ=|1itan(πα/2)|1/α.

ตัวอย่างแรกสุดที่ฉันสามารถหาสูตรที่คุณให้ได้คือ (Feller, 1971) แต่ฉันพบเฉพาะหนังสือเล่มนั้นในรูปแบบทางกายภาพ อย่างไรก็ตาม (Hougaard, 1986) ให้สูตรเดียวกันพร้อมกับการแปลง Laplace จากคู่มือ ( ใช้งานใน) การกำหนดพารามิเตอร์มาจาก (Samorodnitsky และ Taqqu, 1994) ซึ่งเป็นแหล่งข้อมูลอื่นที่การสืบพันธุ์ออนไลน์ได้ทำให้ฉันหลง อย่างไรก็ตาม (Weron, 2001) จะช่วยให้การทำงานในลักษณะ Samorodnitsky และ Taqqu ของ parameterization สำหรับจะเป็น

L(s)=E[exp(sX)]=exp(sα).
stablediststabledistfBasicspm=1α1
φ(t)=E[exp(itX)]=exp[iδtγα|t|α(1iβsign(t)tanπα2)].
ฉันได้เปลี่ยนชื่อพารามิเตอร์จากกระดาษของ Weron เป็น coinside ด้วยสัญกรณ์ที่เราใช้อยู่ เขาใช้สำหรับและสำหรับ\ไม่ว่าในกรณีใดการเสียบและเราได้รับ μδσγβ=1δ=0
φ(t)=exp[γα|t|α(1isign(t)tanπα2)].

โปรดทราบว่าสำหรับและ2) เป็นทางการดังนั้นโดยการตั้งค่าในเราได้รับ สิ่งหนึ่งที่น่าสนใจที่ควรทราบคือที่สอดคล้องกับก็ดังนั้นถ้าคุณลองหรือ(1itan(πα/2))/|1itan(πα/2)|=exp(iπα/2)α(0,1)iα=exp(iπα/2)L(s)=φ(is)γ=|1itan(πα/2)|1/αφ(t)

φ(is)=exp(sα)=L(s).
γα=1/21/2γ=αγ=1αซึ่งเป็นจริงไม่ได้เป็นประมาณไม่ดีคุณจะจบลงตรงที่ถูกต้องสำหรับ1/2α=1/2

นี่คือตัวอย่างใน R เพื่อตรวจสอบความถูกต้อง:

library(stabledist)

# Series representation of the density
PSf <- function(x, alpha, K) {
  k <- 1:K
  return(
    -1 / (pi * x) * sum(
      gamma(k * alpha + 1) / factorial(k) * 
        (-x ^ (-alpha)) ^ k * sin(alpha * k * pi)
    )
  )
}

# Derived expression for gamma
g <- function(a) {
  iu <- complex(real=0, imaginary=1)
  return(abs(1 - iu * tan(pi * a / 2)) ^ (-1 / a))
}

x=(1:100)/100
plot(0, xlim=c(0, 1), ylim=c(0, 2), pch='', 
     xlab='x', ylab='f(x)', main="Density Comparison")
legend('topright', legend=c('Series', 'gamma=g(alpha)'),
       lty=c(1, 2), col=c('gray', 'black'),
       lwd=c(5, 2))
text(x=c(0.1, 0.25, 0.7), y=c(1.4, 1.1, 0.7), 
     labels=c(expression(paste(alpha, " = 0.4")),
              expression(paste(alpha, " = 0.5")),
              expression(paste(alpha, " = 0.6"))))

for(a in seq(0.4, 0.6, by=0.1)) {
  y <- vapply(x, PSf, FUN.VALUE=1, alpha=a, K=100)
  lines(x, y, col="gray", lwd=5, lty=1)
  lines(x, dstable(x, alpha=a, beta=1, gamma=g(a), delta=0, pm=1), 
        col="black", lwd=2, lty=2)
}

พล็อตเอาท์พุท

  1. Feller, W. (1971) ทฤษฎีความน่าจะเป็นเบื้องต้นและการประยุกต์ , 2 , 2 ed. นิวยอร์ก: ไวลีย์
  2. Hougaard, P. (1986) การอยู่รอดรุ่นสำหรับวิวิธประชากรที่ได้มาจากการกระจาย Stable , Biometrika 73 , 387-396
  3. Samorodnitsky, G. , Taqqu, MS (1994) กระบวนการสุ่มที่ไม่ใช่แบบเกาส์ , แชปแมน & ฮอลล์, นิวยอร์ก, 1994
  4. Weron, R. (2001) มาถึงการแจกแจงที่เสถียรแล้ว: ดัชนีท้าย> 2 ไม่รวมระบอบการปกครองที่มีเสถียรภาพ , วารสารนานาชาติของฟิสิกส์สมัยใหม่ C, 2001, 12 (2), 209-223

1
ด้วยความยินดี. หัวข้อของการสร้างพารามิเตอร์ที่มีความเสถียรในเชิงบวกทำให้ฉันปวดหัวมากเมื่อต้นปีนี้ รูปแบบเฉพาะนี้มีประโยชน์ในการวิเคราะห์การอยู่รอดเพราะรูปแบบของ Laplacian อนุญาตให้มีความสัมพันธ์แบบง่าย ๆ ระหว่างพารามิเตอร์การถดถอยแบบมีเงื่อนไขและส่วนเพิ่มในแบบจำลองแบบอันตรายตามสัดส่วน
P Schnell

6

สิ่งที่ฉันคิดว่าเกิดขึ้นก็คือในผลลัพธ์deltaอาจมีการรายงานค่าที่ตั้งภายในในขณะที่อินพุตdeltaกำลังอธิบายถึงการเปลี่ยนแปลง [ดูเหมือนว่าจะมีปัญหาที่คล้ายกันgammaเมื่อเวลาpm=2] ดังนั้นถ้าคุณลองเพิ่มกะเป็น 2

> dstable(4, alpha=0.4, beta=1, gamma=0.4, delta=2, pm=1)
[1] 0.06569375
attr(,"control")
   dist alpha beta gamma    delta pm
 stable   0.4    1   0.4 2.290617  1

จากนั้นคุณบวก 2 เข้ากับค่าที่ตั้ง

ด้วยbeta=1และpm=1คุณมีตัวแปรสุ่มที่เป็นบวกพร้อมการกระจายขอบเขตล่างที่ 0

> min(rstable(100000, alpha=0.4, beta=1, gamma=0.4, delta=0, pm=1))
[1] 0.002666507

เลื่อน 2 และขอบเขตล่างเพิ่มขึ้นตามจำนวนเดียวกัน

> min(rstable(100000, alpha=0.4, beta=1, gamma=0.4, delta=2, pm=1))
[1] 2.003286

แต่ถ้าคุณต้องการให้deltaอินพุทเป็นค่าที่ตั้งภายในแทนที่จะเป็นกะหรือขีด จำกัด ล่างคุณต้องใช้สเปคที่แตกต่างกันสำหรับพารามิเตอร์ ตัวอย่างเช่นหากคุณลองสิ่งต่อไปนี้ (ด้วยpm=3และลองdelta=0และสิ่งที่delta=0.290617คุณพบก่อนหน้านี้) คุณดูเหมือนจะเข้าdeltaและออกเหมือนกัน ด้วยpm=3และdelta=0.290617คุณจะได้ความหนาแน่นเท่ากันที่ 0.02700602 คุณจะพบว่าก่อนหน้านี้และขอบเขตล่างที่ 0 ด้วยpm=3และdelta=0คุณจะได้ขอบเขตล่างเชิงลบ (ในความเป็นจริง -0.290617)

> dstable(4, alpha=0.4, beta=1, gamma=0.4, delta=0, pm=3)
[1] 0.02464434
attr(,"control")
   dist alpha beta gamma delta pm
 stable   0.4    1   0.4     0  3
> dstable(4, alpha=0.4, beta=1, gamma=0.4, delta=0.290617, pm=3)
[1] 0.02700602
attr(,"control")
   dist alpha beta gamma    delta pm
 stable   0.4    1   0.4 0.290617  3
> min(rstable(100000, alpha=0.4, beta=1, gamma=0.4, delta=0, pm=3))
[1] -0.2876658
> min(rstable(100000, alpha=0.4, beta=1, gamma=0.4, delta=0.290617, pm=3))
[1] 0.004303485

คุณอาจพบว่าง่ายที่จะเพิกเฉยdeltaในเอาต์พุตและตราบใดที่คุณbeta=1ใช้pm=1วิธีการdeltaในการป้อนข้อมูลจะเป็นการ จำกัด ขอบเขตการกระจายที่ต่ำกว่าซึ่งดูเหมือนว่าคุณต้องการเป็น 0


5

ข้อควรทราบ: Martin Maechler เพิ่งปรับโครงสร้างรหัสเพื่อการกระจายที่เสถียรและเพิ่มการปรับปรุงบางอย่าง

แพคเกจใหม่ของเขาstabledistจะถูกใช้โดย fBasics เช่นกันดังนั้นคุณอาจต้องการที่จะให้ดูนี้เป็นอย่างดี

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.