由于我没有足够的声誉来添加评论以澄清问题,因此我试图帮助回答。此外,通常在转换数据以拟合线性回归时,如果您的原始模型是:y = b0 + b1x,那么获取预测变量和响应的对数会给出一个新模型 y* = b0 + b1x* 其中 y* = ln( y) 和 x* = ln(x)。为什么你决定你的模型应该是这样的形式:ln(y) = ln((xb)/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');
给定上面的代码,如果你想绘制 log(y) = log((xb)/b) 的各种结果,你可以使用这样的东西:
for b = 0.1:0.1:4
ln_x = log((x-b)/b);
figure, plot(ln_x, ln_y, 'x');
end