转换率是时间的函数

时间:2015-11-02 10:14:14

标签: r traminer

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

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

到目前为止,我已使用基本时间单位1小时将此数据转换为STS,以便能够使用seqtrate函数,该函数为我提供了绝对转换率每个州对彼此的状态(在10x10表中)。

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

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

我还想过使用SPS,但我找不到任何具体的功能来执行此操作。

我能有另外一个功能吗?或者我需要使用seqtrate的{​​{1}}选项手动编码吗?如果是后者,你能否把我放在正确的轨道上,我不知道从哪里开始。

更新(仅举例说明我希望前3个州获得的内容)

time.varying

1 个答案:

答案 0 :(得分:1)

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

因此,您首先需要更改序列的对齐方式。 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

希望这有帮助。