এটি একটি কঠিন প্রশ্ন, যেমন লাইন বৈশিষ্ট্যগুলির জন্য স্থানিক প্রক্রিয়া পরিসংখ্যানগুলি বিকাশমান কেবলমাত্র অনেকগুলিই হয়নি। সমীকরণ এবং কোডগুলিতে গুরুত্ব সহকারে খনন না করে পয়েন্ট প্রক্রিয়া পরিসংখ্যানগুলি লিনিয়ার বৈশিষ্ট্যগুলির জন্য সহজেই প্রযোজ্য নয় এবং সুতরাং পরিসংখ্যানগতভাবে অবৈধ। এটি কারণ যে নাল, যে প্রদত্ত প্যাটার্নটির বিরুদ্ধে পরীক্ষা করা হয় তা বিন্দু ইভেন্টের ভিত্তিতে হয় এবং এলোমেলো ক্ষেত্রে লিনিয়ার নির্ভরতা নয়। আমার বলতে হবে যে নুলটি তীব্রতা এবং বিন্যাস / অভিমুখীকরণ আরও জটিল হবে তবে আমি কী জানি না।
আমি এখানে কেবল থুতু-বল করছি তবে, আমি ভাবছি যদি ইউক্লিডিয়ান দূরত্বের সাথে লাইন ঘনত্বের মাল্টি-স্কেল মূল্যায়ন (বা লাইনগুলি জটিল হয় তবে হাউসডর্ফ দূরত্ব) ক্লাস্টারিংয়ের একটানা পরিমাপকে নির্দেশ করে না। এই ডেটাটি লাইন ভেক্টরগুলির সংক্ষিপ্তসার হিসাবে, দৈর্ঘ্যের বৈষম্যের জন্য অ্যাকাউন্টে বৈকল্পিক ব্যবহার করে (থমাস 2011), এবং কে-মানেগুলির মতো একটি পরিসংখ্যান ব্যবহার করে একটি ক্লাস্টারের মান নির্ধারণ করা হয়েছিল। আমি জানি যে আপনি নির্ধারিত ক্লাস্টারের পরে নন তবে ক্লাস্টার মান ক্লাস্টারিংয়ের ডিগ্রি বিভাজন করতে পারে। এটি অবশ্যই স্পষ্টতই কে এর সর্বোত্তম ফিট দরকার, স্বেচ্ছাসেবী ক্লাস্টার নির্ধারিত হয় না। আমি ভাবছি যে গ্রাফ তাত্ত্বিক মডেলগুলিতে প্রান্ত কাঠামোটি মূল্যায়নের ক্ষেত্রে এটি একটি আকর্ষণীয় পন্থা হবে।
এখানে আর এর একটি কাজের উদাহরণ, দুঃখিত, তবে এটি কিউজিসআইএসের উদাহরণ দেওয়ার চেয়ে দ্রুত এবং আরও পুনরুত্পাদনযোগ্য এবং এটি আমার আরামদায়ক অঞ্চলে বেশি :)
লাইব্রেরি যুক্ত করুন এবং স্পটস্যাট থেকে তামার পিএসপি অবজেক্টটি লাইন উদাহরণ হিসাবে ব্যবহার করুন
library(spatstat)
library(raster)
library(spatialEco)
data(copper)
l <- copper$Lines
l <- rotate.psp(l, pi/2)
মানযুক্ত 1 ম এবং 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))
রাস্টারগুলিতে ব্যবহারের জন্য স্পা স্পটাল লাইনস ডেটা ফ্রেম অবজেক্টকে স্প্রেস্ট্যাট পিএসপি কোরেস করুন
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 ফাংশন সহ ক্লাস্টার মানগুলি লাইনগুলিতে নির্ধারণ করুন। তারপরে আমরা প্রতিটি ক্লাস্টারে রঙ এবং ঘনত্বের রাস্টারটির উপরে প্লট নির্ধারণ করতে পারি।
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)
ফলাফলের তীব্রতা এবং দূরত্ব এলোমেলো থেকে তাত্পর্যপূর্ণ হয় যদি এই মুহুর্তে কেউ পরীক্ষার জন্য লাইনের একটি এলোমেলোকরণ করতে পারে could আপনি আপনার লাইনগুলিকে এলোমেলোভাবে পুনরায় তৈরি করতে "rshift.psp" ফাংশনটি ব্যবহার করতে পারেন। আপনি কেবল সূচনা এবং স্টপ পয়েন্টগুলি এলোমেলো করে প্রতিটি লাইনে পুনরায় তৈরি করতে পারেন।
কেউ আশ্চর্য হয় যে "কি হবে" আপনি কেবলমাত্র সূত্রের সূত্রপাত এবং স্টপ পয়েন্টগুলির বিষয়ে অবিবাহিত বা ক্রস অ্যানালাইসিসের পরিসংখ্যান ব্যবহার করে একটি পয়েন্ট প্যাটার্ন বিশ্লেষণ করেছেন performed একটি অবিচ্ছিন্ন বিশ্লেষণে আপনি শুরু এবং স্টপ পয়েন্টগুলির ফলাফলগুলির সাথে তুলনা করবেন যাতে দুটি পয়েন্টের নিদর্শনগুলির মধ্যে ক্লাস্টারিংয়ের মধ্যে সামঞ্জস্যতা রয়েছে কিনা তা দেখুন। এটি কোনও এফ-টুপি, জি-টুপি বা রিপলে-কে-টুপি (চিহ্নযুক্ত পয়েন্ট প্রক্রিয়াগুলির জন্য) এর মাধ্যমে করা যেতে পারে। আরেকটি পদ্ধতির ক্রস বিশ্লেষণ (যেমন, ক্রস-কে) হবে যেখানে দুটি পয়েন্ট প্রক্রিয়াগুলি [স্টার্ট, স্টপ] হিসাবে চিহ্নিত করে একই সাথে পরীক্ষা করা হয়। এটি সূচনা এবং স্টপ পয়েন্টগুলির মধ্যে ক্লাস্টারিং প্রক্রিয়াতে দূরত্বের সম্পর্ককে নির্দেশ করবে। যাহোক, অন্তর্নিহিত তীব্রতা প্রক্রিয়াটির উপর স্থানিক নির্ভরতা (অস্তিত্বহীনতা) এই জাতীয় মডেলগুলিকে সংঘবদ্ধ করে তোলে এবং একটি ভিন্ন মডেলের প্রয়োজন হয় requ হাস্যকরভাবে, অজৈব প্রক্রিয়াটি একটি তীব্রতা ফাংশন ব্যবহার করে মডেল করা হয় যা ক্লাস্টারিংয়ের একটি পরিমাপ হিসাবে স্কেল-ইন্টিগ্রেটেড ঘনত্ব ব্যবহার করার ধারণাকে সমর্থন করে আমাদের পুরো বৃত্তটিকে ঘনত্বের দিকে ফিরিয়ে দেয়।
এখানে যদি একটি রেপলিজ কে (বেসাগস এল) কোনও চিহ্নচিহ্ন বিন্দু প্রক্রিয়াটি স্বতঃসংশ্লিষ্টকরণের জন্য কোনও লাইন বৈশিষ্ট্য বর্গের অবস্থানগুলি থামান, থামানোর জন্য পরিসংখ্যানগুলির একটি দ্রুত কাজের উদাহরণ। সর্বশেষ মডেলটি নামমাত্র চিহ্নিত চিহ্নিত প্রক্রিয়া হিসাবে স্টার্ট এবং স্টপ উভয়ই ব্যবহার করে ক্রস-কে।
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) ) )
রেফারেন্স
টমাস জেসিআর (২০১১) কে-মিনের উপর ভিত্তি করে একটি নতুন ক্লাস্টারিং অ্যালগরিদম প্রোটোটাইপ হিসাবে একটি লাইন বিভাগ ব্যবহার করে। ইন: সান মার্টিন সি।, কিম এসডাব্লু। (সংস্করণ) প্যাটার্ন স্বীকৃতি, চিত্র বিশ্লেষণ, কম্পিউটার দৃষ্টি এবং অ্যাপ্লিকেশনগুলিতে অগ্রগতি। সিআইআরপি ২০১১. কম্পিউটার বিজ্ঞানে বক্তৃতা নোট, খণ্ড 7042. স্প্রিন্জার, বার্লিন, হাইডেলবার্গ