আবাসস্থল প্রকারের রাস্টার মানচিত্র এলোমেলোভাবে পরিবর্তিত হচ্ছে?


12

স্কটল্যান্ডের একটি নির্দিষ্ট অঞ্চলের জন্য আমার কাছে আবাসস্থলের ধরণের একটি রাস্টার রয়েছে। পাখির একটি প্রজাতির জনসংখ্যার কার্যক্ষমতার মূল্যায়ন করতে আমার আবাসস্থল পরিবর্তনের সাথে ভবিষ্যতের আবাসস্থল পরিস্থিতি তৈরি করতে হবে।

উদাহরণস্বরূপ, ভবিষ্যতে এই অঞ্চলে আরও 10% বনায়ন হতে পারে। আমি নির্দিষ্ট আকারের ব্লকগুলিতে এলোমেলোভাবে বনজ যুক্ত করে বর্তমান মানচিত্রটি পরিবর্তন করতে চাই। আমি এখন পর্যন্ত, একজন রাস্টার থেকে র্যান্ডম পয়েন্টগুলি বেছে নেওয়ার লাইন ধরে ভাবছি যা বনায়ন ঘটতে পারে এমন অঞ্চলগুলি চিহ্নিত করে এবং কিছু ধরণের সেলুলার অটোমেটা ব্যবহার করে সঠিক আকারের ব্লকগুলি বৃদ্ধি করছে।

এটি কি এই সম্পর্কে ভাল উপায় মত মনে হচ্ছে? এর চেয়ে ভাল পদ্ধতি আর কি আছে?

যদি এটি সর্বোত্তম উপায় উপলভ্য হয় তবে আমি কীভাবে এটি করতে পারব, আর? (আমি বর্তমানে সেলুলারআউটোমাটা প্যাকেজ সহ "স্প্যাটস্যাট"-এ রাইপয়েন্টস ফাংশনটি দেখছি)

এর মধ্যে যদি কোনও সহজ উপায় থাকে তবে আমার জিআরএসএস, কিউজিস এবং আর্কম্যাপ 10 এও অ্যাক্সেস পেয়েছি।


আপনি rasterএখনও প্যাকেজ তাকান? রাস্টার (noo, rly?) ডেটা নিয়ে কাজ করার জন্য এটি প্রচুর সরঞ্জাম পেয়েছে।
রোমান Luštrik

ধন্যবাদ, রোমান হ্যাঁ, এটি আমার বেস মানচিত্রটি পড়তে এবং চালিত করার সরঞ্জামগুলি দেয় should
ম্যাট জেরি 10

উত্তর:


18

আপনি কি মার্কভ চেইন ব্যবহার করার কথা ভেবে দেখেছেন ? এটি কার্যকরভাবে একটি "সম্ভাব্য সেলুলার অটোমেটন", যার মাধ্যমে কাঙ্ক্ষিত এলোমেলো সরবরাহ করে। বিদ্যমান প্রজন্মের স্থানীয় প্রতিবেশীদের ক্ষেত্রে নতুন প্রজন্মকে নির্ধারণ করার পরিবর্তে, এটি নতুন প্রজন্মের জন্য সম্ভাব্যতা বিতরণ নির্দিষ্ট করে। এই বিতরণটি একই বা অনুরূপ অঞ্চলের চিত্রগুলির সময়ের ক্রমগুলি থেকে অনুমান করা যায়।

স্বজ্ঞাতভাবে, এই মডেলটি বলে যে একটি ঘর অগত্যা বন-অ-বনানী (বা তদ্বিপরীত ) তে রূপান্তর করবে না, তবে এটি রূপান্তরটি ঘিরে ফেলবে এমন সম্ভাবনা অবিলম্বে তার চারপাশের জমি আবরণের উপর নির্ভর করে। এটি কভারের একাধিক শ্রেণি, আশেপাশের জটিল কনফিগারেশনগুলি পরিচালনা করতে পারে এবং ল্যান্ড কভার বিবর্তনের সাম্প্রতিক ইতিহাস "স্মরণ" করতে এমনকি সাধারণীকরণ করা যেতে পারে।

স্থানান্তরগুলি মানচিত্র বীজগণিত বিবৃতি ব্যবহার করে প্রয়োগ করা যেতে পারে, যা কোনও রাস্টার ভিত্তিক জিআইএসে এমনকি এই পদ্ধতিটি সেল-লেভেলের ডেটাতে সরাসরি বা তাত্ক্ষণিকভাবে অ্যাক্সেস ছাড়াই ব্যবহারিক করে তোলে। আর ব্যবহার করা আরও সহজ করে তোলে।

উদাহরণস্বরূপ, সাদা এবং কালো মাত্র দুটি ক্লাসের সাথে এই প্রারম্ভিক কনফিগারেশনটি বিবেচনা করুন:

ল্যান্ড কভার গ্রিড

কী ঘটতে পারে তা উদাহরণস্বরূপ, আমি একটি প্যারামিটারাইজড মডেল তৈরি করেছি (কোনও ডেটা ভিত্তিক নয়) যেখানে কালোতে রূপান্তর ঘটে সম্ভাবনা 1 - কিউ ^ কে যেখানে কে 3 দ্বারা 3 প্রতিবেশী (কে = ০, ১/৯, ২/৯, ..., ১) যখন উভয়ই Q ছোট বা আশেপাশের বেশিরভাগ অংশ ইতিমধ্যে কালো, নতুন ঘরটি কালো হবে। এখানে 0.25 থেকে 0.05 পর্যন্ত মানের পাঁচটি মানের দশম প্রজন্মের চারটি স্বতন্ত্র সিমুলেশন রয়েছে:

ফলাফলের সারণী

স্পষ্টতই এই মডেলটিতে সিএর অনেকগুলি বৈশিষ্ট্য রয়েছে তবে এটি বিকল্প ফলাফল অন্বেষণে কার্যকর এলোমেলো প্রভাবও অন্তর্ভুক্ত করে।


কোড

নিম্নলিখিতটি সিমুলেশন প্রয়োগ করে R

#
# Make a transition from state `x` using a kernel having `k.ft` as
# its Fourier transform.
#
transition <- function(x, k.ft, q=0.1) {
  k <- zapsmall(Re(fft(k.ft * fft(x), inverse=TRUE))) / length(x)
  matrix(runif(length(k)) > q^k, nrow=nrow(k))
}
#
# Create the zeroth generation and the fft of a transition kernel.
#
n.row <- 2^7 # FFT is best with powers of 2
n.col <- 2^7
kernel <- matrix(0, nrow=n.row, ncol=n.col)
kernel[1:3, 1:3] <- 1/9
kernel.f <- fft(kernel)

set.seed(17)
x <- matrix(sample(c(0,1), n.row*n.col, replace=TRUE, prob=c(599, 1)), n.row)
#
# Prepare to run multiple simulations.
#
y.list <- list()
parameters <- c(.25, .2, .15, .1, .05)
#
# Perform and benchmark the simulations.
#
i <- 0
system.time({
  for (q in parameters) {
    y <- x
    for (generation in 1:10) {
      y <- transition(y, kernel.f, q)
    }
    y.list[[i <- i+1]] <- y
  }
})
#
# Display the results.
#    
par(mfrow=c(1,length(parameters)))
invisible(sapply(1:length(parameters), 
       function(i) image(y.list[[i]], 
                         col=c("White", "Black"),
                         main=parameters[i])))

+1 খুব আকর্ষণীয়। যদি আপনার কাছে কোনও নির্দিষ্ট অঞ্চলের historicতিহাসিক ল্যান্ডকভার ডেটা থাকে, তবে কিউ এবং / অথবা কে প্রাপ্ত করা সম্ভব হবে?
কर्क কুইকেনডাল

2
@ কির্ক হ্যাঁ, তবে আমি এটির সুপারিশ করব না: উদাহরণ হিসাবে আমি যে মডেলটি ব্যবহার করেছি তা খুব সরল। তবে আপনি আরও ভাল কিছু অর্জন করতে পারেন: প্রতিটি প্রতিবেশী কনফিগারেশন যা ঘটেছিল তার বাইরে রূপান্তরের অভিজ্ঞতাগত ফ্রিকোয়েন্সিগুলি দেখে আপনি ভবিষ্যতের বিবর্তনের এমন মডেল তৈরি করতে পারেন যার রূপান্তরগুলি পরিসংখ্যানগতভাবে বিগত বিবর্তনকে অনুকরণ করে। যদি ট্রানজিশন ফ্রিকোয়েন্সি স্থানগতভাবে একজাতীয় হয় এবং ভবিষ্যতে যদি অতীতের মতো চলতে থাকে তবে এই কয়েকটি সিমুলেশন চালানো ভবিষ্যতে কী ধারণার সম্ভাবনা রয়েছে তার একটি পরিষ্কার চিত্র দিতে পারে।
whuber

ধন্যবাদ, এটি আমার যা প্রয়োজন ঠিক তা করতে পারে বলে মনে হচ্ছে। যে অঞ্চলটি পরিবর্তিত হয় তার অনুপাতের উপর কোনও সীমা নির্ধারণ করা কি সম্ভব হবে?
ম্যাট জেরি 10

@ ম্যাট হ্যাঁ, কমপক্ষে সম্ভাব্য দিক থেকে। তত্ত্বটি বর্ণনা করে যে কীভাবে মার্কভ চেইনগুলি প্রতিটি রাজ্যের অনুপাতের একটি সংক্ষিপ্ত স্থিতিশীল মিশ্রণে পৌঁছায়। এটি একটি গতিশীল ভারসাম্য: প্রতিটি প্রজন্মের অনেকগুলি কক্ষ পরিবর্তিত হতে পারে তবে এর ফলাফলটি গ্রিডের মধ্যে তাদের অনুপাতগুলি একইরকম রাখা (ছোট সুযোগের বিচ্যুতি অবধি)।
হুবুহু

1
আমি একটি ভয়ানক আর প্রোগ্রামার। আমি ব্যবহৃত ম্যাথমেটিক কোডটি ভাগ করতে পারি; আর এর প্রয়োগগুলি প্রয়োগ করে, এটি ভাল পোর্ট করা উচিত। আপনার 2 ডি 0/1 অ্যারে প্রয়োগ করার জন্য আপনার একটি কার্নেল, একটি রূপান্তর নিয়ম এবং একটি পদ্ধতি দরকার। সুতরাং: kernel = ConstantArray[1/3^2, {3,3}]কার্নেলের জন্য; transitionRule [k_] := With[{q = 0.1}, Boole[RandomReal[{0, 1}] > q^k]]নিয়মের জন্য; এবং next[a_, kernel_, f_] := Map[f, ListConvolve[kernel, a, {1, 1}, 0], {2}]এটিকে একটি অ্যারেতে প্রয়োগ করতে । উদাহরণস্বরূপ, শুরু থেকে চার প্রজন্মের প্লট করতে , ব্যবহার করুন ArrayPlot /@ NestList[next[#, kernel, transitionRule] &, start, 3]
whuber
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.