আরে ট্রানজিশন ম্যাট্রিক্স (মার্কভ) গণনা করুন


29

কোনও পর্যবেক্ষণের সেট থেকে মার্কোভ চেইনের জন্য ট্রানজিশন ম্যাট্রিক্স গণনা করার জন্য কি আর (একটি অন্তর্নির্মিত ফাংশন) উপায় আছে?

উদাহরণস্বরূপ, নীচের মতো একটি ডেটা সেট গ্রহণ করা এবং প্রথম অর্ডার ট্রানজিশন ম্যাট্রিক্স গণনা করা?

dat<-data.frame(replicate(20,sample(c("A", "B", "C","D"), size = 100, replace=TRUE)))

এই ম্যাট্রিক্সের প্রতিনিধিত্ব করার কথা কি? প্রতিটি সারি (বা কলাম) এর জন্য মার্কভ চেইনের একটি রান? অথবা ...?
কার্ডিনাল

এটি রাষ্ট্রের ক্রমগুলির 100 টি নমুনা (এর মধ্যে 20 টি)।
বি_মিনার

আপনি কি সম্ভাবনার হিসাবের সন্ধান করছেন বা কেবল গণনা করছেন?
কার্ডিনাল

সম্ভাবনা অনুমান। পর্যবেক্ষণের ক্রমগুলি ব্যবহার করে, রূপান্তর সম্ভাবনার ম্যাট্রিক্স কী (এই উদাহরণে 4x4)।
বি_মিনার

উত্তর:


33

আমি কোনও "বিল্ট-ইন" ফাংশন (যেমন, ইন baseবা অনুরূপ) সম্পর্কে অবিলম্বে অবগত নই , তবে আমরা কোডের কয়েকটি লাইনে খুব সহজে এবং দক্ষতার সাথে এটি করতে পারি।

এখানে একটি ফাংশন যা ম্যাট্রিক্স (কোনও ডেটা ফ্রেম নয়) একটি ইনপুট হিসাবে গ্রহণ করে এবং হয় রূপান্তর গণনা ( prob=FALSE) বা, ডিফল্ট ( prob=TRUE) দ্বারা নির্ধারিত রূপান্তর সম্ভাবনা তৈরি করে।

# Function to calculate first-order Markov transition matrix.
# Each *row* corresponds to a single run of the Markov chain
trans.matrix <- function(X, prob=T)
{
    tt <- table( c(X[,-ncol(X)]), c(X[,-1]) )
    if(prob) tt <- tt / rowSums(tt)
    tt
}

আপনার যদি কোনও ডেটা ফ্রেমে কল করতে হয় তবে আপনি সর্বদা করতে পারেন

trans.matrix(as.matrix(dat))

আপনি যদি কিছু তৃতীয় পক্ষের প্যাকেজটির সন্ধান করছেন তবে রিসেক বা আর অনুসন্ধান সাইটটি অতিরিক্ত সংস্থান সরবরাহ করতে পারে।


1
+1 এছাড়াও রয়েছে বেশ কয়েকটি আর প্যাকেজ, সহ HMMএবং RHMMএটি সহায়ক হতে পারে।
ওয়েন

@Wayne: (+1 টি) আমি বিভিন্ন HMM পাওয়া প্যাকেজ পাওয়া যায় Rহতে খুব অতীতে খুঁতখুঁতে বিশেষ করে যখন এটি ঝুলানো আসে এবং আমি এক আমি সত্যিই পছন্দ করেছে বা বিশ্বস্ত কখনো পাওয়া যায় নি। এখন পরিস্থিতি এখন আরও ভাল। আমি ভাবব যদিও তারা এই অধিকার পাবে get যদি আপনি এই জাতীয় কোনও সমাধান সম্পর্কে জানেন তবে দয়া করে এটি উত্তর হিসাবে জমা দিন; আমি এটি ভোট দিয়ে খুশি হবে!
কার্ডিনাল

1
আমি চেষ্টা করেছি, তবে কোন সাফল্য নেই। এই সমস্যাটিতে লুকানো রাজ্যগুলি অন্তর্ভুক্ত নয় এবং আমি যে প্যাকেজগুলি পেয়েছি সেগুলির কোনও ইউটিলিটি ফাংশন নেই যা ফুল-ব্লাউড এইচএমএম থেকে কম কিছু করবে। (পার্শ্ব নোট হিসাবে, datওপি উদাহরণস্বরূপ যে ডেটা ফ্রেম দেয় তাতে ডেটা কলাম থাকে এবং তারা কি কলামে একটি রূপান্তর ম্যাট্রিক্স বা সামগ্রিক রূপান্তর ম্যাট্রিক্স চায় বা আমরা কী কেবল ম্যাট্রিক্সকে ভেক্টরে পরিণত করতে পারি?)
ওয়েন

@ ওয়াইন: (+১) আপনি একটি ভাল বক্তব্য উত্থাপন করেছেন। আমি ধরে নিয়েছি যে প্রতিটি সারি মার্কোভ চেইনের একটি স্বতন্ত্র রান এবং তাই আমরা রূপান্তর সম্ভাবনার অনুমানটি এই চেইনগুলিকে সমান্তরালভাবে চালিত রূপ গঠনের সন্ধান করছি। তবে, এমনকি যদি এটি এমন একটি শৃঙ্খলা ছিল যা বলে, একটি সারির এক প্রান্ত থেকে পরবর্তী প্রারম্ভের শুরুতে জড়িয়ে দেওয়া, মার্কোভ কাঠামোর কারণে অনুমানগুলি এখনও আরও কাছাকাছি থাকবে।
কার্ডিনাল

1
@ বি_মিনার: হ্যাঁ, যতক্ষণ না আপনি যুক্তিসঙ্গতভাবে ধরে নিতে পারেন যে প্রতিটি গ্রাহক অন্য সকলের থেকে স্বতন্ত্র আচরণ করে। এ জাতীয় মডেল এবং অনেকগুলি এক্সটেনশন ব্যবহারকারী আচরণের বিশ্লেষণে তুলনামূলকভাবে সাধারণ, যেমন, কোনও ওয়েবসাইটের বারবার ভিজিট ইত্যাদিতে
কার্ডিনাল

25

আমি সবে markovchainএস 4 প্রোগ্রামিং শৈলীর উপর ভিত্তি করে একটি নতুন আর প্যাকেজ আপলোড করেছি । এস 4 মার্কভচেইন অবজেক্টগুলি পরিচালনা করার বিভিন্ন পদ্ধতির পাশাপাশি এটিতে রাজ্যের ক্রম থেকে মার্কভ চেইনটি ফিট করার জন্য একটি ফাংশন রয়েছে। একটু দেখো:

library(markovchain) 
sequence <- c("a", "b", "a", "a", "a", "a", "b", "a", "b", "a", 
              "b", "a", "a", "b", "b", "b", "a")
mcFit <- markovchainFit(data=sequence)

এটি সাহায্য করতে পারে।


খুব সুন্দর প্যাকেজ! আপনি কি উচ্চতর অর্ডার মার্কভ চেইনকে সমর্থন করবেন?
ওয়েইন

আমাকে উচ্চতর অর্ডার মার্কভ চেইনের জন্য জিজ্ঞাসা করা হয়েছে এবং অন্য একজন লোক কিছু কোড লিখছে। আপনি যদি কোড বিকাশে পার্টেকিপেট করতে চান তবে মেন্টেইনার ঠিকানায় একটি ইমেল প্রেরণ করুন এবং আমরা আলোচনা করতে পারি ...
জর্জিও স্পেডিকাটো

হাই, মার্কভচাইনফিট এবং উপরে পোস্ট করা ফাংশনটির মধ্যে পার্থক্য কী? তারা কি একই ফলাফল দেয়? ধন্যবাদ
AAAAA

1
markovchainFiটি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.