楼主: lbwnb666
2383 3

[问答] R语言相空间重构 [推广有奖]

  • 0关注
  • 0粉丝

高中生

25%

还不是VIP/贵宾

-

威望
0
论坛币
20 个
通用积分
0.5745
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
1610 点
帖子
14
精华
0
在线时间
29 小时
注册时间
2021-3-8
最后登录
2024-2-3

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
求问,R语言有做像空间重构的包吗?在网上没找到,不知道怎么确定两个参数
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:R语言 相空间

沙发
lbwnb666 发表于 2022-5-29 21:31:54 |只看作者 |坛友微信交流群
利用互信息量法确定延迟时间T
###确定延迟时间tau——互信息量法
MI<-function(data, tau_max, n){
  I_sq = rep(NA,30)  # 建立一个空数组,用来存放每个τ值的互信息
  data_length = length(data) # 计算时间序列的长度
  for (tau in 31:tau_max){
    S = data[1:(data_length-tau)]
    Q = data[(tau+1):data_length]
    as1 = min(S)
    bq = min(Q)
    delts = (max(S)-as1)/n
    deltq = (max(Q)-bq)/n
    N_sq = matrix(0,ncol=n,nrow = n)
    for (i in 1:n){
      for (j in 1:n){
        for (k in 1:(data_length-tau)){
          as_k = (S[k]-as1)/delts
          bq_k = (Q[k]-bq)/deltq
          if (as_k >= i-1 && as_k < i && bq_k >=j-1 && bq_k < j){
            N_sq[i, j] = N_sq[i, j]+1
          }
        }
      }
    }
    Ntotal = sum(N_sq)
    Ps<-rep(0,n)
    Pq<-rep(0,n)
    for (i in 1:n) {
      Ps[i] = sum(N_sq[,i])/Ntotal   # 计算位于一维s格子内的概率
      Pq[i] = sum(N_sq[i,])/Ntotal  # 计算位于一维q格子内的概率
    }
    Psq = N_sq/Ntotal         # 计算位于二维格子(ii,jj)内概率
    H_s = 0  # 计算S的熵
    H_q = 0  # 计算q的熵
    for (i in 1:n){
      if (Ps[i] != 0)
      {H_s = H_s - Ps[i] * log(Ps[i])}
      if (Pq[i] != 0)
      {H_q = H_q - Pq[i] * log(Pq[i])}
    }
   
    H_sq = 0  # 计算(s,q)的联合熵
    for (i in 1:n){
      for (j in 1:n){
        if (Psq[i, j] != 0)
        {H_sq = H_sq - Psq[i, j] * log(Psq[i, j])}
      }
    }
   
    I_sq[tau-30] = H_s+H_q-H_sq  # 计算tau下的互信息函数
  }
  return(I_sq)
  }
选择互信息函数的第一个极小值点对应的T作为最优延迟时间

使用道具

藤椅
lbwnb666 发表于 2022-6-4 12:18:30 |只看作者 |坛友微信交流群
R里面nonlinearTseries包里面的timeLag函数可以用于选择延迟时间tau
参数technique = "acf"时,表示用自相关函数法,此时参数selection.method选择默认
参数technique = "ami",表示用互信息量法,此时参数selection.method = "first.minimum"

使用道具

板凳
lbwnb666 发表于 2022-6-4 12:58:56 |只看作者 |坛友微信交流群
lbwnb666 发表于 2022-6-4 12:18
R里面nonlinearTseries包里面的timeLag函数可以用于选择延迟时间tau
参数technique = "acf"时,表示用自相 ...
嵌入维数m可用函数estimateEmbeddingDim()函数,此时使用Cao方法确定维数的
estimateEmbeddingDim(data, time.lag = tau,do.plot = F,max.embedding.dim = 20)
tseriesChaos包中的false.nearest()函数使用伪近邻方法确定嵌入维数
false.nearest(data, m = max.m, d = tau, t = 150, eps = sd(data)/10)

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-11-6 07:43