มีสูตรสำหรับเส้นโค้งรูปตัว s ที่มีโดเมนและช่วง [0,1]


10

โดยทั่วไปฉันต้องการแปลงมาตรการความคล้ายคลึงกันเป็นน้ำหนักซึ่งใช้เป็นตัวทำนาย ความคล้ายคลึงกันจะเป็น [0,1] และฉันจะ จำกัด น้ำหนักให้เป็น [0,1] ฉันต้องการฟังก์ชั่น paramteric ที่ทำแผนที่นี้ซึ่งฉันจะปรับให้เหมาะสมโดยใช้การไล่ระดับสี ความต้องการคือ 0 แผนที่ถึง 0, 1 แผนที่ถึง 1 และจะเพิ่มขึ้นอย่างเคร่งครัด อนุพันธ์ที่เข้าใจง่ายก็ชื่นชมเช่นกัน ขอบคุณล่วงหน้า

แก้ไข: ขอบคุณสำหรับคำตอบจนถึงสิ่งเหล่านี้มีประโยชน์มาก เพื่อให้วัตถุประสงค์ของฉันชัดเจนยิ่งขึ้นภารกิจคือการคาดการณ์ การสังเกตของฉันเป็นเวกเตอร์กระจัดกระจายมากด้วยมิติเดียวที่จะทำนาย ขนาดอินพุตของฉันใช้เพื่อคำนวณความเหมือนกัน การทำนายของฉันคือผลรวมถ่วงน้ำหนักของค่าการสังเกตการณ์อื่นสำหรับนักทำนายซึ่งน้ำหนักนั้นเป็นฟังก์ชันที่มีความคล้ายคลึงกัน ฉัน จำกัด น้ำหนักของฉันไว้ที่ [0,1] เพื่อความเรียบง่าย ตอนนี้มันชัดเจนแล้วว่าทำไมฉันถึงต้องการ 0 ถึงแผนที่เป็น 0, 1 ถึงแผนที่เป็น 1 และมันจะเพิ่มขึ้นอย่างเคร่งครัด เนื่องจาก whuber ได้ชี้ให้เห็นว่าการใช้ f (x) = x ตรงตามข้อกำหนดเหล่านี้และใช้งานได้ดีจริง ๆ อย่างไรก็ตามไม่มีพารามิเตอร์ที่จะปรับให้เหมาะสม ฉันมีข้อสังเกตมากมายเพื่อให้สามารถทนต่อพารามิเตอร์จำนวนมากได้ ฉันจะเขียนโค้ดการไล่ระดับสีด้วยมือดังนั้นการตั้งค่าของฉันสำหรับอนุพันธ์อย่างง่าย

ตัวอย่างเช่นคำตอบส่วนใหญ่ที่ได้รับมีความสมมาตรประมาณ. 5 มันจะมีประโยชน์ที่จะมีพารามิเตอร์เลื่อนไปทางซ้าย / ขวา (เช่นกับการแจกแจงแบบเบต้า)


4
f(x)=xตอบสนองทุกความต้องการของคุณ
whuber

ฉันได้เพิ่มเล็กน้อยในการตอบสนองต่อการแก้ไขของคุณเกี่ยวกับการควบคุมกะซ้าย - ขวา ตัวอย่างครอบครัวทั้งสามในภาพของฉันมีวิธีการควบคุมโดยตรง
Glen_b -Reinstate Monica

คำตอบ:


8

นี่คือหนึ่ง:

y=11+(x1x)β

โดยที่คือβ>0

[[] [1]] 2


นี่คือฟังก์ชั่นมาตรฐานเช่นของ ? ฉันสนใจที่จะระบุไว้ในงานแต่งงาน แต่ฉันไม่สามารถ คุณช่วยอ้างอิงได้ไหม tanhsin
Darkmoor

สวัสดี Darkmoor ฉันได้ equaion นี้ด้วยการเล่นกับ "ฟังก์ชั่นการสลับผกผัน" คุณจะเห็นว่ามันคล้ายกับ y = logit ผกผัน (x) = 1 / (1 + e ^ -x) เพราะแผนที่ logit ไปที่ (0,1) imgur.com/a/H0kGF
Ismam Huda

2
คุณสามารถเพิ่มระดับการปรับพิเศษเพื่อให้คุณสามารถปรับตำแหน่งที่ฟังก์ชั่นเท่ากับ. 5 โดยใช้ y = 1 / (1+ (x ^ r / (1-x ^ r)) ^ - b) . จากนั้นเพื่อให้ได้ y = .5 ที่ x0 set r = -log (2) / log (x0) หรือหากคุณต้องการให้แน่ใจว่า y = k สำหรับ k ระหว่าง 0 ถึง 1 ที่ x = x0 ให้ตั้งค่า r = -log ((1 / k - 1) ^ (1 / b) +1) / log (x0)
wmsmith

7

ตามที่แสดงความคิดเห็นโดย @whuber แล้วฟังก์ชั่น เป็นไปตามข้อกำหนดสามข้อที่คุณกล่าวถึง (เช่น 0 แผนที่ถึง 0, 1 แผนที่ถึง 1 และฟังก์ชั่นนี้เพิ่มขึ้นอย่างเข้มงวด) ในหัวข้อคำถามของคุณดูเหมือนว่าคุณสนใจฟังก์ชั่นที่เป็นรูปตัว S เช่นเดียวกับใน Sigmoid / Logistic curve ถูกต้องหรือไม่ ในกรณีที่คุณแน่นอนควรลองฟังก์ชั่นโลจิสติกต่อไปซึ่งประมาณจะตอบสนองทั้ง 4 เกณฑ์ที่คุณระบุ(x-0.5)}}f(x)=x

11+ek(x0.5)

ในสมการนี้จะควบคุมความลาดชันของเส้นโค้งของคุณ การเปลี่ยนจะช่วยให้คุณสามารถควบคุมการปิดและเป็น 0 และ 1 ตามลำดับ ตัวอย่างเช่นสำหรับ ,และfkkf(0)f(1)k=20f(0)=4.539787e05f(1)=0.9999546

อนุพันธ์ของฟังก์ชั่นนี้คำนวณได้ง่ายเช่น: ข้อมูลเพิ่มเติมเกี่ยวกับฟังก์ชันนี้สามารถ พบได้ที่https://en.wikipedia.org/wiki/Logistic_function

kek(x0.5)(1+ek(x0.5))2

ฟังก์ชั่นนี้ไม่ได้แมป 1 -> 1. อันที่จริงแล้ว f -> 1 เป็น x -> ∞ ขึ้นอยู่กับ k ค่า f ที่ x = 1 อาจจะค่อนข้างเล็ก แต่มันจะไม่มีวันแน่นอน 0 ในความเป็นจริงนั่นคือเหตุผลหลักสำหรับการใช้ e ^ ... ในตัวหารนั่นคือโดเมนที่เกี่ยวข้องคือ [0, ∞) แทน [0,1]
wmsmith

7

ให้ฉันเสนอวิธีแก้ปัญหาทั่วไปส่วนใหญ่สอดคล้องกับข้อกำหนด:ที่จะให้ความยืดหยุ่นมากที่สุดในการเลือกและปรับให้เหมาะสม

เราอาจตีความ "รูปตัว S" เป็นเส้นโค้งที่เพิ่มขึ้นแบบ monotonically (เพราะการแปลงควรเป็นแบบหนึ่งต่อหนึ่ง) ประกอบด้วยส่วนหนึ่งที่เว้าขึ้นด้านบนและอีกส่วนที่เว้าลง เราอาจจะมุ่งเน้นไปที่การทำให้เว้าครึ่งซ้ายลงเพราะประเภทอื่น (ที่มีเว้าครึ่งซ้าย) นั้นได้รับจากการแปลงการแปลงเช่นนั้น

เนื่องจากการแปลงควรจะหาอนุพันธ์ได้ดังนั้นจึงต้องมีอนุพันธ์ที่ลดลงในครึ่งซ้ายและอนุพันธ์เพิ่มขึ้นในครึ่งขวา โดยไม่คำนึงถึงอนุพันธ์ต้องไม่เป็นลบและสามารถเป็นศูนย์ได้ที่จุดแยกเท่านั้น (ถ้าเลย: ค่าต่ำสุดของอนุพันธ์จะให้ความชันน้อยที่สุดของการแปลง)ff

มันไม่จำเป็นต้องที่จะอนุพันธ์อนุพันธ์ได้ แต่เป็นเรื่องจริงที่เราอาจจะคิดว่ามันเป็นอนุพันธ์ได้เกือบทุกที่ที่มีอนุพันธ์นายก} f

อนุพันธ์อันดับสองนี้สามารถทำสิ่งใดก็ได้ :สิ่งที่เราต้องการคือ

  • มันเป็น integrable

  • น้อยกว่าหรือเท่ากับศูนย์สำหรับค่าทั้งหมดในบางช่วงซ้ายมือและ[0,k)

  • มากกว่าหรือเท่ากับศูนย์สำหรับค่าทั้งหมดในช่วงเวลาที่มือข้างขวา1](k,1]

ฟังก์ชั่นดังกล่าว (และผู้รุกราน) พารามิเตอร์ชุดของการแก้ปัญหาทั้งหมด f (มีความซ้ำซ้อนบางอย่าง: ได้รับการดูแลโดยขั้นตอนการทำให้เป็นมาตรฐานสุดท้ายตามที่อธิบายไว้ด้านล่าง)

ทฤษฎีบทมูลฐานของแคลคูลัสช่วยให้เราสามารถกู้คืนจากใด ๆสเปคดังกล่าว นั่นคือ,f

f(x)=0xf(t)dt

และ

f(x)=0xf(t)dt.

เงื่อนไขในรับประกันว่าเพิ่มขึ้นจาก monotonically minimim ของบางสูงสุดC สุดท้ายปกติโดยการหารค่าของหนึ่งก่อนหน้านี้โดยCfff(0)f(1)=CfC


นี่คือภาพประกอบที่เริ่มต้นด้วยการเดินสุ่มสำหรับอนุพันธ์อันดับสอง ในนั้นอนุพันธ์ยังไม่ได้รับการปรับมาตรฐาน แต่การเปลี่ยนแปลงf ได้รับการ.

รูป

หากต้องการใช้วิธีนี้คุณอาจเริ่มต้นด้วยนิพจน์การวิเคราะห์สำหรับ fอาจแตกต่างกันไปตามพารามิเตอร์จำนวน จำกัด นอกจากนี้คุณยังสามารถระบุได้โดยให้บางจุดตามกราฟของมันและทำการสอดแทรกระหว่างกัน - โดยที่ผู้สอดแทรกเคารพการปฏิเสธของค่าบน[0,k) และ positivity บน (k,1]. หลังเป็นวิธีที่ใช้ในการสร้างภาพประกอบ Rรหัสที่สอดคล้องกัน(ด้านล่าง) ให้รายละเอียดของการคำนวณ

วิธีนี้ช่วยให้คุณสามารถออกแบบการเปลี่ยนแปลงที่คุณต้องการ คุณสามารถเริ่มต้นด้วยการร่าง S-curve โดยประมาณความลาดเอียงfและจากการประเมินความลาดชัน ระบุบางอย่างf เพื่อให้ตรงกับภาพหลังนั้นแล้วดำเนินการคำนวณ f แล้ว f.

สังเกตได้ว่า f ที่เป็นเว้าก่อนแล้วจึงสามารถเว้าได้ด้วยการปฏิเสธ fตอนแรก เงื่อนไขที่สำคัญสำหรับการสร้างเส้นโค้งรูปตัว S คือ (นอกเหนือจากการทัศนศึกษาที่เป็นไปได้ในชุดของศูนย์การวัด)fจริง ๆ แล้วอาจข้ามศูนย์อย่างมากในครั้งเดียว

อนึ่งการแก้ปัญหา f(x)=x เกิดขึ้นโดยการตั้งค่า f(x)=0 เกือบทุกที่ทำให้ f อย่างต่อเนื่องและบวกจากไหน fเป็นเส้นตรง การทำให้เป็นมาตรฐานมั่นใจความชันคือ1 และการสกัดกั้นคือ 0. (ทำf ค่าคงที่และค่าลบสร้างโซลูชัน f(x)=1x.)

n <- 51                      # Number of interpolation points
k.1 <- floor(n * 2/3)        # Width of the left-hand interval
k.2 <- n - k.1               # ............ right-hand interval
x <- seq(0, 1, length.out=n) # x coordinates
set.seed(17)

# Generate random values of the second derivative that are first negative,
# then positive.  Modify to suit.
y.2 <- (c(runif(k.1, -1, 0), 0.5*runif(k.2, 0, 1))) * abs(cos(3*pi * x)) + 
  c(rep(-.1, k.1), rep(.5,k.2))

# Recover the first derivative and then the transformation.  Control the 
# minimum slope of the transformation.
y.1 <- cumsum(y.2)
y.1 <- y.1 - min(y.1) + 0.005 * diff(range(y.1))
y <- cumsum(y.1)
y <- (y - y[1]) / (y[n] - y[1]) # Normalize the transformation

#
# Plot the graphs.
par(mfrow=c(1,3))
plot(x, y.2, type="l", bty="n", main="Second derivative")
points(x, y.2, pch=20, cex=0.5)
abline(h=0, col="Red", lty=3)
plot(x, y.1, type="l", bty="n", lwd=2, main="First derivative")
abline(h=0, col="Red", lty=3)
plot(x, y, type="l", lwd=2, main="Transformation")

7

สิ่งที่คุณพยายามใช้สิ่งนี้เพื่อฉันนั้นไม่ชัดเจนโดยเฉพาะอย่างยิ่งดังนั้นฉันจึงไม่สามารถพูดได้ว่ามันสมเหตุสมผลหรือไม่

  • โค้งรูปตัว S

  • ฟังก์ชันพาราเมตริก

  • 0 แผนที่เป็น 0, 1 แผนที่เป็น 1 เพิ่มขึ้นอย่างเคร่งครัด

  • อนุพันธ์ง่าย ๆ

เหตุใดจึงไม่เพียง แต่นำครอบครัวที่มีความสะดวกในการแจกจ่าย unimodal * อย่างต่อเนื่องไปที่ [0,1] ซึ่งไฟล์ pdf เป็น "ง่าย" ที่ดูเหมือนว่าจะเติมเต็มทุกส่วนของรายการที่คุณมี

* (ซึ่งมีโหมด จำกัด ขอบเขตจากจุดสิ้นสุด)

  • s-Shaped curve - รับประกันโดย unimodality (ด้วยโหมดที่ไม่ได้อยู่ที่จุดปลาย)

  • พารามิเตอร์ - โดยการให้ครอบครัวเฉพาะที่มีพารามิเตอร์

  • 0 แผนที่เป็น 0, 1 แผนที่เป็น 1 เพิ่มขึ้นอย่างเข้มงวด - นั่นคือสิ่งที่ฟังก์ชั่นการกระจายใน [0,1] ทำ; คุณแค่ต้องการความหนาแน่นที่จะ> 0 ใน (0,1)

  • อนุพันธ์ง่าย - นั่นคือ pdf ดังนั้นหาก PDF นั้น "ง่าย" ตามเกณฑ์ที่คุณต้องการ

มี (ตามที่ Alex R ระบุไว้) มีจำนวนอนันต์ของสิ่งเหล่านี้ เบต้าที่เขากล่าวถึงเป็นสิ่งที่ชัดเจน แต่ cdf นั้นเป็นฟังก์ชั่นเบต้าที่ไม่สมบูรณ์ดังนั้นคุณต้องมีอะไรสักอย่างที่จะประเมินว่า --- มันเป็นฟังก์ชั่นมาตรฐานในแพ็คเกจต่างๆ (รวมถึงแพ็คเกจสถิติที่เหมาะสมเกือบทั้งหมด) ดังนั้นฉันสงสัยว่า ยาก อย่างไรก็ตามโปรดทราบว่าไม่ใช่ betas ทั้งหมดที่เป็นแบบ unimodal (ด้วยโหมดที่ไม่สิ้นสุด) ดังนั้นครอบครัวจึงรวม cdfs ที่ไม่ใช่รูป "s"

นี่คือภาพของสามครอบครัวที่เรียบง่ายพอสมควร:

ป้อนคำอธิบายรูปภาพที่นี่

มีตัวเลือกอื่น ๆ อีกมากมายและสามารถสร้างสิ่งใหม่ได้อย่างง่ายดาย

-

ในการตอบกลับการแก้ไขคำถาม:

โปรดทราบว่าทั้งสามครอบครัวที่ฉันวาดรูปมีวิธีง่าย ๆ ในการรับการเลื่อนซ้าย - ขวา (i) สำหรับการแจกแจงแบบสามเหลี่ยมพารามิเตอร์จะย้ายเส้นโค้งไปทางซ้ายหรือขวาโดยตรง (เช่นควบคุมระดับความไม่สมมาตร c=12เป็นกรณีสมมาตร) สำหรับ logitn ปกติμพารามิเตอร์ควบคุมความไม่สมดุล สำหรับการแจกแจงเบต้าสัญลักษณ์ของαβ (เท่ากับเครื่องหมายของ αα+β12) ควบคุมมัน

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