我有两组数据:峰值速度和振幅。两个参数之间的关系不是线性的,我在执行线性回归之前使用了对数(base10)图(这个过程应该等同于幂律拟合)。
然而,当我将数据绘制在对数 - 对数比例图(两个轴都是对数刻度)时,线性拟合在我看来并不是线性的。如何使用Matlab在对数 - 日志图中执行线性回归。
我附上了图表的图片和我获得的线性拟合。
非常感谢任何帮助!
提前谢谢!
答案 0 :(得分:2)
这确实是幂律的拟合,可以用公式y = k * x^tau
来描述。如果您在对数日志图中绘制它,则会得到一条直线。要检索参数,您必须取方程两边的对数,然后进行线性拟合:
% generate some data with random noise
x = logspace(-.5, 1.5, 100);
y = 42 * x.^0.66;
y = y .* (1 + 0.2 * randn(size(y)));
% do linear fit: log(y) = p(1) * log(x) + p(2)
p = polyfit(log(x), log(y), 1);
% retrieve original parameters
tau = p(1);
k = exp(p(2));
% plot
loglog(x, y, '.', x, k*x.^tau, 'r')
axis([.1 100 10 1000])
legend('data', sprintf('power law fit: y = %.1f * x^{%.2f}', k, tau))
xlabel('Amplitude')
ylabel('Velocity')
结果: 请注意,这只是一个快速而肮脏的技巧,它可能不会给出统计上正确的结果。