কিভাবে এলোমেলো অটো সংযুক্ত বাইনারি সময় সিরিজের ডেটা জেনারেট করবেন?


15

আমি কীভাবে বাইনারি সময় সিরিজ তৈরি করতে পারি যে:

  1. 1 পর্যবেক্ষণের গড় সম্ভাব্যতা নির্দিষ্ট করা হয়েছে (5% বলুন);
  2. সময়ে 1 পালনের শর্তসাপেক্ষ সম্ভাব্যতা মান দেওয়া (বলুন 30% যদি মান ছিল 1)?tt1t1

উত্তর:


17

দ্বি-রাষ্ট্রের মার্কভ চেইন ব্যবহার করুন।

যদি রাজ্যগুলিকে 0 এবং 1 বলা হয়, তবে চেইনটিকে 2x2 ম্যাট্রিক্স দ্বারা প্রতিনিধিত্ব করা যেতে পারে Pরাষ্ট্রগুলির মধ্যে রূপান্তর সম্ভাবনা দেয়, যেখানে Pij রাজ্য i থেকে রাষ্ট্র যাওয়ার সম্ভাবনা থাকে j। এই ম্যাট্রিক্সে, প্রতিটি সারি 1.0 এর সমষ্টি হওয়া উচিত।

বিবৃতি 2 থেকে, আমাদের কাছে , এবং সাধারণ সংরক্ষণ রয়েছে তখন পি 10 = 0.7 বলেP11=0.3P10=0.7

বিবৃতি 1 থেকে আপনি দীর্ঘমেয়াদী সম্ভাবনা (যাকে ভারসাম্যহীন বা অবিচলিত রাষ্ট্রও বলা হয়) । এটি পি 1 = 0.05 = 0.3 পি 1 + পি 01 ( 1 - পি 1 ) সলভিং পি 01 = 0.0368421 এবং একটি ট্রানজিশন ম্যাট্রিক্স পি = ( 0.963158 0.0368421 0.7 0.3 ) দেয়P1=0.05

P1=0.05=0.3P1+P01(1P1)
P01=0.0368421
P=(0.9631580.03684210.70.3)

(আপনি আপনার ট্রানজিশন ম্যাট্রিক্সটিকে উচ্চ শক্তিতে উত্থাপন করে সঠিকতার জন্য পরীক্ষা করতে পারেন - এই ক্ষেত্রে 14 কাজ করে - ফলাফলের প্রতিটি সারি একই ধরণের স্থির রাষ্ট্রীয় সম্ভাবনা দেয়)

এখন আপনার এলোমেলো সংখ্যা প্রোগ্রামে, এলোমেলোভাবে 0 বা 1 রাষ্ট্র নির্বাচন করে শুরু করুন; আপনি কোন সারিটি ব্যবহার করছেন তা এটি নির্বাচন করে। তারপরে পরবর্তী অবস্থা নির্ধারণ করতে অভিন্ন র্যান্ডম নম্বর ব্যবহার করুন। নম্বরটি থুথু করুন, ধুয়ে ফেলুন, প্রয়োজনীয় হিসাবে পুনরাবৃত্তি করুন।P


আকর্ষণীয় সমাধান! আপনার কি আর কিছু নমুনা কোড আছে? এন্টোন আর?
ব্যবহারকারী 333

@ মাইক আপনি কি আপনার অ্যাকাউন্ট নিবন্ধন করতে পারেন? আপনি বেশ সক্রিয় ব্যবহারকারী এবং আমাদের এটি বারবার ম্যানুয়ালি করতে হবে। প্রক্রিয়াটি বেশ সহজ; কেবল stats.stackexchange.com

ধন্যবাদ। আমি কীভাবে মার্কোভ চেইন (ট্রানজিশন ম্যাট্রিক্স) ডেটা দেওয়া অনুমান করতে পারি? এটি করার জন্য কোনও আর ফাংশন আছে?
ব্যবহারকারী 333

6

আমি আর মাইকে অ্যান্ডারসন উত্তর কোডিংয়ে ক্র্যাক করেছিলাম sa এটি কীভাবে সপলি ব্যবহার করে করব তা বুঝতে পারি না, তাই আমি একটি লুপ ব্যবহার করেছি। আরও আকর্ষণীয় ফলাফল পেতে আমি প্রবগুলি কিছুটা পরিবর্তন করেছি এবং আমি রাজ্যগুলির প্রতিনিধিত্ব করতে 'এ' এবং 'বি' ব্যবহার করি। আমার সম্পর্কে আপনি কী মনে করেন জানি।

set.seed(1234)
TransitionMatrix <- data.frame(A=c(0.9,0.7),B=c(0.1,0.3),row.names=c('A','B'))
Series <- c('A',rep(NA,99))
i <- 2
while (i <= length(Series)) {
    Series[i] <- ifelse(TransitionMatrix[Series[i-1],'A']>=runif(1),'A','B')
    i <- i+1
}
Series <- ifelse(Series=='A',1,0)
> Series
  [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1
 [38] 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 [75] 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1

/ সম্পাদনা: পলের মন্তব্যের জবাবে, এখানে আরও মার্জিত গঠনের কথা বলা হয়েছে

set.seed(1234)

createSeries <- function(n, TransitionMatrix){
  stopifnot(is.matrix(TransitionMatrix))
  stopifnot(n>0)

  Series <- c(1,rep(NA,n-1))
  random <- runif(n-1)
  for (i in 2:length(Series)){
    Series[i] <- TransitionMatrix[Series[i-1]+1,1] >= random[i-1]
  }

  return(Series)
}

createSeries(100, matrix(c(0.9,0.7,0.1,0.3), ncol=2))

আমি যখন সবেমাত্র আর শিখছিলাম তখন আমি মূল কোডটি লিখেছিলাম, তাই আমাকে কিছুটা শিথিল করে দিন। ;-)

এই সিরিজটি দেওয়া দেখে আপনি কীভাবে রূপান্তর ম্যাট্রিক্সটি অনুমান করবেন:

Series <- createSeries(100000, matrix(c(0.9,0.7,0.1,0.3), ncol=2))
estimateTransMatrix <- function(Series){
  require(quantmod)
  out <- table(Lag(Series), Series)
  return(out/rowSums(out))
}
estimateTransMatrix(Series)

   Series
            0         1
  0 0.1005085 0.8994915
  1 0.2994029 0.7005971

আমার মূল ট্রানজিশন ম্যাট্রিক্সের তুলনায় অর্ডারটি অদলবদল করা হয়েছে, তবে এটি সঠিক সম্ভাবনা পেয়েছে।


গ্রেট! আমি যত তাড়াতাড়ি অনুভূতিযুক্ত হব ... যথেষ্ট ভাল দেখাচ্ছে ....
ব্যবহারকারীর 333

বিপরীতটি করা কি সম্ভব? সিরিজটি ম্যাট্রিক্সের প্রাক্কলনটি দিয়েছিল?
ব্যবহারকারী 333

Pr(Xt=i|Xt1=j)

+1, তবে আমার কিছু মন্তব্যও রয়েছে: একটি forলুপ এখানে কিছুটা পরিষ্কার হতে পারে, আপনি Seriesকেবলমাত্র ব্যবহারের দৈর্ঘ্য জানেন for(i in 2:length(Series))। এটি প্রয়োজনীয়তা দূর করে i = i + 1। এছাড়াও, কেন প্রথম নমুনা A, এবং তারপরে রূপান্তর করতে হবে 0,1? আপনি সরাসরি 0'গুলি এবং এর নমুনা নিতে পারে 1
পল হিমস্ট্র্রা

2
আরও সাধারণভাবে আপনি তারপরে createAutocorBinSeries = function(n=100,mean=0.5,corr=0) { p01=corr*(1-mean)/mean createSeries(n,matrix(c(1-p01,p01,corr,1-corr),nrow=2,byrow=T)) };createAutocorBinSeries(n=100,mean=0.5,corr=0.9);createAutocorBinSeries(n=100,mean=0.5,corr=0.1);স্বেচ্ছাসেবী, প্রাক-নির্দিষ্ট লেগ 1
স্বতঃসংশোধনের

1

markovchainপ্যাকেজ ভিত্তিক একটি উত্তর যা আরও জটিল নির্ভরশীলতা কাঠামোর কাছে সাধারণীকরণ করা যেতে পারে।

library(markovchain)
library(dplyr)

# define the states
states_excitation = c("steady", "excited")

# transition probability matrix
tpm_excitation = matrix(
  data = c(0.2, 0.8, 0.2, 0.8), 
  byrow = TRUE, 
  nrow = 2,
  dimnames = list(states_excitation, states_excitation)
)

# markovchain object
mc_excitation = new(
  "markovchain",
  states = states_excitation,
  transitionMatrix = tpm_excitation,
  name = "Excitation Transition Model"
)

# simulate
df_excitation = data_frame(
  datetime = seq.POSIXt(as.POSIXct("01-01-2016 00:00:00", 
                                   format = "%d-%m-%Y %H:%M:%S", 
                                   tz = "UTC"), 
                        as.POSIXct("01-01-2016 23:59:00", 
                                   format = "%d-%m-%Y %H:%M:%S", 
                                   tz = "UTC"), by = "min"),
  excitation = rmarkovchain(n = 1440, mc_excitation))

# plot
df_excitation %>% 
  ggplot(aes(x = datetime, y = as.numeric(factor(excitation)))) + 
  geom_step(stat = "identity") + 
  theme_bw() + 
  scale_y_discrete(name = "State", breaks = c(1, 2), 
                   labels = states_excitation)

এটি আপনাকে দেয়:

এখানে চিত্র বর্ণনা লিখুন


0

এই কাগজটির বর্ণনা দেওয়া হয়েছে এমন কাগজের ট্র্যাকটি আমি হারিয়ে ফেলেছি, তবে এখানে রয়েছে।

রূপান্তর ম্যাট্রিক্সকে বিভক্ত করুন

টি=(1-পিটি)[1001]+ +পিটি[পি0পি0(1-পি0)(1-পি0)]=(1-পিটি)আমি+ +পিটি

1-পিটিপিটিপি0

পিটিটি11টি11=(1-পিটি)+ +পিটি(1-পি0)

এই পচনের অন্যতম কার্যকর বৈশিষ্ট্য হ'ল এটি উচ্চতর মাত্রিক সমস্যাগুলিতে পারস্পরিক সম্পর্কযুক্ত মার্কভ মডেলগুলির শ্রেণিতে বেশ সরলরূপে সাধারণীকরণ করে।


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