প্রশ্নের হিসাবে আনুমানিক opালু প্লট করা একটি দুর্দান্ত জিনিস। তাত্পর্য অনুসারে ফিল্টারিংয়ের পরিবর্তে - যদিও - বা এর সাথে একত্রে - প্রতিটি প্রতিরোধের ডেটা ফিট করে এমন কিছু পরিমাপ কেন ম্যাপ করবেন না? এর জন্য, রিগ্রেশনটির গড় স্কোয়ার ত্রুটি সহজেই ব্যাখ্যা করা এবং অর্থপূর্ণ।
উদাহরণস্বরূপ, R
নীচের কোডটি 11 রাস্টারগুলির একটি টাইম সিরিজ উত্পন্ন করে, রিগ্রেশনগুলি সম্পাদন করে এবং ফলাফলটি তিনটি উপায়ে প্রদর্শন করে: নীচের সারিতে আনুমানিক opালু এবং পৃথক স্কোয়ার ত্রুটির পৃথক গ্রিড হিসাবে; উপরের সারিতে, সেই গ্রিডগুলির ওভারলে হিসাবে একত্রে প্রকৃত অন্তর্নিহিত opালু (যা বাস্তবে আপনি কখনই পাবেন না, তবে কম্পিউটার সিমুলেশন দ্বারা তুলনা করার জন্য সরবরাহ করা হয়)। ওভারলে, কারণ এটি একটি পরিবর্তনশীল (আনুমানিক slাল) এবং অন্য (এমএসই) জন্য হালকা রঙ ব্যবহার করে, এই বিশেষ উদাহরণে ব্যাখ্যা করা সহজ নয়, তবে নীচের সারিতে পৃথক মানচিত্রের সাথে একত্রে দরকারী এবং আকর্ষণীয় হতে পারে।
(দয়া করে ওভারলেলে ওভারল্যাপড কিংবদন্তিগুলি উপেক্ষা করুন Note নোট, এছাড়াও, "সত্য slালু" মানচিত্রের জন্য রঙিন স্কিম আনুমানিক opালুগুলির মানচিত্রের মতো একদম একই নয়: এলোমেলো ত্রুটি আনুমানিক slালুগুলির কয়েকটি বিস্তৃত হতে পারে সত্য opালের চেয়ে আরও চূড়ান্ত পরিসীমা the এটি গড় প্রতিরোধের সাথে সম্পর্কিত একটি সাধারণ ঘটনা )
বিটিডাব্লু, একই সময়ের জন্য বড় সংখ্যক রিগ্রেশন করা সবচেয়ে কার্যকর উপায় নয়: পরিবর্তে, প্রতিটি রিগ্রেশনের পুনঃনির্মাণের চেয়ে প্রজেকশন ম্যাট্রিক্সকে পিক্সেলের প্রতিটি "স্ট্যাক" আরও দ্রুত প্রয়োগ করা যেতে পারে । তবে এই ছোট উদাহরণটির জন্য এটি কোনও বিষয় নয়।
# Specify the extent in space and time.
#
n.row <- 60; n.col <- 100; n.time <- 11
#
# Generate data.
#
set.seed(17)
sd.err <- outer(1:n.row, 1:n.col, function(x,y) 5 * ((1/2 - y/n.col)^2 + (1/2 - x/n.row)^2))
e <- array(rnorm(n.row * n.col * n.time, sd=sd.err), dim=c(n.row, n.col, n.time))
beta.1 <- outer(1:n.row, 1:n.col, function(x,y) sin((x/n.row)^2 - (y/n.col)^3)*5) / n.time
beta.0 <- outer(1:n.row, 1:n.col, function(x,y) atan2(y, n.col-x))
times <- 1:n.time
y <- array(outer(as.vector(beta.1), times) + as.vector(beta.0),
dim=c(n.row, n.col, n.time)) + e
#
# Perform the regressions.
#
regress <- function(y) {
fit <- lm(y ~ times)
return(c(fit$coeff[2], summary(fit)$sigma))
}
system.time(b <- apply(y, c(1,2), regress))
#
# Plot the results.
#
library(raster)
plot.raster <- function(x, ...) plot(raster(x, xmx=n.col, ymx=n.row), ...)
par(mfrow=c(2,2))
plot.raster(b[1,,], main="Slopes with errors")
plot.raster(b[2,,], add=TRUE, alpha=.5, col=gray(255:0/256))
plot.raster(beta.1, main="True slopes")
plot.raster(b[1,,], main="Estimated slopes")
plot.raster(b[2,,], main="Mean squared errors", col=gray(255:0/256))