সিক্যুয়েন্স ডেটা থেকে মার্কভ স্থানান্তর সম্ভাবনাগুলি অনুমান করা


16

আমার 4 টি রাজ্যের সম্পূর্ণ সিকোয়েন্সগুলি রয়েছে (432 পর্যবেক্ষণগুলি সুনির্দিষ্ট হতে হবে) : যেমন egAD

Y=(ACDDBACBAACABCADABA)

সম্পাদনা : পর্যবেক্ষণের ক্রমগুলি অসম দৈর্ঘ্যের! এটি কি কিছু পরিবর্তন করে?

মতলব বা আর বা অনুরূপে ট্রানজিশন ম্যাট্রিক্স গণনার কোনও উপায় আছে কি ? আমি মনে করি এইচএমএম প্যাকেজটি সাহায্য করতে পারে। কোন চিন্তা?

Pij(Yt=j|Yt1=i)

উদাহরণস্বরূপ: মার্কভ চেইন সম্ভাব্যতা অনুমান করা


3
আপনার কাছে : রাজ্যের । যাক যতবার হতে শৃঙ্খল রাষ্ট্র থেকে একটি রূপান্তর তৈরি রাষ্ট্রের কাছে , জন্য । আপনার নমুনা থেকে 'র গণনা করুন এবং the অনুমানগুলি ব্যবহার করে সর্বাধিক সম্ভাবনার দ্বারা উত্তরণ ম্যাট্রিক্স অনুমান করুন । 4S={1:=A,2:=B,3:=C,4:=D}nijijij,=1,2,3,4nij(pij)p^ij=nij/j=14nij
জেন

এই নোটগুলি এমএলই অনুমানগুলি নিয়েছে: stat.cmu.edu/~cshalizi/462/lectures/06/markov-mle.pdf
জেন


@ বি_মিনার আপনি কি আমার কোডটি সিউডো-কোড ফর্মে লিখতে পারেন? বা এটি শর্তাবলী ব্যাখ্যা করুন ... তবে আমি দেখতে পাচ্ছি এটি আমার আর কনসোলটিতে কাজ করে।
এইচসিএআই

আমার একটি প্রশ্ন আছে: আমি আপনার বাস্তবায়নটি বুঝতে পেরেছি এবং এটি আমার কাছে সূক্ষ্ম? এর মতো কিছু: রাজ্য = [1,2,3,4] [টি, ই] = হ্ম্মেসেটিমেট (এক্স, স্টেটস); যেখানে টি আগ্রহী সেই ট্রানজিশন ম্যাট্রিক্স Mark আমি মার্কভ চেইন এবং এইচএমএম-এ নতুন তাই আমি দুটি বাস্তবায়ন (যদি থাকে তবে) এর মধ্যে পার্থক্য বুঝতে চাই।
কোনও

উত্তর:


18

দয়া করে উপরের মন্তব্যগুলি দেখুন। এখানে আর-এ একটি দ্রুত বাস্তবায়ন দেওয়া হয়েছে

x <- c(1,2,1,1,3,4,4,1,2,4,1,4,3,4,4,4,3,1,3,2,3,3,3,4,2,2,3)
p <- matrix(nrow = 4, ncol = 4, 0)
for (t in 1:(length(x) - 1)) p[x[t], x[t + 1]] <- p[x[t], x[t + 1]] + 1
for (i in 1:4) p[i, ] <- p[i, ] / sum(p[i, ])

ফলাফল:

> p
          [,1]      [,2]      [,3]      [,4]
[1,] 0.1666667 0.3333333 0.3333333 0.1666667
[2,] 0.2000000 0.2000000 0.4000000 0.2000000
[3,] 0.1428571 0.1428571 0.2857143 0.4285714
[4,] 0.2500000 0.1250000 0.2500000 0.3750000

ম্যাটল্যাবে একটি (সম্ভবত বোবা) বাস্তবায়ন (যা আমি কখনই ব্যবহার করি নি, তাই এটি কাজ করছে কিনা তা আমি জানি না the সিনট্যাক্স পেতে আমি কেবল "ডিক্লেয়ার ভেক্টর ম্যাট্রিক্স ম্যাটল্যাব" গুগল করেছি):

x = [ 1, 2, 1, 1, 3, 4, 4, 1, 2, 4, 1, 4, 3, 4, 4, 4, 3, 1, 3, 2, 3, 3, 3, 4, 2, 2, 3 ]
n = length(x) - 1
p = zeros(4,4)
for t = 1:n
  p(x(t), x(t + 1)) = p(x(t), x(t + 1)) + 1
end
for i = 1:4
  p(i, :) = p(i, :) / sum(p(i, :))
end

দুর্দান্ত লাগছে! আমি নিশ্চিত না যে আপনার কোডে তৃতীয় লাইন কী করে (মূলত কারণ আমি মাতালাবের সাথে পরিচিত)। মাতলাব বা সিউডো কোডে আপনি এটি লেখার কোনও সুযোগ আছে? আমি অনেক বাধ্য be
এইচসিএআই

2
তৃতীয় লাইনটি এটি করে: চেইনের মানগুলি হ'ল । জন্য টি = 1 , ... , এন - 1 , বৃদ্ধি পি এক্স টি , এক্স টি + + 1x1,,xnt=1,,n1pxt,xt+1
জেন

চতুর্থ লাইন ম্যাট্রিক্সের প্রতিটি লাইনকে স্বাভাবিক করে তোলে (pij)
জেন

এখানে আমার স্বচ্ছলতা সহ্য করুন। আমি ম্যাটল্যাব কোড অনুবাদটির প্রশংসা করি যদিও এটি এখনও আপনার প্রথম forলুপে কী করার চেষ্টা করছে তা আমি দেখতে পাচ্ছি না । মূল কোড থেকে 3 য় লাইন যতবার গণনা করা হয় রাষ্ট্র থেকে যায় x আমি রাষ্ট্রের কাছে এক্স ? যদি আপনি এটি কথায় বলতে পারেন আমি এটি অনেক প্রশংসা করব। চিয়ার্সxxixj
এইচসিএআই

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

9

এখানে আমার বাস্তবায়ন র

x <- c(1,2,1,1,3,4,4,1,2,4,1,4,3,4,4,4,3,1,3,2,3,3,3,4,2,2,3)
xChar<-as.character(x)
library(markovchain)
mcX<-markovchainFit(xChar)$estimate
mcX

1
ইউজার 32041 এর অনুরোধ (তার / তার সুনামের অভাবের কারণে একটি মন্তব্যের পরিবর্তে সম্পাদনা হিসাবে পোস্ট করা হয়েছে): আমি কীভাবে একটি ডেটা.ফ্রেমে চিহ্নিত করা যায়?
chl

data.frameas(mcX,"data.frame")

@ জিয়েরজিওস্পিডিক্যাটো আপনার প্যাকেজে কীভাবে অসম দৈর্ঘ্যের ক্রমগুলি পরিচালনা করতে হবে (কীভাবে আমি সম্মতি জানাতে পারি না) আপনি কীভাবে মন্তব্য করতে পারেন?
এইচসিএআই

@ এইচসিএআই, দয়া করে বর্তমান চিত্রটি পৃষ্ঠাটি 35-36 দেখুন
জর্জিও স্পিডিকাটো

@GiorgioSpedicato রেফারেন্সের জন্য আপনাকে ধন্যবাদ cran.r-project.org/web/packages/markovchain/vignettes/... । আমার এখনও এন ট্রানজিশন ম্যাট্রিক্স রয়েছে, প্রতিটি ক্রমের জন্য একটি one আমি পরে যা করছি তা হ'ল একটি সাধারণ যা সমস্ত ক্রম পর্যবেক্ষণগুলিকে বিবেচনা করে। আমি কি অনুপস্থিত কিছু আছে?
এইচসিএআই

2

মতলবে এটি করার একটি উপায় এখানে রয়েছে:

x = [1,2,1,1,3,4,4,1,2,4,1,4,3,4,4,4,3,1,3,2,3,3,3,4,2,2,3];
counts_mat = full(sparse(x(1:end-1),x(2:end),1));
trans_mat = bsxfun(@rdivide,counts_mat,sum(counts_mat,2))

সম্পটিংগুয়ের কাছে স্বীকৃতি owedণী: http://www.eng-tips.com/viewthread.cfm?qid=236532

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