1 Star 0 Fork 2

wxq8888wxq/statamacroe

forked from kerrydu/statamacroe 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
segmindex.ado 1.21 KB
一键复制 编辑 原始数据 按行查看 历史
kerrydu 提交于 2021-07-09 19:39 +08:00 . 0
cap program drop segmindex
program define segmindex
version 14
syntax varlist(numeric min=2), gen(string) Wmat(string) IDMat(string) id(varname) t(varname)
confirm name `wmat'
confirm name `idmat'
confirm new var `gen'
preserve
qui keep `id' `t' `varlist'
foreach v in `varlist'{
rename `v' `v'_j
}
rename `id' `id'_j
tempfile _pij0
qui save `_pij0'
restore
preserve
tempname pairij
mata: `pairij' = findpair(`idmat',`wmat')
*mata: `pairij'
clear
tempfile _pijdta
getmata (`id' `id'_j) = `pairij'
qui save `_pijdta'
restore
qui joinby `id' using `_pijdta'
qui merge m:1 `id'_j `t' using `_pij0', nogenerate
foreach v in `varlist'{
tempvar ln`v' dln`v'
qui gen double `ln`v''=abs(ln(`v')-ln(`v'_j))
qui bys `t': egen double `dln`v''=mean(`ln`v'')
qui replace `dln`v''=`ln`v''-`dln`v''
local ddq `ddq' `dln`v''
}
tempvar varq
qui egen double `varq' = rowsd(`ddq')
qui bys `id' `t': egen double `gen' = mean(`varq'^2)
qui drop `id'_j
qui duplicates drop `id' `t',force
end
cap mata mata drop findpair()
mata:
real matrix function findpair(real colvector id,real matrix W)
{
pairij=J(0,2,.)
for(j=1;j<=rows(W);j++){
i=select(id,W[.,j]:!=0)
pairij= pairij \ (J(length(i),1,id[j]),i)
}
return(pairij)
}
end
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
其他
1
https://gitee.com/wxq8888wxq/statamacroe.git
[email protected]:wxq8888wxq/statamacroe.git
wxq8888wxq
statamacroe
statamacroe
master

搜索帮助