|
非常感谢您的回复
我现在程序时这样(修改了一些数据)
// input the data of 1959
clear
input year cost k l e m pk pl pe pm
1959 358.435 .06185 .27303 .04563 .61948 1.30758 1.7343 1.36756 1.30774
end
// input s(i)
matrix s = J(4,1,.)
local i = 0
foreach v in k l e m {
local i = `i' + 1
mat s[`i',1] =`v'[1]
}
matrix list s
// inputing the coefficient matrix delta
clear
input c1 c2 c3 c4
0.0298704 0.0000221 -0.0082035 0.021689
0.0000221 0.0748772 -0.0032119 -0.0716874
-0.0082035 -0.0032119 0.029383 -0.0179676
0.021689 -0.0716874 -0.0179676 0.111344
end
mkmat c1-c4, matrix(delta)
matrix list delta
// Calculating theta(i,j)
matrix theta = J(4, 4, .)
forv i = 1/4 {
forv j = 1/4 {
if `i' == `j' {
matrix theta[`i',`j'] = (delta[`i',`j']+s[`i',1]*(s[`j',1]-1))/(s[`i',1]*s[`i',1])
}
else{
matrix theta[`i',`j'] = (delta[`i',`j']+s[`i',1]*s[`j',1])/(s[`i',1]*s[`j',1])
}
}
}
matrix list theta
matrix stheta = J(1, 4, .)
forv j = 1/4 {
matrix stheta[1, `j'] = s[`i',1]*theta[`i',`i']
}
matrix list stheta
但是运行的结果,总是说找不到s这个矩阵,我实在是觉得很奇怪啊,因为在运行结果中可以看到s这个矩阵已经出来了啊。。。您或者其他高人可以帮忙看一下这个运行结果么?非常感谢
do "C:\DOCUME~1\YINYAN~1\LOCALS~1\Temp\STD000000.tmp"
. // input the data of 1959
. clear
. input year cost k l e m pk pl pe pm
year cost k l e m pk p
> l pe pm
1. 1959 358.435 .06185 .27303 .04563 .61948 1.30758 1.7343 1.36756 1.30774
2. end
.
. // input s(i)
. matrix s = J(4,1,.)
. local i = 0
. foreach v in k l e m {
2. local i = `i' + 1
3. mat s[`i',1] =`v'[1]
4. }
. matrix list s
s[4,1]
c1
r1 .06185
r2 .27303001
r3 .04563
r4 .61948001
.
. // inputing the coefficient matrix delta
. clear
. input c1 c2 c3 c4
c1 c2 c3 c4
1. 0.0298704 0.0000221 -0.0082035 0.021689
2. 0.0000221 0.0748772 -0.0032119 -0.0716874
3. -0.0082035 -0.0032119 0.029383 -0.0179676
4. 0.021689 -0.0716874 -0.0179676 0.111344
5. end
.
. mkmat c1-c4, matrix(delta)
. matrix list delta
symmetric delta[4,4]
c1 c2 c3 c4
r1 .0298704
r2 .0000221 .0748772
r3 -.0082035 -.0032119 .029383
r4 .021689 -.0716874 -.0179676 .111344
. // Calculating theta(i,j)
. matrix theta = J(4, 4, .)
. forv i = 1/4 {
2. forv j = 1/4 {
3. if `i' == `j' {
4. matrix theta[`i',`j'] = (delta[`i',`j']+s[`i',1]*(s[`j',1]-1)
> )/(s[`i',1]*s[`i',1])
5. }
6. else{
7. matrix theta[`i',`j'] = (delta[`i',`j']+s[`i',1]*s[`j',1])/(s
> [`i',1]*s[`j',1])
8. }
9. }
10. }
s not found
r(111);
end of do-file
r(111);
|