如何用脚本计算出最符合的值?大家好!
如图: 有若干组数据、它们的数据比较接近。
每组数据有大、小两个值。
如何通过脚本来求出图中红色的水平线的最优值:
要求这个水平线与能这组数据最多的其中一个端点接近、要求这条线是水平的。

我试着用最小二乘法来回归、但还是不理想。
谢谢各位专家!
ScriptingWindows回复:如何用脚本计算出最符合的值?dt = Current Data Table();
m = Mean( dt[0, 2 :: 3] );
Column( "S" ) << Formula( If( Abs( H - m ) > Abs( L - m ), L, H ) );
dt << run formulas;
Column( "S" ) << deleteFormula;
ar = dt << GetAsMatrix( {4, 1} );
{Beta, VarBeta} = Least Squares Solve( ar[0, 1], ar[0, 2] );
x = round(Beta[1],0);感谢专家!
回复:如何用脚本计算出最符合的值?嗨拉拉
我的理解是你需要一个值,需要为所有这个数据的组取值和1个这个范围。
我的想法是因此是艰难的水平线,所以f(x)=b。换个就是方法取一个值b,让b距离11个组最近的那个点的值的求和最小。
即,结果为b。那么整体的函数就是求, Y=min(abs(y1max-b),(y1min-b))+min(abs(y2max-b),(y2min-b))+.. .min(abs(y11max-b),(y11min-b))。对Y求最小。
你可以尝试整理这个函数然后求Y快时b的值,然后带入函数f(x)=b。应该就可以了。
回复: 如何用脚本计算出最符合的值?非常感谢!
假如这样的数据超过一百组、也要这样编辑公式吗?
我还是没有想到好方法。
再次感谢!
回复:如何用脚本计算出最符合的值?x = Round( Beta[1] + 5 * Beta[2], 0 );