具有固定斜率的对数对数图中的线性回归

具有固定斜率的对数对数图中的线性回归

目标:创建一个图来比较数值方法的经验收敛速度与理论预期的收敛速度。

因此,给定一个对数对数图,我想添加具有规定斜率(在本例中为方法的收敛)和最佳截距以拟合数据的线(例如,在最小二乘意义上)。

问题:如何在 pgfplots 中进行具有固定斜率的线性回归?

到目前为止,我所做的工作如下:(1)计算回归线(数量对数),(2)保存截距,(3)根据理论预期的斜率和该截距绘制直线。

只要数据与理论一致,这便是我所寻找的一个很好的近似值。

谢谢

中频熔断器

答案1

您可以使用gnuplotPGFPlots 进行参数估计。

要估计斜率和截距,可以使用以下\addplot命令:

  \addplot [red, raw gnuplot] gnuplot {
   a = -1;
   b = 0.1;
   f(x) = a*x+b;
   fit f(x) 'data.dat' using (log($1)):(log($2)) via a,b;
   set samples 2;
   plot [x=100:10000] exp(f(log(x)));  
  };

这定义了初始参数值和方程,然后将参数拟合到数据文件中找到的对数变换值data.dat。为了生成图,样本数设置为 2(因为我们要绘制一条直线),指数函数必须应用于函数值,并且必须对 x 个样本取对数。

为了规定斜率,将直线via a,b中的改为。这样,将保持其初始值不变,并且仅估计截距。fitvia ba

下面是一个观察蒙特卡洛方法估算 Pi(示例 1)红线采用理论收敛速度-1,黑线采用根据数据估算的收敛速度。

\documentclass{article}

\usepackage{pgfplots}
\usepackage{filecontents}

\begin{filecontents*}{data.dat}
N   e
100 0.0984
400 0.0316
1600 0.0284
6400     0.00659
10000 0.00359
\end{filecontents*}

\begin{document}
\begin{tikzpicture}
  \begin{axis}[
    xmode=log, ymode=log,
    domain=100:10000
  ]
  \addplot [only marks] table [y=e] {data.dat};
  \addplot [red, raw gnuplot] gnuplot {
   a = -1;
   b = 0.1;
   f(x) = a*x+b;
   fit f(x) 'data.dat' using (log($1)):(log($2)) via b;
   set samples 2;
   plot [x=100:10000] exp(f(log(x)));  
  } node [pos=0.25, above right] {$a=-1$};

  \addplot [raw gnuplot] gnuplot {
   a = -1;
   b = 0.1;
   f(x) = a*x+b;
   fit f(x) 'data.dat' using (log($1)):(log($2)) via a,b;
   set samples 2;
   plot [x=100:10000] exp(f(log(x)));  
  } node [pos=0.25, below left] {$a=-0.67$} ;


  \end{axis}
 \end{tikzpicture}
\end{document}

相关内容