我要教如何进行线性回归,为此,我在 Beamer 中制作幻灯片,并使用 PGFplots 进行线性回归,即
\begin{tikzpicture}[scale=0.7]
\begin{axis}
\addplot[only marks] table[x=Lat,y=Mort]{skincancer.txt};
\addplot[dashed] table[x=Lat,y={create col/linear regression={y=Mort}}]{skincancer.txt};
\end{axis}
\end{tikzpicture}
其中 skincancer.txt 只是一些包含一些有点线性依赖的数据的文本文件。
我感兴趣的是在回归线上标记 2 个点,以便提醒学生如何找到线性回归线的参数(alpha 和 beta)y = \alpha x+\beta
。
编辑:目标是不手动输入任何值。所有值都应从我导入的数据集中获取。不过我必须指定我感兴趣的是第 i 个和第 n 个点,这是可以的。
答案1
系数在\pgfplotstableregressiona
和中可用\pgfplotstableregressionb
,因此您只需添加第二个图,其中只有特定 x 值的标记和样本。我从手册中获取了下面的示例,并对其进行了稍微的编辑。
要从数据表的第 i 行和第 j 行获取 x 值,您可以执行类似以下代码的操作。我不知道这是否特别快,但似乎有效。
\documentclass[border=5mm]{standalone}
\usepackage{pgfplots,pgfplotstable}
\pgfplotstableread{
X Y
1 1.1
2 1.8
3 3.5
4 6
5 4.9
6 7
}\mydata
\begin{document}
% Preamble: \pgfplotsset{width=7cm,compat=1.14}
\begin{tikzpicture}
\begin{axis}[legend pos=outer north east]
\addplot +[only marks,mark=x] table[x=X,y=Y] {\mydata};
\addplot [red] table[
y={create col/linear regression={y=Y}}] {\mydata};
% plot dots on the regression line
\addplot [
only marks,
mark=*] table[
y expr={\pgfplotstableregressiona*
ifthenelse( % \coordindex starts counting from 0
\coordindex==1,% row i-1
\thisrow{X}, % X-value from row i-1
ifthenelse(\coordindex==4, % row j-1
\thisrow{X}, % X-value from row j-1
nan)) % if other row numbers, use nan
+ \pgfplotstableregressionb},
]
{\mydata};
%\xdef\slope{\pgfplotstableregressiona} %<-- might be handy occasionally
\addlegendentry{$y(x)$}
\addlegendentry{%
$\pgfmathprintnumber{\pgfplotstableregressiona} \cdot x
\pgfmathprintnumber[print sign]{\pgfplotstableregressionb}$}
\end{axis}
\end{tikzpicture}
\end{document}