"উল্লেখযোগ্যভাবে" প্রশ্ন সর্বদা পৃথক, সর্বদা ডেটাগুলির জন্য একটি পরিসংখ্যানের মডেলকে প্রস্তাব দেয়। এই উত্তরটি এমন একটি সর্বাধিক সাধারণ মডেলের প্রস্তাব দেয় যা প্রশ্নের ন্যূনতম তথ্যের সাথে সামঞ্জস্যপূর্ণ। সংক্ষেপে, এটি বিস্তৃত বিভিন্ন ক্ষেত্রে কাজ করবে তবে কোনও পার্থক্য সনাক্ত করার জন্য এটি সর্বদা সবচেয়ে শক্তিশালী উপায় নাও হতে পারে।
তথ্যের তিনটি দিক সত্যই গুরুত্বপূর্ণ: পয়েন্ট দ্বারা দখল করা স্থানের আকৃতি; যে স্থান মধ্যে পয়েন্ট বিতরণ; এবং গ্রাফটি "শর্ত "যুক্ত পয়েন্ট-জোয়ার দ্বারা গঠিত - যা আমি" চিকিত্সা "গ্রুপ বলব। "গ্রাফ" বলতে আমার অর্থ চিকিত্সা গোষ্ঠীর পয়েন্ট-জোড় দ্বারা সূচিত পয়েন্ট এবং আন্তঃসংযোগগুলির প্যাটার্ন। উদাহরণস্বরূপ, গ্রাফের দশটি পয়েন্ট-জুড়ি ("প্রান্তগুলি") 20 টি স্বতন্ত্র পয়েন্ট বা পাঁচটি পয়েন্ট হিসাবে কম জড়িত থাকতে পারে। পূর্ববর্তী ক্ষেত্রে কোনও দুটি প্রান্ত একটি সাধারণ বিন্দু ভাগ করে না, তবে পরবর্তী ক্ষেত্রে প্রান্তগুলি পাঁচটি পয়েন্টের মধ্যে সমস্ত সম্ভাব্য জোড়া নিয়ে গঠিত।
n=3000σ(vi,vj)(vσ(i),vσ(j))3000!≈1021024একাধিক বিন্যাসন। যদি তা হয় তবে এর গড় দূরত্বটি সেই অনুমানের মধ্যে উপস্থিত দূরত্বের সাথে তুলনীয় হওয়া উচিত। এই সমস্ত অনুমতিগুলির কয়েক হাজার নমুনা তৈরি করে আমরা এলোমেলো গড় দূরত্বগুলির বিতরণটি খুব সহজেই অনুমান করতে পারি।
(এটি লক্ষণীয় যে এই পন্থাটি কেবলমাত্র সামান্য পরিবর্তনগুলি সহ, যে কোনও দূরত্ব বা প্রকৃতপক্ষে প্রতিটি সম্ভাব্য পয়েন্ট জোড়ার সাথে যুক্ত যে কোনও পরিমাণের সাথে কাজ করবে It এটি কেবলমাত্র দূরত্বের কোনও সংক্ষিপ্তসার জন্যও কাজ করবে।)
n=10028100100−13928
10028
10000
স্যাম্পলিং বিতরণগুলি পৃথক: যদিও গড় গড় দূরত্ব একই হয় তবে কিনারাগুলির মধ্যে গ্রাফিকাল আন্তঃনির্ভরতার কারণে গড় দূরত্বের পার্থক্য দ্বিতীয় ক্ষেত্রে বেশি হয় । এটি একটি কারণ যা কেন্দ্রীয় সীমাবদ্ধ উপপাদ্যের কোনও সাধারণ সংস্করণ ব্যবহার করা যায় না: এই বিতরণের মানক বিচ্যুতি গণনা করা কঠিন।
n=30001500
56
সাধারণত, সিমুলেশন এবং চিকিত্সা গ্রুপ যেগুলি চিকিত্সা গ্রুপের গড় দূরত্বের চেয়ে সমান বা তার চেয়ে বেশি উভয় থেকে মধ্যবর্তী দূরত্বের অনুপাত এই ননপ্যারমেট্রিক ক্রমায়ন পরীক্ষার পি-মান হিসাবে নেওয়া যেতে পারে ।
এই R
কনটেন্ট কপিরাইট আইনে পূর্বানুমতি তৈরি করতে ব্যবহার করা কোড।
n.vectors <- 3000
n.condition <- 1500
d <- 2 # Dimension of the space
n.sim <- 1e4 # Number of iterations
set.seed(17)
par(mfrow=c(2, 2))
#
# Construct a dataset like the actual one.
#
# `m` indexes the pairs of vectors with a "condition."
# `x` contains the coordinates of all vectors.
x <- matrix(runif(d*n.vectors), nrow=d)
x <- x[, order(x[1, ]+x[2, ])]
#
# Create two kinds of conditions and analyze each.
#
for (independent in c(TRUE, FALSE)) {
if (independent) {
i <- sample.int(n.vectors, n.condition)
j <- sample.int(n.vectors-1, n.condition)
j <- (i + j - 1) %% n.condition + 1
m <- cbind(i,j)
} else {
u <- floor(sqrt(2*n.condition))
v <- ceiling(2*n.condition/u)
m <- as.matrix(expand.grid(1:u, 1:v))
m <- m[m[,1] < m[,2], ]
}
#
# Plot the configuration.
#
plot(t(x), pch=19, cex=0.5, col="Gray", asp=1, bty="n",
main="The Data", xlab="X", ylab="Y",
sub=paste(length(unique(as.vector(m))), "points"))
invisible(apply(m, 1, function(i) lines(t(x[, i]), col="#80000040")))
points(t(x[, unique(as.vector(m))]), pch=16, col="Red", cex=0.6)
#
# Precompute all distances between all points.
#
distances <- sapply(1:n.vectors, function(i) sqrt(colSums((x-x[,i])^2)))
#
# Compute the mean distance in any set of pairs.
#
mean.distance <- function(m, distances)
mean(distances[m])
#
# Sample from the points using the same *pattern* in the "condition."
# `m` is a two-column array pairing indexes between 1 and `n` inclusive.
sample.graph <- function(m, n) {
n.permuted <- sample.int(n, n)
cbind(n.permuted[m[,1]], n.permuted[m[,2]])
}
#
# Simulate the sampling distribution of mean distances for randomly chosen
# subsets of a specified size.
#
system.time(
sim <- replicate(n.sim, mean.distance(sample.graph(m, n.vectors), distances))
stat <- mean.distance(m, distances)
p.value <- 2 * min(mean(c(sim, stat) <= stat), mean(c(sim, stat) >= stat))
hist(sim, freq=FALSE,
sub=paste("p-value:", signif(p.value, ceiling(log10(length(sim))/2)+1)),
main="Histogram of mean distances", xlab="Distance")
abline(v = stat, lwd=2, lty=3, col="Red")
}