2

治療「ロック」を受ける被験者と、各「ロック」から採用される被験者または「リンク」がある「チェーン」形式のデータがあります。したがって、私のデータは広く長い形になっています-実行中のモデル用に形を変えるためにStata .DTAプログラムを作成するにはどうすればよいですか?私のデータはこのように始まります

idlock idlink1idlink2..。

1 1011..。

2 2021..。

21 3031..。

リンクは後でロックになる可能性がありますが、それでも元のロックのチェーンの一部です。したがって、21は1で始まるチェーン内のリンクです。新しいロックごとに最大5つのリンクがあります(idlink1-idlink5)

4

1 に答える 1

1

データで何をしたいのかについての詳細が必要ですが、最初に行うことは、ロックごとのリンク数を要約する (またはチェーンを記述する) 変数を作成することです。次に、初期ロックを panelid として、timevar をチェーン内のリンクまたはノードの数として、データを長いパネル データとして扱うことができます。モデル化するデータセットにさらにいくつかの変数があると仮定します (私はそれらをランダムな DV といくつかの IV として生成しました)。 Stata (いくつかの例を以下に示します):

    *******************************! BEGIN EXAMPLE
    //this first part will input the dataset into stata//
    clear
    inp id  link0 link1 link2 link3 link4
    1     1     2     3     4     5
    1000  97  98  99   . .
    3    . . . . . 
    4    . . . . . 
    5     6     7     8     9     10
    6    . . . . . 
    7    . . . . . 
    8     11  12  13  14  15
    9   . . . . . 
    10   . . . . . 
    11   . . . . . 
    12   . . . . . 
    13   . . . . . 
    14   . . . . .      
    15   . . . . .       
    99  100  . . . . .     
    100    101 . . . .     
    101   . . . . .  
    end


    //grab local macro with variables of interest//
    unab cou: link*
    di "`cou'"


    //1. DETERMINE THE INITIAL LOCK//
    tempvar pn
    g `pn' = .
    forval z=0/4{
               forval x=1/`=_N' {
               replace `pn'= id[_n-`x'] if id==link`z'[_n-`x']
          }
    }

    gen ilock=.
    lab var ilock "Initial Lock #"
    replace ilock=1 if mi(`pn')
    order ilock
    l ilock


    //2. Links assoc. with each ilock //

    **count those with no links established** 
    count if mi(link0)


    //ilocks//
    levelsof id if ilock==1, local(ilocks)
    foreach n in `ilocks' {
        //initial step//
        preserve
        keep if id==`n'
        global s`n' "`=link0' `=link1' `=link2' `=link3' `=link4'"
        di "${s`n'}"
        global s`n':subinstr global s`n' "." "", all
        di "${s`n'}"    
        restore
        }
    macro li    

    //branches off each ilock//
    foreach n in `ilocks' {
        //branches// 
            di in red "Branch `b' for macro s`n'"
            di as err "${s`n'}"
            forval b = 1/10 {
        qui token `"${s`n'}"'
        while "`1'" != ""  {
            *di in y "`1'"
            preserve
            keep if id==`1' 
            if _N==1 {
                global s`n'  ${s`n'}  `=link0' `=link1' `=link2' `=link3' `=link4' 
                di "${s`n'}"
                global s`n':subinstr global s`n' "." "", all
                di in yellow "${s`n'}"  
                global s`n':list uniq global(s`n')
            }
            restore
            mac shift
        }
        }
        }

    //g ilock_number = ilock number if ilocks==branches//
    g ilock_number = .
    foreach n in `ilocks' {
        replace ilock_number = id if id==`n'
        di in y "${s`n'}"
        global s`n':list uniq global(s`n')
        qui token `"${s`n'}"'
        while "`1'" != ""  {
            di in y "`1'"
            replace ilock_number = `n' if id==`1'
            mac shift   
        }
    }
    order ilock_number
    sort ilock_number id
    count if mi(ilock)



    **Decriptives:Count # OF linknodes**
    sort ilock id
    bys ilock_number:  count if mi(ilock)
    sort id ilock
    bys ilock_number, rc0: g linknodes = _n 
    order id link* linknodes ilock_n 
    l id link* ilock linknodes ilock_n, ta clean div
      **descriptives**
    ta ilock
    ta ilock linknodes

**here are all the chains in your data**
levelsof ilock_number, loc(al)
foreach v in `al' {
macro list  s`v'
}



    // Running models //
    **what kind of model do you want to run?**
    **assume using ids to identify panels-->

        **create fake dv/iv's for models**
    drawnorm iv1-iv5
    g dv = abs(int(rbinomial(10, .5)))

    xtset ilock_number linknodes 
    xtreg dv iv*, re

    **or model some link/lock info like the #links**
    bys ilock_number: g ttl_nodes = _N
    xtpoisson ttl_nodes iv* dv , re
    *******************************! END EXAMPLE

^注: 上記のコードのラッピングの問題に注意してください!

于 2010-12-29T22:27:59.170 に答える