การทดสอบเชิงสถิติสำหรับรูปแบบเส้นอวกาศ?


32

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

ข้อมูลที่ฉันต้องการวิเคราะห์คือเส้น OD (ต้นทาง - ปลายทาง) ของการเคลื่อนไหวของมนุษย์และสัตว์ (คล้ายกับตัวอย่างในการจัดกลุ่มบรรทัดที่ไม่ได้จัดเส้นทาง )

จนถึงตอนนี้ความคิดหนึ่งก็คือการปฏิบัติกับเส้นเช่นจุด 4D และใช้การทดสอบรูปแบบจุด แต่ฉันไม่แน่ใจว่าเหมาะสมหรือไม่

การทดสอบในอุดมคติจะทำให้สามารถพิจารณาได้ว่ามีกลุ่มของเส้นหรือไม่

ตามสัญชาตญาณฉันจะบอกว่าหลายบรรทัดที่เริ่มต้นที่จุดเริ่มต้นเดียวกัน แต่มีปลายทางที่แตกต่างกันทุกประเภทไม่ควรพิจารณาว่าเป็นคลัสเตอร์ ในทางกลับกันหลายบรรทัดที่รัน (ใกล้เคียง) ขนานกันเป็นเวลานานจะเป็นคลัสเตอร์ ป้อนคำอธิบายรูปภาพที่นี่


สิ่งที่ควรเป็นพฤติกรรมของคุณถ้าหนึ่งบรรทัดขนานกับอีกบรรทัด แต่ 1) สั้นกว่าบรรทัดแรกมากหรือ 2) "ไกล" ออกไปในทิศทางของบรรทัดแรก
radouxju

@radouxju ในกรณีเหล่านั้นฉันจะบอกว่าพวกเขาไม่ได้อยู่ในกลุ่มเดียวกัน
underdark

คำตอบ:


17

นี่เป็นคำถามที่ยากเนื่องจากมีสถิติกระบวนการเชิงพื้นที่ที่พัฒนาขึ้นสำหรับคุณลักษณะของบรรทัดไม่มากนัก โดยไม่ต้องขุดลงไปในสมการและรหัสอย่างจริงจังสถิติกระบวนการชี้ไม่สามารถนำไปใช้กับคุณลักษณะเชิงเส้นได้จึงไม่ถูกต้องเชิงสถิติ นี่เป็นเพราะโมฆะที่รูปแบบที่กำหนดได้รับการทดสอบนั้นขึ้นอยู่กับเหตุการณ์ของจุดและไม่ใช่การอ้างอิงเชิงเส้นในเขตข้อมูลสุ่ม ฉันต้องบอกว่าฉันไม่รู้ด้วยซ้ำว่าโมฆะจะมีค่าเท่าความรุนแรงและการจัดเรียง / การวางแนวจะยิ่งยากขึ้นไปอีก

ฉันแค่ถ่มน้ำลายที่นี่ แต่ฉันสงสัยว่าการประเมินความหนาแน่นของเส้นคู่กับระยะทางแบบยุคลิด (หรือระยะทาง Hausdorff ถ้าเส้นที่ซับซ้อน) จะไม่บ่งชี้ว่ามีการจัดกลุ่มอย่างต่อเนื่อง ข้อมูลนี้สามารถสรุปให้กับเวกเตอร์ของเส้นได้โดยใช้ความแปรปรวนเพื่ออธิบายความยาว (โทมัส 2011) และกำหนดค่าคลัสเตอร์โดยใช้สถิติเช่น K-mean ฉันรู้ว่าคุณไม่ได้อยู่หลังกลุ่มที่ได้รับมอบหมาย แต่ค่าคลัสเตอร์สามารถแบ่งพาร์ติชันองศาของการทำคลัสเตอร์ได้ เห็นได้ชัดว่าสิ่งนี้จะต้องมีขนาดที่เหมาะสมที่สุดของ k ดังนั้นจึงไม่มีการกำหนดกลุ่มโดยพลการ ฉันคิดว่านี่จะเป็นวิธีที่น่าสนใจในการประเมินโครงสร้างขอบในตัวแบบเชิงทฤษฎีของกราฟ

นี่เป็นตัวอย่างการทำงานใน R ขอโทษด้วย แต่เร็วกว่าและทำซ้ำได้มากกว่าให้ตัวอย่าง QGIS และอยู่ในเขตความสะดวกสบายของฉัน :)

เพิ่มไลบรารีและใช้วัตถุ copper psp จาก spatstat เป็นตัวอย่างบรรทัด

library(spatstat)
library(raster)
library(spatialEco)

data(copper)
l <- copper$Lines
l <- rotate.psp(l, pi/2)

คำนวณความหนาแน่นของบรรทัดคำสั่งที่หนึ่งและที่สองที่ได้มาตรฐานจากนั้นประสานกับวัตถุระดับแรสเตอร์

d1st <- density(l)
  d1st <- d1st / max(d1st)
  d1st <- raster(d1st)  
d2nd <- density(l, sigma = 2)
  d2nd <- d2nd / max(d2nd)
  d2nd <- raster(d2nd)  

สร้างมาตรฐานความหนาแน่นของลำดับที่ 1 และ 2 ในความหนาแน่นที่รวมเข้าด้วยกัน

d <- d1st + d2nd
d <- d / cellStats(d, stat='max')  

คำนวณระยะทางแบบยุคลิดแบบคว่ำมาตรฐานและบีบบังคับให้อยู่ในระดับแรสเตอร์

euclidean <- distmap(l)
euclidean <- euclidean / max(euclidean)
euclidean <- raster.invert(raster(euclidean))

coatce spatstat psp ไปยังวัตถุ Sp SpialialLinesDataFrame เพื่อใช้ใน raster :: แยก

as.SpatialLines.psp <- local({
     ends2line <- function(x) Line(matrix(x, ncol=2, byrow=TRUE))
     munch <- function(z) { Lines(ends2line(as.numeric(z[1:4])), ID=z[5]) }
     convert <- function(x) {
        ends <- as.data.frame(x)[,1:4]
        ends[,5] <- row.names(ends)
        y <- apply(ends, 1, munch)
        SpatialLines(y)
     }
     convert
})
l <- as.SpatialLines.psp(l)
l <- SpatialLinesDataFrame(l, data.frame(ID=1:length(l)) )

ลงจุดผลลัพธ์

par(mfrow=c(2,2))
  plot(d1st, main="1st order line density")
    plot(l, add=TRUE)
  plot(d2nd, main="2nd order line density")
    plot(l, add=TRUE) 
  plot(d, main="integrated line density")
    plot(l, add=TRUE)   
  plot(euclidean, main="euclidean distance")
    plot(l, add=TRUE) 

แยกค่าแรสเตอร์และคำนวณสถิติสรุปที่เกี่ยวข้องกับแต่ละบรรทัด

l.dist <- extract(euclidean, l)
l.den <- extract(d, l)
l.stats <- data.frame(min.dist = unlist(lapply(l.dist, min)),
                      med.dist = unlist(lapply(l.dist, median)),
                      max.dist = unlist(lapply(l.dist, max)),
                      var.dist = unlist(lapply(l.dist, var)),
                      min.den = unlist(lapply(l.den, min)),
                      med.den = unlist(lapply(l.den, median)),
                      max.den = unlist(lapply(l.den, max)),
                      var.den = unlist(lapply(l.den, var)))

ใช้ค่าเงาของคลัสเตอร์เพื่อประเมินค่า k ที่เหมาะสม (จำนวนของคลัสเตอร์) ด้วยฟังก์ชัน ultimate.k จากนั้นกำหนดค่าคลัสเตอร์ให้กับบรรทัด จากนั้นเราสามารถกำหนดสีให้กับแต่ละคลัสเตอร์และพล็อตที่ด้านบนของแรสเตอร์ความหนาแน่น

clust <- optimal.k(scale(l.stats), nk = 10, plot = TRUE)                      
  l@data <- data.frame(l@data, cluster = clust$clustering) 

kcol <- ifelse(clust$clustering == 1, "red", "blue")
plot(d)
  plot(l, col=kcol, add=TRUE)

ณ จุดนี้เราสามารถทำการสุ่มของเส้นเพื่อทดสอบว่าความเข้มและระยะทางที่เกิดขึ้นนั้นสำคัญจากการสุ่มหรือไม่ คุณสามารถใช้ฟังก์ชั่น "rshift.psp" เพื่อสุ่มปรับแนวเส้นของคุณ คุณสามารถสุ่มจุดเริ่มต้นและจุดหยุดและสร้างแต่ละบรรทัดใหม่ได้

นอกจากนี้เรายังสงสัยว่า "จะเกิดอะไรขึ้นถ้า" คุณเพิ่งทำการวิเคราะห์รูปแบบจุดโดยใช้สถิติการวิเคราะห์ที่ไม่แปรผันหรือการวิเคราะห์ข้ามในจุดเริ่มต้นและจุดหยุดซึ่งไม่เปลี่ยนแปลงของเส้น ในการวิเคราะห์แบบ univariate คุณจะเปรียบเทียบผลลัพธ์ของจุดเริ่มต้นและจุดหยุดเพื่อดูว่ามีความสอดคล้องกันในการจัดกลุ่มระหว่างรูปแบบจุดสองจุดหรือไม่ สิ่งนี้สามารถทำได้ผ่าน f-hat, G-hat หรือ Ripley's-K-hat (สำหรับกระบวนการจุดที่ไม่มีเครื่องหมาย) อีกวิธีหนึ่งคือการวิเคราะห์แบบไขว้ (เช่น cross-K) ซึ่งกระบวนการสองจุดนั้นถูกทดสอบพร้อมกันโดยทำเครื่องหมายว่าเป็น [เริ่ม, หยุด] สิ่งนี้จะระบุความสัมพันธ์ของระยะทางในกระบวนการทำคลัสเตอร์ระหว่างจุดเริ่มต้นและจุดหยุด อย่างไรก็ตาม การพึ่งพาเชิงพื้นที่ (nonstaionarity) ในกระบวนการความเข้มพื้นฐานสามารถเป็นปัญหาในรูปแบบเหล่านี้ทำให้พวกเขาไม่อยู่ในรูปแบบเดียวกันและต้องการแบบจำลองที่แตกต่างกัน กระแทกแดกดันกระบวนการ inhomogeneous ถูกสร้างแบบจำลองโดยใช้ฟังก์ชั่นความเข้มซึ่งทำให้เรากลับไปที่วงกลมเต็มความหนาแน่นจึงสนับสนุนความคิดของการใช้ความหนาแน่นของสเกลแบบบูรณาการเป็นตัวชี้วัดของการจัดกลุ่ม

นี่คือตัวอย่างการทำงานที่รวดเร็วหากสถิติ Ripleys K (Besags L) สำหรับการหาค่าอัตโนมัติของกระบวนการจุดที่ไม่ได้ทำเครื่องหมายโดยใช้การเริ่มต้นให้หยุดตำแหน่งของคลาสคุณลักษณะบรรทัด รุ่นสุดท้ายคือ cross-k โดยใช้ทั้งตำแหน่งเริ่มต้นและหยุดเป็นกระบวนการทำเครื่องหมายเล็กน้อย

library(spatstat)
  data(copper)
  l <- copper$Lines
  l <- rotate.psp(l, pi/2)

Lr <- function (...) {
 K <- Kest(...)
  nama <- colnames(K)
   K <- K[, !(nama %in% c("rip", "ls"))]
   L <- eval.fv(sqrt(K/pi)-bw)
  L <- rebadge.fv(L, substitute(L(r), NULL), "L")
 return(L)
}

### Ripley's K ( Besag L(r) ) for start locations
start <- endpoints.psp(l, which="first")
marks(start) <- factor("start")
W <- start$window
area <- area.owin(W)
lambda <- start$n / area
 ripley <- min(diff(W$xrange), diff(W$yrange))/4
   rlarge <- sqrt(1000/(pi * lambda))
     rmax <- min(rlarge, ripley)
( Lenv <- plot( envelope(start, fun="Lr", r=seq(0, rmax, by=1), nsim=199, nrank=5) ) )

### Ripley's K ( Besag L(r) ) for end locations
stop <- endpoints.psp(l, which="second")
  marks(stop) <- factor("stop")
W <- stop$window
area <- area.owin(W)
lambda <- stop$n / area
 ripley <- min(diff(W$xrange), diff(W$yrange))/4
   rlarge <- sqrt(1000/(pi * lambda))
     rmax <- min(rlarge, ripley)
( Lenv <- plot( envelope(start, fun="Lr", r=seq(0, rmax, by=1), nsim=199, nrank=5) ) )

### Ripley's Cross-K ( Besag L(r) ) for start/stop
sdata.ppp <- superimpose(start, stop)
( Lenv <- plot(envelope(sdata.ppp, fun="Kcross", r=bw, i="start", j="stop", nsim=199,nrank=5, 
                 transform=expression(sqrt(./pi)-bw), global=TRUE) ) )

อ้างอิง

โทมัส JCR (2011) อัลกอริทึมการจัดกลุ่มใหม่ตาม K-หมายถึงการใช้ส่วนของเส้นเป็นต้นแบบ ใน: San Martin C. , Kim SW (eds) ความคืบหน้าในการจดจำรูปแบบการวิเคราะห์ภาพคอมพิวเตอร์วิสัยทัศน์และแอปพลิเคชัน CIARP 2011. หมายเหตุการบรรยายในวิทยาการคอมพิวเตอร์, ปี 7042. สปริงเกอร์, เบอร์ลิน, ไฮเดลเบิร์ก


14

คุณอาจต้องการที่จะดูเป็นระยะFréchet ฉันเพิ่งค้นพบเมื่อไม่นานมานี้หลังจากมีคำถามเมื่อเร็ว ๆ นี้เพื่อค้นหาการใช้งานของหลาม

นี้เป็นตัวชี้วัดสำหรับการค้นหาความคล้ายคลึงกันของพื้นที่ LineStrings มันเป็นความคิดที่คล้ายกันกับระยะทางของ Hausdorff ซึ่งเทียบเท่ากับการวัดความคล้ายคลึงกันของรูปหลายเหลี่ยม แต่สำหรับ linestrings ที่มีทิศทาง

ระยะทางของFréchetนั้นถูกกำหนดให้เป็นความยาวน้อยที่สุดของสายจูงสุนัขที่เชื่อมต่อกับวิถีหนึ่งกับเจ้าของในวิถีที่สองซึ่งทั้งคู่ไม่เคยเคลื่อนถอยหลัง

ตัวชี้วัดนี้จะมีค่าเล็กน้อยสำหรับสองเส้นโค้งซึ่งอยู่ใกล้กันเกือบขนานขนานกันในแนวเดียวกันและมีความยาวใกล้เคียงกัน

ที่ไม่ตอบส่วนรหัสประจำกลุ่มแม้ว่า

มีเป็นการนำเสนอที่ครอบคลุมที่นี่ สถานการณ์ของคุณดูเหมือนกรณีใช้งานบางส่วนที่กล่าวถึงในหัวข้อ 46-49

ตัวชี้วัดนี้มีวิธีการที่ไม่เกี่ยวกับภูมิฐานมากมายเช่น

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

ดังนั้นในขณะที่มีเอกสารจำนวนมากในบรรณานุกรมครอบคลุมหัวข้อนี้ นอกจากนี้เอกสารเหล่านี้ส่วนใหญ่ยังอยู่ภายใต้อัลกอริทึม / คณิตศาสตร์ / วิทยาศาสตร์คอมพิวเตอร์มากกว่าเชิงพื้นที่ / ธรณีศาสตร์และมีวัตถุประสงค์ตาม

อย่างไรก็ตามบทความนี้ดูมีแนวโน้ม: -

Buchin, K. , Buchin, M. , และ Wang, Y. (2009) อัลกอริทึมที่แน่นอนสำหรับการจับคู่โค้งบางส่วนผ่านระยะทางFréchet ในการดำเนินการประชุมวิชาการ ACM-SIAM ครั้งที่ 20 บนอัลกอริทึมแบบแยกหน้า 645–654

เอกสารอื่น ๆ บางฉบับฟังดูใกล้เคียงกับเจตนาของคุณมากขึ้น - การระบุกลุ่มและการจัดสรรวิถีลูกให้กับกลุ่ม - แต่เอกสารเหล่านี้จะแสดงโดยใช้ข้อมูลอนุกรมเวลาหรือตัวอย่างอื่น ๆ ที่ไม่ใช่เชิงพื้นที่ อย่างไรก็ตามพวกเขาอาจชี้ไปในทิศทางที่น่าสนใจ


2
ฉันคิดว่าการรวมกลุ่มขั้นต่ำ (หรือ DBSCAN) โดยใช้ระยะทาง Frechet หรือ Hausdorff แทนที่จะเป็นระยะทางแบบยุคลิดจะเป็นทางออกที่ดี
dbaston

ฉันชอบระยะทางของ Frechet อยู่และฉันก็ชอบที่การนำเสนอนั้นเปรียบเทียบ "jellybeans" และ "bellybuttons"
Fezter

5

ผมแนะนำกับการใช้วิธีการคล้ายกับที่อธิบาย ที่นี่

ALGORITHM และการตั้งชื่อ:

ก) ชื่อเลเยอร์บรรทัด NODES คำนวณตลับลูกปืน

b) spatially เข้าร่วมกับตัวเอง (หนึ่งถึงมาก) โดยใช้ความอดทนระยะทาง ลิงค์ชั้นชื่อ

c) ลบออกจาก LINKS รวมเข้ากับตัวเองนั่นคือ NAME = NAME_1

d) ในลิงค์ค้นหาคู่ของทิศทางที่เหมือนกัน ฉันใช้:

def theSame(aList,tol):
    maxB=max(aList);minB=min(aList)
    if abs(maxB-minB)<tol:return 1
    if abs(maxB-minB-180)<tol:return 1
    return 0
#-----------
theSame( [!BEARING!, !BEARING_1!],15)

คือเส้นสมมุติที่ไปในทิศทางตรงกันข้ามจะคล้ายกันในแง่ของทิศทาง

d) ลบคู่ (0) ที่ไม่คล้ายกันออกจาก LINKS

e) คำนวณกลุ่มของ LINKS ที่เชื่อมต่อผ่าน NODES และโอนหมายเลขกลุ่มไปยังตาราง NODES:

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

น่าเสียดาย:

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

อย่างไรก็ตามสถิติอย่างง่ายของแบริ่งภายในกลุ่มเช่นค่าเบี่ยงเบนมาตรฐานของ:

abs(tan(bearing))

ไม่มีการเบี่ยงเบนในกรณีแรกและใหญ่มากในวินาที สถิติความยาวในทำนองเดียวกันสามารถช่วยในการ 'วิ่งขนานกันเป็นเวลานาน'

หากด้านบนเป็นที่สนใจฉันสามารถอัปเดตคำตอบด้วยสคริปต์ที่คำนวณกลุ่มลิงก์ที่เชื่อมโยง มันใช้โมดูล arcpy และ networkx

ไม่ทราบวิธีรักษาคู่ของเส้นจากจุดเดียวกันในทิศทางตรงกันข้าม ...


ฉันสนใจที่จะเห็นสคริปต์
ตัวอักษร

1
@RichardLaw ไปตามลิงก์ที่บรรทัดที่ 1 ของโซลูชันของฉันและเลื่อนลงเพื่อดู ฉันมีเวอร์ชั่นที่ดีขึ้นเล็กน้อย แต่จะทำเช่นนี้ ลอจิกนั้นง่ายมาก: 1. สร้างกราฟโดยใช้ลิงก์และโหนดที่เชื่อมต่อกับมัน 2. นำโหนดแรกและค้นหาบรรพบุรุษ (กลุ่ม 0) 3) ลบโหนดออกจากกราฟและทำซ้ำจนกว่าจะไม่มีโหนดเหลือ ฉันใช้มันซ้ำ ๆ เพื่อค้นหากลุ่มของท่อ (สตรีมและอะไรก็ตาม) ที่ไม่ได้เชื่อมต่อกันสำหรับชุดข้อมูล Council / LINZ คุณภาพสูง
4328 FelixIP

5

ในสายตาของฉันมีปัญหาเกี่ยวกับคำจำกัดความของบรรทัดซึ่งจะเป็นตัวกำหนดว่าจะใช้แนวทางใด หากสิ่งเหล่านี้เป็นคู่ OD และเรขาคณิตไม่ได้มีบทบาทฉันจะเข้าหาสิ่งนี้โดยพิจารณาจากการทำคลัสเตอร์เครือข่าย คุณบอกว่าเครือข่ายไม่ได้สร้างเครือข่าย - ดังนั้นไม่ว่าจะเป็น แต่เป็นไปได้ว่าต้นกำเนิดและปลายทางจะตกอยู่ในภูมิภาคที่มีความหมายและทำให้คุณสามารถใช้เป็นเครือข่ายได้

หากรูปทรงเรขาคณิตมีบางสิ่งที่จะพูด (นี่คือบอกว่าวิถี GPS และคุณต้องการพิจารณารูปทรงเรขาคณิต) กว่าที่คุณจะต้องทำงานในพื้นที่ (x, y, t) - เรขาคณิตที่คล้ายกันของรอยเท้าเคลื่อนไหว แต่แตกต่างกัน เวลาอาจไม่ได้รับการประเมินเหมือนกัน - นี่ไม่ได้ระบุไว้ในคำถาม

ความเป็นไปได้บางอย่างที่คุณสามารถดู:

  1. สิ่งที่ใกล้เคียงกับความต้องการของคุณมากที่สุดคือ Dodge, Weibel, Forootan (2009), ที่นี่ http://orca.cf.ac.uk/94865/1/PhysicsMovement.pdf
  2. หากสามารถทำให้รูปทรงเรขาคณิตได้ง่ายขึ้นพารามิเตอร์ที่กล่าวถึงในที่นี้อาจมีการใช้งาน: http://www.tandfonline.com/doi/full/10.1080/17445647.2017.1313788

แต่ในที่สุดการอ่านคำถามเริ่มต้นของคุณใหม่อีกครั้งมันอาจจะง่ายกว่า: คุณสามารถคำนวณระยะทางระหว่างส่วนต่าง ๆ ของส่วนขยายเชิงเส้นของส่วนและจุดที่ใกล้ที่สุดได้หรือไม่คุณอาจคำนวณได้ตามปกติ (อาจขึ้นอยู่กับความยาว ของกลุ่มตัวเอง) และใช้อัลกอริทึมการจัดกลุ่มเมทริกซ์? การให้เหตุผล: กลุ่มที่ตัดกันอยู่ไกลจะคล้ายกัน (ขนาน) มากกว่ากลุ่มที่ตัดกันใกล้ ในภาพวาดคุณไม่ได้พูดถึงวิธีการปฏิบัติต่อส่วนร่วมเชิงเส้นหรือขนานที่อยู่ในส่วนออฟเซ็ท ฉันคิดว่านี่จะทำให้เกิดปัญหากับวิธีการแก้ปัญหาข้างต้น (แก้ไขเพื่อความชัดเจนโดยระบุ "ส่วนขยายเชิงเส้น" ด้านบนอย่างชัดเจน)

หมายเหตุ (ม.ค. 2018): ฉันเพิ่งเจอสิ่งนี้:

  1. Cai, Yuhan และ Raymond Ng "ดัชนี spatio - ชั่วคราววิถีกับ Chebyshev พหุนาม" การดำเนินการของการประชุมนานาชาติ ACM SIGMOD ประจำปี 2547 เรื่องการจัดการข้อมูล ACM, 2004

ซึ่งเกี่ยวข้องกับวิถีความคล้ายคลึงกันและดังนั้นจะช่วยให้ปริมาณความคล้ายคลึงกันในระดับหนึ่ง นี่เป็นพื้นฐานของการประมาณพหุนามของเส้นโค้งและคำนวณระยะทาง Chebyshev


4

คุณช่วยให้รายละเอียดเพิ่มเติมเกี่ยวกับประเภทของข้อมูลที่คุณกำลังทำงานอยู่ได้หรือไม่? นี่เป็นเพียงชุดของเส้นที่แยกออกหรือเป็นรูปเครือข่ายหรือไม่? คุณเคยใช้เครื่องมือ ArcGIS ในการวิเคราะห์รูปแบบเชิงพื้นที่หรือไม่? วิธีการ ArcGIS หลายวิธี (ดัชนี K, NN, Morans I) ของ Ripley ใช้เพียงเซนทรอยด์ของบรรทัด / รูปหลายเหลี่ยมเมื่อใช้กับข้อมูลที่ไม่ใช่จุด อย่างไรก็ตามที่นี่คุณอาจต้องพิจารณาแยกแต่ละบรรทัดออกเป็นส่วนเท่า ๆ กันเพื่อหลีกเลี่ยงบรรทัดที่ยาวมาก ๆ ที่ไม่ได้รับการพิจารณาเนื่องจากเซนทรอยด์ของพวกมันอยู่ไกลมาก

สิ่งอื่น ๆ ที่คิดคือแนวคิดว่ากลุ่มของเส้นคืออะไร คุณอาจมีหลายบรรทัดที่มีต้นกำเนิดใกล้กัน แต่จากนั้นจุดสิ้นสุดของพวกเขาอาจแยกย้ายกันไป ในทำนองเดียวกันคุณอาจได้รับหลายบรรทัดที่เริ่มต้นและสิ้นสุดใกล้กันมาก แต่ก็กลายเป็นแยกย้ายกันไปมากระหว่างจุดเริ่มต้น / สิ้นสุดของพวกเขา

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

ขออภัยนี่ไม่ใช่คำตอบที่สมบูรณ์สำหรับปัญหาของคุณ แต่ฉันคิดว่าการตอกย้ำแนวคิดที่สมบูรณ์ของสิ่งที่คุณพยายามบรรลุอาจเป็นวิธีแก้ปัญหาที่ดีกว่า

UPDATE

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

ดังนั้นการใช้ Getis-Ord GI (การวิเคราะห์ฮอตสปอต) จะเป็นเครื่องมือที่ดีที่จะใช้ในการมองเห็นว่ากลุ่มอยู่ที่ไหน และจากนั้น Moran ระดับโลกของฉันในการประเมินระดับการรวมกลุ่มระดับโลก

ระยะทางที่คุณแบ่งส่วนของเส้นจะมีผลกับระดับของการจัดกลุ่มที่พบ หากคุณกำลังมองหากลุ่มที่ระดับ 1 กม. คุณจะต้องแบ่งส่วนของเส้นตรงนั้น ในทำนองเดียวกันหากคุณกำลังมองหากลุ่มที่ระดับ 100 เมตรคุณจะต้องแบ่งกลุ่มบรรทัดตาม นี่คือเพื่อให้คุณไม่พลาดบรรทัดและดังนั้นคุณจึงไม่ตรวจจับแต่ละบรรทัดเป็นคลัสเตอร์


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

การวิเคราะห์ความหนาแน่นของเส้นอาจเป็นวิธีการถอยกลับหากฉันไม่พบสิ่งที่เหมาะสมกว่า
underdark

การบัฟเฟอร์บรรทัดหลักในระยะทางที่กำหนดจากนั้นทำการค้นหาบรรทัดที่ไม่ได้ล้อมรอบด้วยบัฟเฟอร์อย่างสมบูรณ์จะเป็นวิธีแก้ปัญหาหรือไม่ ฉันได้ทำสิ่งนี้อย่างมากในอดีตเพื่อค้นหาเส้นทางการเดินทางที่น่าจะเป็นไปได้มากที่สุด แต่ข้อมูลนั้นประกอบไปด้วยหลายโหนดโพลิไลน์มากกว่าส่วนของเส้นตรง
jbgramm

@ jbgramm ฉันสามารถนึกถึงวิธีการมากมายที่จะคำนวณบางอย่าง แต่ฉันไม่ใช่นักสถิติและฉันจึงมองหาวิธีการที่กำหนดไว้ - หากมีอยู่
underdark

2
การใช้จุดกึ่งกลางเส้นหรือจุดยอดเพื่อแทนกระบวนการจุดนั้นไม่ใช่วิธีการทางสถิติที่ถูกต้อง นอกจากนี้คุณกำลังเปลี่ยนแปลงการเป็นตัวแทนของกระบวนการเชิงพื้นที่ด้วยเช่นกัน ฉันจะโพสต์ reccomdations แต่โดยความจริงแล้วสิ่งเดียวที่ให้แนวทางที่ถูกต้องคือ @underdark คำแนะนำเกี่ยวกับความหนาแน่นของเส้น ข้ามเครื่องชั่งบวกกับสถิติความสัมพันธ์อัตโนมัติจะบ่งบอกถึงระดับของการจัดกลุ่มในคุณสมบัติเชิงเส้น
Jeffrey Evans

3

ขอบคุณสำหรับตัวอย่าง

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

คำนวณสี่เหลี่ยมมุมฉากขั้นต่ำจากนั้นขยายเป็นสี่เหลี่ยมโดยพลการ แต่จะให้จำนวนมากเท่ากันที่มุมทั้งสี่

ค้นหาจุดศูนย์กลางมวลของการสร้างสี่เหลี่ยมผืนผ้าคำนวณ azimuthal และการกระจายระยะทางสำหรับจุด OD สำหรับแต่ละบรรทัดและทำเช่นเดียวกันโดยใช้มุมของสี่เหลี่ยมผืนผ้าที่มีขอบเขตของคุณพร้อมกับการเปรียบเทียบ azimuths ของเส้น

ทดสอบการขนานจากมุมทั้งสี่ไปยังจุดสิ้นสุดของแต่ละเรย์ ทดสอบการขนานจากจุดศูนย์กลางมวลจนถึงจุดสิ้นสุดของแต่ละรังสี

ด้วยการทำเช่นนี้คุณสามารถเปรียบเทียบความเบี่ยงเบนจากมุมกับส่วนท้าย ตัวอย่าง (ก) คุณจะมีเส้นคู่ขนานจากมุมทั้งสองไปยังกลุ่มสามบรรทัดแต่ละเส้น คุณจะมีเส้นคู่ขนานที่ใกล้เคียงกันจากจุดศูนย์กลางมวลจนถึงปลายปลายสุดของเส้น

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

ตัวอย่าง (c) ดูเหมือนจะสุ่ม

ตัวอย่าง (d) ไม่สุ่มมันเป็นรัศมี

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

ด้านบนเป็นเพียงความคิดเห็นของคนโง่และฉันอาจผิด


-1

ตามคำอธิบายสัญชาตญาณของคุณเกณฑ์สำหรับ 2 บรรทัดที่จะขนานคืออะไร

โดยทั่วไปคุณสามารถทำการทดสอบกับจุดเริ่มต้นหรือจุดสิ้นสุด:
ให้ Sx = (start_x_line_1 - start_x_line_2),
Sy = (start_y_line_1 - start_y_line_2)
และ Ex, Ey เหมือนกัน แต่สำหรับจุดสิ้นสุด

ดังนั้นหาก sqrt (Sx² + Sy²) และ sqrt (Ex² + Ey²) ร้องต่ำกว่าเกณฑ์ที่กำหนดคุณอาจพิจารณาว่าเส้นเหล่านี้ขนานกัน

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