3 つの共変量 (X、Y、Z) と 2 つのブレークポイントを持つ変数 V のブレークポイントを推定しようとしています。
応答変数 V = aX + bY + cZ + d
(a,b,c,d) が (0.6,0.2,0.8,0.15)、(1.6,1.2,1.8,1.15)、(3,5,4,2.5) の 3 セットの値を持つデータをシミュレートします。
セグメント化されたパッケージを使用して係数を推定しましたが、次のエラーが発生しました。
Error in segmented.lm(linearFit, seg.Z = ~X + Y + Z, psi = list(X = c(NA), :
Bootstrap restart only with a fixed number of breakpoints
ここにデータを含む私のコードがあります
#trapezoidal data
ref=c(rep(1,100),seq(1,10,0.05),rep(10,150),seq(10,0,-0.05),rep(0,200))
#covariates
xx=cumsum(ref)
yy=diff(xx)
zz=diff(yy)
#equalizing lengths of above vectors
vecL=length(zz)
xx=xx[1:vecL]
yy=yy[1:vecL]
zz=zz[1:vecL]
#adding noise to covariates
set.seed(10)
X=xx + max(xx)/100*rnorm(vecL)
Y=yy + max(yy)/100*rnorm(vecL)
Z=zz + max(zz)/100*rnorm(vecL)
#three segment response variable, total 830 points
V[1:200] = 0.6 *X[1:200]+ 0.2 *Y[1:200]+ 0.8 *Z[1:200]+ 0.15 + 0.01*rnorm(200)
V[201:400] = 1.6 *X[201:400]+ 1.2 *Y[201:400]+ 1.8 *Z[201:400]+ 1.15 + 0.01*rnorm(200)
V[401:830] = 3.0 *X[401:830]+ 5.0 *Y[401:830]+ 4.0 *Z[401:830]+ 2.50 + 0.01*rnorm(430)
##linear model
linearFit=lm(formula=V~X+Y+Z)
summary(linearFit)
##segmented
segFit=segmented(linearFit,seg.Z=~X+Y+Z,psi=list(X=c(NA),Y=c(NA),Z=c(NA)),control=seg.control(display=TRUE, K=4, stop.if.error=FALSE))
そして、これは出力です:
segFit=segmented(linearFit,seg.Z=~X+Y+Z,psi=list(X=c(NA),Y=c(NA),Z=c(NA)),control=seg.control(display=TRUE, K=4, stop.if.error=FALSE))
Error in segmented.lm(linearFit, seg.Z = ~X + Y + Z, psi = list(X = c(NA), :
Bootstrap restart only with a fixed number of breakpoints
psi とコントロールを正しく設定していますか? どんな助けでも大歓迎です。