找到系数和曲线幂函数的最适合使用polyfit !

12个视图(30天)
我试图找到系数和n的函数y = A *再保险。^ n,这是一个幂函数。图是这样的:
我不确定如何找到最适合线与polyfit我日志他们两个吗?

接受的答案

约翰D 'Errico
约翰D 'Errico 2015年5月15日
编辑:约翰D 'Errico 2015年5月15日
很明显,给定的幂函数不满足您的数据。希望它工作是不够的。事实上,它似乎是一对不连续模型。一个幂函数是不够的。我怎么知道?
让我从头开始。假设您有一个重对数坐标图的一些数据,模型的地方
y = x ^ * b
然后如果我们绘制使用重对数坐标图,你是隐式压片下面的转换:
日志(y) =日志(a) + b *日志(x)
如果重对数坐标图中,曲线是现在很好线性斜率的b,然后我们可以很好地识别模型。
问题是,你显然有两段曲线,非常不同的斜坡。更糟糕的是,似乎没有连续模型。有一个不连续的曲线在重对数坐标图。
所以我的建议是解决这个函数,它生活在两个域的因变量,断点,大约在Re = 2500。(我不能确切地知道,断点所在,因为你没有数据之间大致Re = 2000和Re = 3000)。
所以提取数据点,低于2500年Re = =,,做一个健康。然后提取剩余的设置,第二个适合。任何单一的全球力量适合整个组就会失败。我很抱歉,但它将无法给你的东西是一个可行的模型与任何类型的预测能力。
下一个问题是是否应该在对数域建模polyfit,或原un-logged域。明星明确声称,它应该在原来的领域,但我很乐意反驳这一点。事实上,我们还不知道建模应该做。明星可能是正确的,或者他可能是错的。我缺乏足够的信息,所以你直到你做一些调查。
当你适应的模型形式
y = x ^ * b
你隐式假设一个添加剂错误结构。也就是说,您假设错误的形式
y = x ^ * b + e
在e可能是正态分布误差,意味着零和一些未知的方差。
然而通常情况下,我们没有添加剂错误。事实上,如果你的错误是成比例的,所以将躺在大的函数值更大的错误,那么你基本上有一个乘法误差结构。在这种情况下,当您日志模型,乘法错误变成添加剂错误。但是如果你试图记录表达式(* x ^ b + e),日志的总和并不简单。
一个乘法误差(相对误差)模型是这样的:
y = x ^ * b * e
在e术语通常是对数正态分布分布的误差。所以日志,表达的是这样的:
日志(y) =日志(a) + b *日志(x) +日志(e)
如果e是对数正态分布的噪声,那么日志(e)是正态分布。
这通常是足够的情况下,它是正确的在对数域建立模型。我们如何能知道哪个是哪个吗?一个非常强大的线索可以来自观察残差。无论如何你应该画出残差模型适合。所以把它们。这需要多一点
情节(x, y - yhat,“o”)
看看如果他们往往更均匀分布在一个与其他形式的模型。这将告诉你如何适应模式。
所以明星已经向您展示了如何做一个模型与非线性形式。在线性化模型的情况下,这样做
印第安纳州= Re < 2500;
x_1 =再保险(印第安纳州);
x_2 = Re(~印第安纳州);
y_1 = y(印第安纳州);
y_2 = y(~印第安纳州);
ab_1 = polyfit(日志(x_1)、日志(y_1), 1);
ab_2 = polyfit(日志(x_2)、日志(y_2), 1);
现在,我们可以从这些足够适合容易恢复系数。
A_1 = exp (ab_1 (2));
n_1 = ab_1 (1);
a₂= exp (ab_2 (2));
甲烷= ab_2 (1);
yhat_1 = A_1 * x_1。^ n_1;
yhat_2 = a₂* x_2。^甲烷;
resid_1 = y_1 - yhat_1;
resid_2 = y_2 - yhat_2;
现在画出残差。如果他们看起来很乖巧,随机的残差,然后转换似乎有道理,你有一个简单的方法来解决这个问题。如果残差有一个模式,说他们看起来大约u型,或者他们似乎大曲线的一端,然后log-domain适应模型是一个坏的选择。
另一种思考相对误差的问题是想想如何测量的数据,它是怎样产生的,噪音将如何进入。一些数据只是逻辑上的噪音,因变量的大小成正比。如果是这样,那么日志模型是有意义的,以适应它。另一条线索往往只是在数字本身。如果日志数据,因为它跨越许多数量级的,很有可能你的噪音结构成正比。
但这是我们不会知道,除非你尝试它。我唯一能绝对保证吗?那就是一个幂函数拟合,在任何领域,这里是一个糟糕的选择。已经证明(提前)你的阴谋。
2的评论
约翰D 'Errico
约翰D 'Errico 2015年5月16日
编辑:约翰D 'Errico 2015年5月16日
但我不知道你在策划什么。我的第一个猜想可能是你策划的红点是残差,不适合本身。因为我缺少你的数据,我不能我编写测试代码(尽管它看起来正确的)显示结果应该是什么样子。
您可能决定通过情节的方式使用对数尺度x,因此使用semilogx。当然,你不能使用对数尺度残差,因为他们既有积极的一面,也有消极的。

登录置评。

更多的答案(0)

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!