【问题标题】:Plot transition graph in R在 R 中绘制转换图
【发布时间】:2019-01-17 15:48:31
【问题描述】:

我的数据结构如下:

transition_list <- list(c('A', 'B'), c('A', 'C', 'D'))

我想绘制列表的转换矩阵。我们可以将列表中的每个向量视为一个个体,并将向量的每个元素视为个体的连续状态。

情节应该采用以下方式:我希望边缘具有从一个状态到另一个状态的概率,通过整个列表估计。也就是说,这里从 A 到 B 的概率应该是 1/2,从 A 到 C 的概率应该是 1/2。我无法连接向量,因为这将提供从 B 到 A 的概率 1,这不是它的实际情况。

我知道this question 是相似的,但我需要它与向量列表而不是向量。

【问题讨论】:

    标签: r ggplot2 plot plotly markov-chains


    【解决方案1】:

    我没有为您创建绘图,但我可以创建绘图所需的数据。我的方法是迭代的,为了避免编写 for 循环,我使用了 purrr 包中的 map 函数。

    首先,我冒昧地扩展了您的数据:

    transition_list <- list(c('A', 'B', 'D', 'X'), c('A', 'C', 'D', 'X'), c('A', 'B', 'E', 'X'))
    

    接下来,这些是我们需要的包:

    library(purrr)
    library(dplyr)
    

    首先,我正在编写一个自定义函数,它将一个向量转换为一个数据框。每个“步骤”都会产生两个值:fromto。因此,我的循环长度等于向量的长度减一。

    browse_individual <- function(states) {
      map_df(
        1:(length(states)-1),
        ~list(from = states[.x], to = states[.x+1])
      )
    }
    

    这段代码非常简洁,但它的作用如下:map_df 的第一个参数是我们要循环的内容。那是向量的长度减一。第二个参数是我们希望为每一步返回的内容,它是一个包含两个元素的列表,当前元素为from,下一个元素为to。具体函数map_df将输出(列表列表)转换为数据框。

    接下来,我们需要将此函数应用于列表中的每个向量。

    state_changes <- map_df(transition_list, browse_individual)
    

    这里我再次使用map_df。循环每一步的输出都是一个数据框(即browse_individual返回的那个)。所有这些数据框都合并为一个名为 state_changes 的数据框。

    以下部分是一些dplyr 代码,它计算更改发生的频率并计算更改发生的可能性,给定from 位置。

    state_change_prob <- state_changes %>%
      count(from, to) %>%
      group_by(from) %>%
      mutate(prob = n / sum(n)) %>%
      select(from, to, prob) %>%
      ungroup()
    

    最后,我们得到这样的结果:

    > state_change_prob
    #> # A tibble: 7 x 3
    #>   from  to     prob
    #>   <chr> <chr> <dbl>
    #> 1 A     B     0.667
    #> 2 A     C     0.333
    #> 3 B     D     0.5  
    #> 4 B     E     0.5  
    #> 5 C     D     1    
    #> 6 D     X     1    
    #> 7 E     X     1 
    

    我希望这是对您问题的回答,并且您可以根据此数据格式构建绘图。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-06
      • 2021-11-05
      • 1970-01-01
      • 2021-07-19
      • 2018-08-19
      相关资源
      最近更新 更多