use data.dta, clear
序列个数(根据数据设计)
global num=3
* 初始值化
* 初值化是指所有数据均用第1个数据除,然后得到一个新的数列
forv i=0/$num {
qui sum x`i' if _n==1
gen y`i'=x`i'/r(mean)
}
* 求差序列
forv i=1/$num {
gen d`i'=abs(y`i'-y0)
}
* 求两级最小差与最大差
forv i=1/$num {
egen min`i'=min(d`i')
}
forv i=1/$num {
egen max`i'=max(d`i')
}
egen min_min=rowmin(min1-min$num)
egen max_max=rowmax(max1-max$num)
sum min_min
global min_min=r(mean)
sum max_max
global max_max=r(mean)
将数据代入关联系数
forv i=1/$num {
gen e`i'=($min_min + 0.5*$max_max) /(d`i'+0.5*$max_max )
}
* 计算关联度
forv i=1/$num {
egen r`i'=mean(e`i')
qui sum r`i'
di "x`i'和x0的关联度为:" r(mean)
}