1

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

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

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

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

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

我也想过使用SPS,但我找不到任何特定的功能来做到这一点。

我还有其他功能可以做到这一点吗?或者我需要使用seqtrate'stime.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+) |
4

1 回答 1

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

希望这可以帮助。

于 2015-11-27T10:17:20.240 回答