我想计算我的数据的加权线性回归,但我的数据文件列出的是每个点的标准差,而不是方差。
有没有办法用方差方程来计算标准差的平方?我将从文件中读取数据。
我在 PGFPlotsTable 手册中看到过以下内容,但无法在我的实例中使其工作。我已对其进行了修改,以便执行我想要的操作。
\pgfplotstableset{
create on use/vari/.style={
create col/expr={U^2}}
}
我的文件:
\documentclass{article}
\usepackage{pgfplots}
\usepackage{pgfplotstable}
\begin{document}
\begin{tikzpicture}[baseline]
\begin{axis}[
xlabel={$x$},
ylabel={$y$},
]
\addplot[
only marks,
error bars/.cd, y dir=both, y explicit,
]
table[
x = X,
y = Y,
y error = U,
]
{
X Y U
1 1 1
20 20 4.472
40 35 5.916
60 71 8.426
80 78 8.832
100 114 10.677
};
\addplot[
red,
]
table[
x = X,
y = {create col/linear regression={y=Y, variance=U}}, %this should be U^2
]
{
X Y U
1 1 1
20 20 4.472
40 35 5.916
60 71 8.426
80 78 8.832
100 114 10.677
};
\end{axis}
\end{tikzpicture}
\end{document}
答案1
你几乎已经做到了。唯一缺少的就是\thisrow{U}
在U
你的create col/expr
\documentclass{article}
\usepackage{pgfplots}
\usepackage{pgfplotstable}
\begin{document}
\pgfplotstabletypeset[ % just to show that this works
create on use/vari/.style={
create col/expr={\thisrow{U}^2}},
columns={U,vari}
]{
X Y U
1 1 1
20 20 4.472
40 35 5.916
60 71 8.426
80 78 8.832
100 114 10.677
}
\bigskip
\begin{tikzpicture}[baseline]
\begin{axis}[
xlabel={$x$},
ylabel={$y$},
]
\addplot[
only marks,
error bars/.cd, y dir=both, y explicit,
]
table[
x = X,
y = Y,
y error = U,
]
{
X Y U
1 1 1
20 20 4.472
40 35 5.916
60 71 8.426
80 78 8.832
100 114 10.677
};
\addplot[
red,
]
table[
create on use/vari/.style={
create col/expr={\thisrow{U}^2}},
x = X,
y = {create col/linear regression={y=Y, variance=vari}}, %this should be U^2
]
{
X Y U
1 1 1
20 20 4.472
40 35 5.916
60 71 8.426
80 78 8.832
100 114 10.677
};
\end{axis}
\end{tikzpicture}
\end{document}