我有一个线性平稳函数。我希望该函数排除小于所达到最大值的10%的y值(意味着平稳期的y值)并进行迭代,直到不发生任何变化(即找不到比其最大值大10%的值)。>
这里是一个例子:
#create data
x=c(1:7,1:7)
y=c(2,10,21,27,35,33,35,2,9,20,28,32,30,31)
df<-data.frame(x,y)
plot(x,y)
#create linear-plateau function
#a and b are intercept and slope for x<c, and c is the breakpoint
lp <-function(x, a, b, c){
ifelse(x > c, a + b * c, a + b * x)
}
#fit the model
fit1=nls(y ~ lp(x, a, b, c), data = df, start = list(a = 0, b = 10, c = 5))
> coef(fit1)
a b c
-7.000000 8.750000 4.533333
最大y值(表示平稳期的y值)达到x=c
,可以计算为ymax=a+b*c
。
问题:
如何使该函数排除小于最大值的10%的值并进行迭代,直到未观察到任何变化?