您可以使用“pgfplotstable”对表达式进行线性回归吗?

您可以使用“pgfplotstable”对表达式进行线性回归吗?

我的表中有很多数据,但它们不是线性相关的。我可以通过计算函数(x expry expr表达式)将关系线性化。我想用pgfplots在 pgfplot 中显示数据表达式的结果,并使用该create col/linear regression操作查找和绘制回归线。

这是 MWE

\documentclass{article}
\usepackage{tikz}
\usepackage{pgfplots,pgfplotstable}
\usepackage{siunitx}
\begin{document}
    \pgfplotstableread{%
     myx myy
     1 1
     2 1.41
     3 1.67
     4 2.03
     5 2.2
     6 2.45
     9 2.97
}\mytable

    \begin{tikzpicture}
    \begin{axis}[xlabel=my x,ylabel=(my y)$^2$]
    \addplot[only marks] table {\mytable}; %
    \addplot[only marks] table[y expr=\thisrow{myy}*\thisrow{myy}] {\mytable};    
    \addplot[no marks] table[y={create col/linear regression={y=myy}}] {\mytable}; %

%    \addplot[no marks] table[y={create col/linear regression={y expr={\thisrow{myy}*\thisrow{myy}}}}] {\mytable};
    \end{axis}
    \end{tikzpicture}
\end{document}

输出如下: 在此处输入图片描述

我绘制了myx vs myymyx vs myy$^2$数据点,以及原始数据的线性回归。当我尝试对平方进行线性回归时,myy我得到了错误。具体错误取决于我尝试的语句的形式[y={create col/linear regression={....}}],我尝试了很多,但都不起作用。

是否可以在pgfplots/pgfplotstable上下文中进行这种回归?如果不行,除了输入线性化的数据点外,还能做什么呢,因为我已经在 LaTeX 中有了数据表...

(为什么这个 SE 部分不支持 MathJax 输入?!)

答案1

好的,经过一番搜索,我找到了在表中创建新列的函数。完成此操作后,我可以对新计算的(线性化)列进行线性回归。这可能不是创建列的最有效或最优雅的代码,但它确实有效。

我用它\pgfplotstableset{create on use ...}来计算一个新列myysquare,然后将其{y=myysquare}作为回归中的值。我对真实数据的实际线性化操作只是稍微复杂一点,所以移植它应该不是问题。

\documentclass{article}
\usepackage{tikz}
\usepackage{pgfplots,pgfplotstable}
\usepackage{siunitx}
\begin{document}
    \pgfplotstableread{%
     myx myy
     1 1
     2 1.41
     3 1.67
     4 2.03
     5 2.2
     6 2.45
     9 2.97
}\mytable
\pgfplotstableset{ %
    create on use/myysquare/.style={ %
         create col/expr={\thisrow{myy}*\thisrow{myy}}}
         }
    \begin{tikzpicture}
    \begin{axis}[xlabel=my x,ylabel=(my y)$^2$]
    \addplot[only marks] table {\mytable}; %
    \addplot[only marks] table[y=myysquare] {\mytable};    
    \addplot[no marks] table[y={create col/linear regression={y=myy}}] {\mytable}; %

    \addplot[no marks] table[y={create col/linear regression={y=myysquare}}] {\mytable}; %
    \end{axis}
    \end{tikzpicture}
\end{document}

输出

相关内容