Распространить линейную регрессию на весь участок

Распространить линейную регрессию на весь участок

У меня есть набор данных, и я хочу выполнить линейную регрессию на них и отобразить полученную линию. Из-за точности вычислений значения достигают плато после определенной точки, и я не хочу включать эти данные в вычисление регрессии.

В настоящее время я работаю над двумя файлами данных: один со всеми данными, а другой с данными, используемыми для единственной линейной регрессии (возможно, не самой лучшей, но я ничего другого не нашел). Вот MWE:

\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\usepackage{pgfplotstable}
\begin{filecontents}[overwrite,noheader]{data.dat}
h err
0.05 3.11604689111e-09
0.025 1.89857594659e-11
0.0125 3.14299545014e-13
0.00625 2.38864314351e-14
0.003125 4.93001614302e-14
\end{filecontents}
\begin{filecontents}[overwrite,noheader]{data_for_reg.dat}
h err
0.05 3.11604689111e-09
0.025 1.89857594659e-11
0.0125 3.14299545014e-13
\end{filecontents}

\begin{document}
\begin{tikzpicture}
\begin{axis}[xmode=log, ymode=log]
\addplot[only marks,blue] table[x=h,y=err]{data.dat};
\addplot[no markers,red,thick] table [x=h,y={create col/linear regression={y=err}}] {data_for_reg.dat};
\end{axis}
\end{tikzpicture}
\end{document}

В результате получаем рисунок со всеми данными (синим цветом) и линейную регрессию по выбранным точкам, но только по ним (красным цветом): введите описание изображения здесь

Мне бы хотелось продлить эту линию на весь участок, как показано зеленым цветом на рисунке выше (зеленый цвет был добавлен вручную на скриншоте).

решение1

Из pgfplotsруководства (раздел 4.24)Подгонка линий – Регрессия), параметры регрессии хранятся в \pgfplotstableregressionaи \pgfplotstableregressionb. Так что нарисуйте соответствующую функцию с соответствующим доменом и ключом, update limits=falseчтобы ваши оси оставались неизменными:

\addplot[update limits=false, no markers, green, thick, domain={1e-3:1e-1}]
{x^\pgfplotstableregressiona*exp(\pgfplotstableregressionb)};

Пример:

\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\usepackage{pgfplotstable}
\begin{filecontents}[overwrite,noheader]{data.dat}
h err
0.05 3.11604689111e-09
0.025 1.89857594659e-11
0.0125 3.14299545014e-13
0.00625 2.38864314351e-14
0.003125 4.93001614302e-14
\end{filecontents}
\begin{filecontents}[overwrite,noheader]{data_for_reg.dat}
h err
0.05 3.11604689111e-09
0.025 1.89857594659e-11
0.0125 3.14299545014e-13
\end{filecontents}

\begin{document}
\begin{tikzpicture}
\begin{axis}[xmode=log, ymode=log]
\addplot[only marks,blue] table[x=h,y=err]{data.dat};
\addplot+[no markers, white] table [x=h,y={create col/linear regression={y=err}}] {data_for_reg.dat};
\addplot[update limits=false, no markers, green, thick, domain={1e-3:1e-1}]
{x^\pgfplotstableregressiona*exp(\pgfplotstableregressionb)};
\end{axis}
\end{tikzpicture}
\end{document}

подобранные данные

Связанный контент