作为时间函数的转换率

Transition Rate as a function of time

我花了一段时间来发现 RTraMineR 包,以便能够分析 MySQL 转换事件的导出(本次讨论的目的)我的数据库项目(因此采用 TSE 格式)。

我有10个状态,可以转换到任何其他状态(即没有特定顺序)。

到目前为止,我已经成功地将此数据转换为 STS,使用 1 小时的基本时间单位,以便能够使用 seqtrate 函数,这为我提供了绝对转换从每个州到其他州的比率(在 10x10 table)。

我遇到的问题是计算转换率作为时间的函数。我想象这会再次显示为 10x10 table,但不是每个单元格中的绝对值,它可能是一个离散图,表示根据不同时间的速率(例如 <24h、24-72h、72 -168 小时,>168 小时)。

seqtratetime.varying 选项,但它计算每个时间单位的费率,我没有看到定义特定时间范围的选项。

我也想过使用 SPS 但我找不到任何特定的函数来执行此操作。

有没有其他功能可以让我做到这一点?或者我需要使用 seqtratetime.varying 选项手动编码吗?如果是后者,你能不能让我走上正轨,我不知道从哪里开始。

更新(只是一个例子来阐明我想为前 3 个州获得什么)

        |               State1                  |               State2                  |               State3                  |
State1  | av(<24),av(24-72),av(72-168),av(168+) | av(<24),av(24-72),av(72-168),av(168+) | av(<24),av(24-72),av(72-168),av(168+) |
State2  | av(<24),av(24-72),av(72-168),av(168+) | av(<24),av(24-72),av(72-168),av(168+) | av(<24),av(24-72),av(72-168),av(168+) |
State3  | av(<24),av(24-72),av(72-168),av(168+) | av(<24),av(24-72),av(72-168),av(168+) | av(<24),av(24-72),av(72-168),av(168+) |

据我了解,您希望获得超过年龄 类 的转换概率(自某个过程开始以来的时间间隔。),同时您的数据在日历时间上对齐。即,发生时间而不是自流程开始以来的时间。

因此,您首先需要更改序列的对齐方式。 TraMineRextras 包为此提供了 seqstart 功能。这是我们将面板数据转换为年龄对齐数据的示例。

library(TraMineRextras)
## Example data aligned on calendar years, starting in 2000
paneldata <- matrix(
    c("A" , "A" , "B" , "A" , "A" ,
      "A" , "A" , "B" , "B" , "B" ,
      "A" , "A" , "B" , "B" , "B" ,
      "B" , "A" , "A" , "B" , "B" ,
      "A" , "B" , "A" , "A" , "B"), byrow=TRUE, ncol=5)
colnames(paneldata) <- 2000:2004

## original sequences aligned on years 
(s.panel <- seqdef(paneldata))  

## Sequence         
## 1 A-A-B-A-A
## 2 A-A-B-B-B  
## 3 A-A-B-B-B    
## 4 B-A-A-B-B      
## 5 A-A-A-A-B

## Change from calendar date to age alignment
startyear <- 2000
birthyear <- 1995:1999 ## just to illustrate
agedata <- seqstart(paneldata, data.start=startyear, new.start=birthyear)
colnames(agedata) <- 1:ncol(agedata)

## sequences aligned on ages
(s.age <- seqdef(agedata))  

## Sequence         
## 1 *-*-*-*-A-A-B-A-A
## 2 *-*-*-A-A-B-B-B  
## 3 *-*-A-A-B-B-B    
## 4 *-B-A-A-B-B      
## 5 A-A-A-A-B

一旦你正确对齐了你的序列,你就可以简单地计算时间间隔的转移概率,这里年龄 类 1-5 和 6-9。

seqtrate(s.age[,1:5])

##        [-> A]    [-> B]
## [A ->] 0.6363636 0.3636364
## [B ->] 0.3333333 0.6666667

seqtrate(s.age[,6:9])

##          [-> A] [-> B]
## [A ->]   0.50   0.50
## [B ->]   0.25   0.75

希望对您有所帮助。