需要帮助线性化数据

问题描述 投票:0回答:1

我有y和x没有线性趋势的数据。数据如下,如果将y绘制为x的函数,则该图是非线性的。

x= [45.5976, 45.6311, 45.6599, 45.679, 45.703, 45.7461, 45.7749]
y = [0.17, 1.7, 5.1, 17, 51, 170, 510]
plot(x,y,'o')

我的目标是找到最佳值“ b”以使Ln(y)行为相对于ln((x-b)/ b)呈线性关系。换句话说,关于ln((x-b)/ b)的图ln(y)应该是一条直线。

matlab optimization linear-regression
1个回答
0
投票

由于我没有足够的声誉来添加评论以阐明问题,因此我试图提供答案。同样,通常在转换数据以拟合线性回归时,如果您的原始模型为:y = b0 + b1x,则同时获取预测变量和响应的对数即可得出新模型y * = b0 + b1x *其中y * = ln( y)和x * = ln(x)。您为什么决定模型的形式应为:ln(y)= ln((x-b)/ b)?

无论如何,要在Matlab中找到此类模型的最佳beta值,您将执行以下操作:

x= [45.5976, 45.6311, 45.6599, 45.679, 45.703, 45.7461, 45.7749]';
y = [0.17, 1.7, 5.1, 17, 51, 170, 510]';
figure(1), plot(x,y,'o');

ln_y = log(y);
ln_x = log(x);
figure(2), plot(ln_x, ln_y, 'x');

ln_X = [ones(length(ln_x),1) ln_x];
B = ln_X\ln_y;

ln_y_fitted = ln_X*B;
figure(2), 
hold on
plot(ln_x, ln_y_fitted, '--', 'Color', 'r');
© www.soinside.com 2019 - 2024. All rights reserved.