在对数日志(基数10)绘图Matlab上执行线性回归

时间:2014-01-25 17:15:55

标签: matlab linear-regression logarithm

我有两组数据:峰值速度和振幅。两个参数之间的关系不是线性的,我在执行线性回归之前使用了对数(base10)图(这个过程应该等同于幂律拟合)。

然而,当我将数据绘制在对数 - 对数比例图(两个轴都是对数刻度)时,线性拟合在我看来并不是线性的。如何使用Matlab在对数 - 日志图中执行线性回归。

我附上了图表的图片和我获得的线性拟合。

非常感谢任何帮助!

提前谢谢!

enter image description here

1 个答案:

答案 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')

结果: power law fit 请注意,这只是一个快速而肮脏的技巧,它可能不会给出统计上正确的结果。