将一段matlab代码转换为R时遇到很多麻烦。我可能在概念上缺少一些东西。我的Matlab整体上是:
nobs = 2000;
x = cumsum([0;randn(nobs,1)/sqrt(nobs)]);
k = 1;
n = size(x,1);
dx = zeros(n-k,1);
% to calculate dx - This is the part I am having trouble with
for i = k : n - 1
sumx = 0;
for j = 0 : k
sumx = sumx + (-1)^j*nchoosek(k,j)*x(i-j+1);
end
dx(i-k+1) = sumx;
end
我试图做一个功能,行得通。但是此功能仅执行matlab代码的以下部分:
for j = 0 : k
sumx = sumx + (-1)^j*nchoosek(k,j)*x(i-j+1);
end
到目前为止,我已经在R中做到了这一点,它对应于故障代码的第一部分:
function (n,i,k){
sumx <- 0
for (j in 0:k){
term <- ((-1)^j)*choose(k,j)*xsub((i-j)/n)
sumx <- sumx + term
}
return(sumx)
}
现在这行得通,但是我无法在我中求和?
for (k in 1:2){
for (i in k:10){
?????????????????????
}
}
我这里没有matlab。因此,将结果与已知序列进行比较,例如rse=c(1:5)/100
nobs = 2000;
rse=rnorm(nobs)
#rse=c(1:5)/100
x = cumsum(c(0,rse/sqrt((length(rse))));
k = 1;
n = length(x);
dx = rep(0,n-k);
for (i in k:(n - 1)){
sumx = 0;
for (j in 0:k)
sumx = sumx + (-1)^j*choose(k,j)*x[i-j+1];
dx[i-k+1] = sumx;
}
plot(dx~x[-(1:k)],col=3)
> cbind(dx,x=x[-(1:k)],rse) dx x rse [1,] 0.004472136 0.004472136 0.01 [2,] 0.008944272 0.013416408 0.02 [3,] 0.013416408 0.026832816 0.03 [4,] 0.017888544 0.044721360 0.04 [5,] 0.022360680 0.067082039 0.05
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句