我的代码存在速度问题,我正试图解决它。我想对这些问题有你的意见/帮助我很抱歉,如果我的英语不如预期的那么好。 :P。
我是R语言的新手,我目前正在使用条件copula。我正在使用R studio编程和R版本2.15.3。我正在使用<copula>
包,我正在尝试进行一些估算。
首先,我有一个长度为n = 250的双变量向量u = [u_1,u_2]。我有一个这样的函数:
logl = function(u,x,xcentre)
{
function(b){
thetaList = thetax(xcentre,b)
#Try 1
#vectD = mapply(function(t1,t2, theta) (dCopula(c(t1,t2), frankCopula(theta),
#log = TRUE)), u[,1], u[,2], thetaList)
#return (-1/n*sum(vectD))
#Try 2
vectD = 0
for (i in 1:n)
{
vectD = vectD + dCopula(u[i,], frankCopula(thetaListe[i]), log = TRUE)
}
return (-1/n*(vectD))
}
}
(1)x是具有数据的长度n = 250的向量。 xcentre是一个标量(例如x = 1)
(2)thetax(xcentre,b)返回长度为n = 250的参数theta列表并将其放入thetalist
您可以将函数dCopula替换为函数f(u,v),其中u = [u_1,u_2]且v是标量。
所以我要做的就是:
b:2个参数的向量 logl(b)= -1 / n * sum [log(f(u,v)]其中和为所有(u_i,v_i)1&lt; = i&lt; = n
我的第一次尝试是使用'mapply'功能和'for'进行第二次尝试。但是,似乎mapply只是一种更好的方式来写一个for,哈哈。我需要能够提高logl(b)计算速度的东西。
我还尝试将函数“Vectorize”添加到dCopula,但它没有给我我需要的东西