You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
72 lines
1.7 KiB
Plaintext
72 lines
1.7 KiB
Plaintext
9 months ago
|
program define simul2tl2plm
|
||
|
version 7.0
|
||
|
syntax [, nbobs(integer 2000) dim1(real 7) dim2(real 7) corr(real 0) disc1(real 1) disc2(real 1) sigma1(real 1) sigma2(real 1)]
|
||
|
|
||
|
scalar define hour=real(substr("$S_TIME",1,2))
|
||
|
scalar define min=real(substr("$S_TIME",4,2))
|
||
|
scalar define sec=real(substr("$S_TIME",7,2))
|
||
|
scalar define jour=real(substr("$S_DATE",1,2))
|
||
|
|
||
|
if "$seed2"!="" {
|
||
|
global seed2=int($seed/100000)}
|
||
|
else {
|
||
|
global seed2=0
|
||
|
}
|
||
|
global seed=sec*1000000+min*10000+hour*100+jour+$seed2
|
||
|
|
||
|
set seed $seed
|
||
|
quietly {
|
||
|
drop _all
|
||
|
set obs `nbobs'
|
||
|
gen TL1=invnorm(uniform())*`sigma1'
|
||
|
gen TL2=invnorm(uniform())*`sigma2'
|
||
|
replace TL2=`corr'*TL1+sqrt(1-`corr'^2)*TL2
|
||
|
|
||
|
local items=1
|
||
|
global rep1
|
||
|
while `items'<=`dim1' {
|
||
|
local nitems=100+`items'
|
||
|
gen diff`nitems'=invnorm(`items'/(`dim1'+1))
|
||
|
gen prob`nitems'=1/(1+exp(-1.7*`disc1'*(TL1-diff`nitems')))
|
||
|
gen rep`nitems'=0
|
||
|
replace rep`nitems'=1 if prob`nitems'>=uniform()
|
||
|
global rep1 $rep1 rep`nitems'
|
||
|
local items=`items'+1
|
||
|
}
|
||
|
|
||
|
local items=1
|
||
|
global rep2
|
||
|
while `items'<=`dim2' {
|
||
|
local nitems=200+`items'
|
||
|
gen diff`nitems'=invnorm(`items'/(`dim2'+1))
|
||
|
gen prob`nitems'=1/(1+exp(-1.7*`disc2'*(TL2-diff`nitems')))
|
||
|
gen rep`nitems'=0
|
||
|
replace rep`nitems'=1 if prob`nitems'>=uniform()
|
||
|
global rep2 $rep2 rep`nitems'
|
||
|
local items=`items'+1
|
||
|
}
|
||
|
gen ind=_n
|
||
|
keep ind $rep1 $rep2}
|
||
|
|
||
|
|
||
|
quietly{
|
||
|
reshape long rep,i(ind) j(item)
|
||
|
|
||
|
local items=1
|
||
|
while `items'<=`dim1' {
|
||
|
local nitems=100+`items'
|
||
|
gen item`nitems'=0
|
||
|
replace item`nitems'=-1 if item==`nitems'
|
||
|
local items=`items'+1
|
||
|
}
|
||
|
local items=1
|
||
|
while `items'<=`dim2' {
|
||
|
local nitems=200+`items'
|
||
|
gen item`nitems'=0
|
||
|
replace item`nitems'=-1 if item==`nitems'
|
||
|
local items=`items'+1
|
||
|
}
|
||
|
|
||
|
}/*fin du quietly*/
|
||
|
end
|