提示的错误为:
Error in SE * VE : 二进列运算符中有非数值参数
代码为:
T=1
library("nleqslv")
DTDslv<-function(z,type="Newton"){
D<-z[2]
VE<-z[3]
SE<-z[4]
R<-z[5]
fnewton<-function(x){
y<-numeric(2)
d1=(log(x[1]/D)+(R+x[2]^2/2)*T)/X[2]/sqrt(T)
d2=d1-x2*sqrt(T)
y[1]<-VE-(x[1]*pnorm(d1)-exp(-R*T)*D*pnorm(d2))
y[2]<-SE*VE-pnorm(d1)*x[2]*x[1]
y
}
if(sum(is.na(z))==0){#判断na的个数
nleqslv(c(VE,SE*VE/(D+VE)),fnewton,control=list(btol=.0001),method=type)$x
}
else{c(NA,NA)}
}
data=read.csv("test2.csv",header = T,na.strings=c("NA"))
VASA<-t(apply(data,1,DTDslv))#按行进行计算
colnames(VASA)<-c("asset.value","asset.vol")#更改列变量的名字
数据为:
sh | D | VE | SE | R |
sh1 | 3.5209E+12 | 1.4505E+11 | 0.30118091 | 3.4759 |
sh2 | 1956875746 | 8061500000 | 0.19273783 | 3.4759 |
sh3 | 1.2357E+10 | 6060000000 | 0.30376502 | 3.4759 |
sh4 | 4437913002 | 9609475374 | 0.27980656 | 3.4759 |
sh5 | 1.5264E+10 | 1.452E+10 | 0.34212628 | 3.4759 |
sh6 | 3404710816 | 1.3745E+10 | 0.22202441 | 3.4759 |
sh7 | 7.093E+10 | 3.1641E+10 | 0.39694043 | 3.4759 |
sh8 | 1.8057E+11 | 5.292E+10 | 0.24380215 | 3.4759 |
sh9 | 4389213187 | 4755648000 | 0.24978394 | 3.4759 |
sh10 | 1.6439E+12 | 5.4756E+10 | 0.28535817 | 3.4759 |
sh11 | 3.0642E+12 | 1.7303E+11 | 0.31520961 | 3.4759 |
sh12 | 6655689193 | 6471353884 | 0.21147991 | 3.4759 |
sh13 | 3.0258E+10 | 9.9706E+10 | 0.45032076 | 3.4759 |
sh14 | 1.1066E+11 | 6.3416E+10 | 0.19158823 | 3.4759 |
sh15 | 2.8129E+10 | 4854323157 | 0.20097007 | 3.4759 |
sh16 | 2.6563E+10 | 1.0292E+10 | 0.38907129 | 3.4759 |
sh17 | 3.8221E+10 | 8602484625 | 0.17702286 | 3.4759 |
sh18 | 4.7207E+10 | 3782815291 | 0.35318697 | 3.4759 |
sh20 | 3.8617E+10 | 8392052816 | 0.29711074 | 3.4759 |


雷达卡



京公网安备 11010802022788号







