请各位前辈给小辈指点一二:变点理论寻找阈值:若已知序列x,y。方程组由y(t)=a1+b1x(t),t=1,2,...k,(1)式和y(t)=a2+b2x(t),t=k,k+1,...n,(2)式组成。该理论的思想是:假设k从5开始,作方程组的一次回归,求得一组(b1,b2);再从k=6开始,再作方程组的一次回归,又求得一组(b1,b2),依次下去,当k=n-4时,即留最后5对序列x,y可用于方程(2)的回归。最后通过寻找参数组(b1,b2)最大的绝对差值来确定k值。详细可参考附件中文件。我的程序如下:
#若序列长度为1000,k=5开始,首尾各保留5组序列用于方程1的开始回归和方程2最后一次回归
beta1=c()
for(i in 1:990){
x1=x[1:(4+i)]
y1=y[1:(4+i)]
lm1=lm(y1~x1)
beta1=c(beta1,coef(lm1)[2])
}
beta2=c()
for(j in 1:990){
x2=x[(4+j):1000]
y2=y[(4+j):1000]
lm2=lm(y2~x2)
beta2=c(beta2,coef(lm2)[2])
}
e=abs(beta1-beta2)
which.max(e)
自己觉得没什么问题,请问前辈,这段程序有什么错误和改进的地方吗?