错误的线性回归计算

错误的线性回归计算

我刚开始使用 pgfplot,实际上我正尝试从带有线性回归的图中获取方程。但是,我正在对数对数图中工作,得到的回归方程是错误的(excel 是正确的)。

我想知道如何纠正它,它应该是:0.734*x + 7e-10,而不是 1*x + 0.42

感谢您的帮助 !

这是 japan.dat

Q P1 P2
1.00E-07 3.01E-07 7.38E-08
1.00E-06 2.95E-06 7.35e-07
1.00E-05 2.95E-05 7.34E-06

和 .tex :

\documentclass[12pt]{article} % this must go first, there are many different classes
\usepackage{pgfplots}
\usepackage{pgfplotstable}

\begin{document}

\begin{tikzpicture}[scale=1]
\begin{loglogaxis}[
height=10cm,
width=10cm,
title=Required pumping speed,
xlabel=Q (mbar.L.s$^{-1}$),
ylabel=P (mbar),
ymin=1e-8, ymax=1e-3,
minor y tick num=1,
legend entries={P$_1$(50 L.s$^{-1}$),P$_2$(50 L.s$^{-1}$),$\pgfmathprintnumber{\pgfplotstableregressiona} \cdot x
\pgfmathprintnumber[print sign]{\pgfplotstableregressionb}$}]
\addplot[color=red,dashed]
    table[x index=0,y index=1] {japan.dat};
\addplot[color=red]
    table[x index=0,y index=2] {japan.dat};

\addplot table[
no marks,
red,
x index=0,y index=2,
y={create col/linear regression={y=P2}}]
{japan.dat};
\end{loglogaxis}

\end{tikzpicture}

\end{document}

答案1

您的数据似乎位于对数坐标的一条线上。

因此,我们可以通过简单的数学方法验证回归线:斜率必须是 (y1-y0) / (x1-x0) - 对数坐标。我曾经gnuplot计算过数据文件中的前两行,得到

print (log(7.35e-7) - log(7.38e-08))/(log(1e-6) - log(1e-7))
0.998230977261152

gnuplot> print log(7.38e-08) - 0.998230977261152 * log(1e-7)
-0.332324732095135

这与 pgfplots 报告的内容一致:

在此处输入图片描述

您确定您有正确的数据文件吗?

\documentclass{standalone}
\usepackage{pgfplots}
\usepackage{pgfplotstable}

\begin{document}

\begin{tikzpicture}[scale=1]
\begin{loglogaxis}[
height=10cm,
width=10cm,
title=Required pumping speed,
xlabel=Q (mbar.L.s$^{-1}$),
ylabel=P (mbar),
ymin=1e-8, ymax=1e-3,
minor y tick num=1,
legend entries={P$_1$(50 L.s$^{-1}$),P$_2$(50 L.s$^{-1}$),$\pgfmathprintnumber{\pgfplotstableregressiona} \cdot x
\pgfmathprintnumber[print sign]{\pgfplotstableregressionb}$}]
\addplot[color=red,dashed]
    table[x index=0,y index=1] {japan.dat};
\addplot[color=red]
    table[x index=0,y index=2] {japan.dat};

\addplot[red] 
    table[x index=0,y index=2,
        y={create col/linear regression={y=P2}}]
{japan.dat};
\end{loglogaxis}

\end{tikzpicture}

\end{document}

相关内容