JeT
This animation aims at showing the intuition on how these elements would be correlated.

The idea is to have a bunch of vectors whose color will simply change
- blue if  y>0
- gray if  y=0
- red if  y<0

You can then see the structure of correlation between them is changing whereas the distance between them remains the same.

I am stuck on a loop as you can see in my horrible (manual) code.


%convert -delay 20 -density 100x100 -dispose previous F:/NewOrga/_chap/chap30/_TikZ/TikZCorrelBasket.pdf -coalesce -layers optimize F:/NewOrga/_chap/chap30/_TikZ/TikZCorrelBasket.gif

MWE


\documentclass[tikz]{standalone}
%\usepackage{tikz}
\usetikzlibrary{arrows.meta}

%\usetikzlibrary{external}
%\tikzexternalize[prefix=TikZOut/]

\tikzset{
arr/.style = {draw=#1, -Latex},
dot/.style = {circle, fill, minimum size=#1,
inner sep=0pt, outer sep=0pt,
fill=red, node contents={}},
dot/.default = 6pt
}
\newcommand{\correl}[1]{

\begin{tikzpicture}

%\draw[help lines,blue!20] (0.5, -4) grid (4.5, 4);
\useasboundingbox (-0.5,-2) rectangle (4.5,2);

\node (n0) [dot];

\foreach \y [count=\i] in {#1} %<- #2 How to I loop on this in  ?
{
\ifnum\y<0
\draw[arr=red]  (n0) -- (3,(\y/10) node[right] {$\mathsf{{S}_{\i}}$};
\fi
\ifnum\y=0
\draw[arr=gray] (n0) -- (3,\y/10) node[right] {$\mathsf{{S}_{\i}}$};
\fi
\ifnum\y>0
\draw[arr=blue] (n0) -- (3,\y/10) node[right] {$\mathsf{{S}_{\i}}$};
\fi
}

\end{tikzpicture}
}

\begin{document}

%Pls don't laugh too loud before you read this uggly code. I tried still uggly

%  \foreach [evaluate={
%   \a  = \x ;
%   \b = \a - 4 ;
%   \c = \b - 4 ;
%   \d = \c - 4 ;
%   }] \x in {12}
%{

%and tried to play with evaluate=\i as \x using int(\i+6) but no result.

\correl{20,14,8,2}
\correl{19,13,7,1}
\correl{18,12,6,0}
\correl{17,11,5,-1}
\correl{16,10,4,-2}
\correl{15,9,3,-3}
\correl{14,8,2,-4}
\correl{13,7,1,-5}
\correl{12,6,0,-6}
\correl{11,5,-1,-7}
\correl{10,4,-2,-8}
\correl{9,3,-3,-9}
\correl{8,2,-4,-10}
\correl{7,1,-5,-11}
\correl{6,0,-6,-12}
\correl{5,-1,-7,-13}
\correl{4,-2,-8,-14}
\correl{3,-3,-9,-15}

\end{document}



user 3.14159
You can definitely use a loop.

\documentclass[tikz]{standalone}
\usetikzlibrary{arrows.meta}

\tikzset{
arr/.style = {draw=#1, -Latex},
dot/.style = {circle, fill, minimum size=#1,
inner sep=0pt, outer sep=0pt,
fill=red, node contents={}},
dot/.default = 6pt
}
\newcommand{\correl}[1]{%
\begin{tikzpicture}

%\draw[help lines,blue!20] (0.5, -4) grid (4.5, 4);
\useasboundingbox (-0.5,-2) rectangle (4.5,2);

\node (n0) [dot];

\foreach \y [count=\i,parse=true] in {#1} %<- #2 How to I loop on this in  ?
{\pgfmathtruncatemacro{\itest}{1+sign(\y)}%
\ifcase\itest
\draw[arr=red]  (n0) -- (3,(\y/10) node[right] {$\mathsf{{S}_{\i}}$};
\or
\draw[arr=gray] (n0) -- (3,\y/10) node[right] {$\mathsf{{S}_{\i}}$};
\or
\draw[arr=blue] (n0) -- (3,\y/10) node[right] {$\mathsf{{S}_{\i}}$};
\fi
}

\end{tikzpicture}
}

\begin{document}
\foreach [evaluate={
\a  = \x ;
\b = \a - 4 ;
\c = \b - 4 ;
\d = \c - 4 ;
}] \x in {20,19,...,3}
{\correl{\a,\b,\c,\d}}

\end{document}

Note that the evaluates are not needed in this case because Ti*k*Z parses the expressions anyway.

\documentclass[tikz]{standalone}
\usetikzlibrary{arrows.meta}

\tikzset{
arr/.style = {draw=#1, -Latex},
dot/.style = {circle, fill, minimum size=#1,
inner sep=0pt, outer sep=0pt,
fill=red, node contents={}},
dot/.default = 6pt
}
\newcommand{\correl}[1]{%
\begin{tikzpicture}
%\draw[help lines,blue!20] (0.5, -4) grid (4.5, 4);
\useasboundingbox (-0.5,-2.2) rectangle (4.5,2.2);

\node (n0) [dot];

\foreach \y [count=\i] in {#1} %<- #2 How to I loop on this in  ?
{\pgfmathtruncatemacro{\itest}{1+sign(\y)}%
\ifcase\itest
\draw[arr=red]  (n0) -- (3,{(\y)/10}) node[right] {$\mathsf{{S}_{\i}}$};
\or
\draw[arr=gray] (n0) -- (3,{(\y)/10}) node[right] {$\mathsf{{S}_{\i}}$};
\or
\draw[arr=blue] (n0) -- (3,{(\y)/10}) node[right] {$\mathsf{{S}_{\i}}$};
\fi
}
\end{tikzpicture}}

\begin{document}
\foreach \x in {20,19,...,3}
{\correl{\x,\x-4,\x-8,\x-12}}

\end{document}


Enter question or answer id or url (and optionally further answer ids/urls from the same question) from

Separate each id/url with a space. No need to list your own answers; they will be imported automatically.