Estratégias para visualizar múltiplas regressões bidimensionais?

Estratégias para visualizar múltiplas regressões bidimensionais?

Espero poder descrever minha pergunta de forma mais clara aqui no conteúdo do que no título. Pode ser mais uma questão de estratégia de visualização do que técnicas específicas de pgfplots. O problema é sobre regressões de entradas bidimensionais, mas deixe-me começar com entradas unidimensionais.

Digamos que em meu experimento eu vario a entrada x e observo a saída y. Repito os experimentos três vezes. O gráfico mostra os resultados (os códigos estão listados no final):

regressões múltiplas de entrada unidimensional

Agora suponha que meu experimento tenha duas entradas xey e uma saída z. Para as observações de um experimento, pode ser plotado assim:

regressão de entrada bidimensional

No entanto, para experiências repetidas (digamos 4-5 vezes), o gráfico 3-D contendo todos estes resultados é bastante confuso. O gráfico de média e desvio parece melhor, mas certamente perdeu informações. Aqui está um exemplo quando os experimentos são repetidos duas vezes (dois conjuntos de observações), os gráficos serão:

regressões múltiplas de entrada bidimensional

Existe alguma estratégia que consiga visualizar melhor esse caso (múltiplos xyz)? "Melhor" talvez no sentido de que cada experimento individual seja apresentado claramente e também que vários experimentos sejam apresentados juntos para facilitar a comparação.

Apenas para referência, estes são os códigos pgfplots que geram os gráficos.

Gráfico xyz múltiplo:

\begin{tikzpicture}[scale=0.8]
\begin{axis}
  [scale only axis, width=0.35\textwidth,
  xlabel=x, ylabel=y, zlabel=z, title=Two dimensional input,]
  \addplot3[surf,mesh/rows=5] coordinates { 
    (0,0,0) (1,0,0) (2,0,0) (3,0,0) 
    (0,1,0.1) (1,1,0.3) (2,1,0.3) (3,1,0.4) 
    (0,2,0.15) (1,2,0.5) (2,2,0.5) (3,2,0.5) 
    (0,3,0.65) (1,3,0.60) (2,3,0.65) (3,3,0.45) 
    (0,4,0.8) (1,4,0.75) (2,4,0.85) (3,4,0.65) 
  }; 
 \addplot3[surf,mesh/rows=5] coordinates { 
    (0,0,0.1) (1,0,0.1) (2,0,0) (3,0,0) 
    (0,1,0.3) (1,1,0.2) (2,1,0.2) (3,1,0.4) 
    (0,2,0.15) (1,2,0.6) (2,2,0.5) (3,2,0.5) 
    (0,3,0.55) (1,3,0.7) (2,3,0.65) (3,3,0.45) 
    (0,4,0.6) (1,4,0.85) (2,4,0.65) (3,4,0.35) 
  }; 
\end{axis} 
\end{tikzpicture}
\begin{tikzpicture}[scale=0.8]
\begin{axis}[scale only axis, width=0.3\textwidth,
  xlabel=x, ylabel=y, zlabel=z, title=Mean and Deviation,]
  \addplot3[surf,mesh/rows=5,
    error bars/z dir=both, error bars/z fixed=0.1,] coordinates { 
    (0,0,0.05) (1,0,0.05) (2,0,0) (3,0,0) 
    (0,1,0.2) (1,1,0.25) (2,1,0.25) (3,1,0.4) 
    (0,2,0.15) (1,2,0.55) (2,2,0.5) (3,2,0.5) 
    (0,3,0.65) (1,3,0.65) (2,3,0.65) (3,3,0.45) 
    (0,4,0.7) (1,4,0.80) (2,4,0.75) (3,4,0.5) 
  }; 
\end{axis} 
\end{tikzpicture}

Gráfico xyz único:

\begin{tikzpicture}[scale=0.8]
\begin{axis}
  [scale only axis, width=0.35\textwidth,
  xlabel=x, ylabel=y, zlabel=z, title=Two dimensional input,]
  \addplot3[surf,mesh/rows=5] coordinates { 
    (0,0,0) (1,0,0) (2,0,0) (3,0,0) 
    (0,1,0.1) (1,1,0.3) (2,1,0.3) (3,1,0.4) 
    (0,2,0.15) (1,2,0.5) (2,2,0.5) (3,2,0.5) 
    (0,3,0.65) (1,3,0.60) (2,3,0.65) (3,3,0.45) 
    (0,4,0.8) (1,4,0.75) (2,4,0.85) (3,4,0.65) 
  }; 
\end{axis} 
\end{tikzpicture}
\hfill
\begin{tikzpicture}[scale=0.8]
\begin{axis}[view={0}{90}, scale only axis, width=0.3\textwidth,
  xlabel=x, ylabel=y, zlabel=z, title=Top view of two dimensional input, ]
  \addplot3[surf,mesh/rows=5] coordinates { 
    (0,0,0) (1,0,0) (2,0,0) (3,0,0) 
    (0,1,0.1) (1,1,0.3) (2,1,0.3) (3,1,0.4) 
    (0,2,0.15) (1,2,0.5) (2,2,0.5) (3,2,0.5) 
    (0,3,0.65) (1,3,0.60) (2,3,0.65) (3,3,0.45) 
    (0,4,0.8) (1,4,0.75) (2,4,0.85) (3,4,0.65) 
  }; 
\end{axis} 
\end{tikzpicture}

Gráfico xy múltiplo:

\begin{tikzpicture}
\begin{axis}
  [scale only axis, width=0.3\textwidth,
  xlabel=x, ylabel=y, title=One dimensional input]
  \addplot coordinates{(0, 0.6) (0.1, 0.25) (0.2, 0.1) (0.3, 0.06) (0.4, 0.02) (0.5, 0.01)};
  \addplot coordinates{(0, 0.7) (0.1, 0.1) (0.2, 0.125) (0.3, 0.08) (0.4, 0.016) (0.5, 0.02)};
  \addplot coordinates{(0, 0.5) (0.1, 0.15) (0.2, 0.15) (0.3, 0.10) (0.4, 0.012) (0.5, 0.03)};
  \legend{exp1, exp2, exp3}
\end{axis}
\end{tikzpicture}
\hfill
\begin{tikzpicture}
\begin{axis}
  [scale only axis, width=0.3\textwidth,
  xlabel=x, ylabel=y, title=Mean and Deviation]
  \addplot[ error bars/.cd, y dir=both, y explicit, ]
    coordinates{(0, 0.6)  +- (0, 0.1) 
                    (0.1, 0.1)  +- (0, 0.1)
                    (0.2, 0.125) +- (0, 0.025)
                    (0.3, 0.08) +- (0, 0.08) 
                    (0.4, 0.016) +- (0, 0.04)
                  (0.5, 0.02) +- (0, 0.02)};
\end{axis}
\end{tikzpicture}

No entanto,

Responder1

Para obter esta foto...

insira a descrição da imagem aqui

...tente estes comandos,

pdflatex example.tex; asy  -twosided *.asy; pdflatex example.tex

...para compilar este exemplo.

\documentclass[]{article}
\usepackage[]{asymptote}
\begin{document}
Two Dimensional Input

\vspace{3cm}
\begin{asy}
settings.render=4;
import three;
import graph3;
currentlight=White;
currentprojection=orthographic(3,-5,1,center=true);
size(5cm);
size3(5cm,5cm,5cm, IgnoreAspect);

render render=render(compression=Low,merge=true);
triple[][] t1 = 
{
 {(0,0,0), (1,0,0), (2,0,0), (3,0,0) }, 
 {(0,1,0.1), (1,1,0.3), (2,1,0.3), (3,1,0.4)}, 
 {(0,2,0.15), (1,2,0.5), (2,2,0.5), (3,2,0.5)},
 {(0,3,0.65), (1,3,0.60), (2,3,0.65), (3,3,0.45)},
 {(0,4,0.8), (1,4,0.75), (2,4,0.85), (3,4,0.65)}
};
triple[][] t2 = 
{
   {(0,0,0.1), (1,0,0.1), (2,0,0), (3,0,0)},
   {(0,1,0.3), (1,1,0.2), (2,1,0.2), (3,1,0.4)},
   {(0,2,0.15), (1,2,0.6), (2,2,0.5), (3,2,0.5)},
   {(0,3,0.55), (1,3,0.7), (2,3,0.65), (3,3,0.45)},
   {(0,4,0.6),(1,4,0.85),(2,4,0.65),(3,4,0.35)}
};

draw(surface(t1), blue+opacity(0.9));
draw(surface(t2), red+opacity(0.6));

xaxis3("$x$",Bounds,InTicks);
yaxis3("$y$",Bounds,InTicks);
zaxis3("$z$",Bounds,InTicks);

\end{asy}
\end{document}

Obviamente você precisa ter o pdflatex, o pacote assíntota e o assíntota instalados em seu sistema. Com um pouco de sorte, você também obterá um objeto 3D interativo em seu PDF se abri-lo com uma versão recente do Acrobat Reader.

Desnecessário hoje eu concordo com Jake que mesmo que você pudesse fazer isso com pgfplots (o que você não pode simplesmente) é muito confuso.

Responder2

Outra solução semelhante, mas usando puramente pgfplots(não asymptote), é adicionar a opacity=0.5opção às superfícies. Como isto:

 \addplot3[surf,mesh/rows=5, opacity=0.5] coordinates { ...

truque de opacidade

Ainda não é perfeito, mas pelo menos a imagem é física (as superfícies fantasmas se interpenetram) e não prejudica o cérebro ao criar um objeto 3D impossível. Observe que o truque só funciona para o valor 0,5 (ou seja, a superfície não cobre mais a outra), caso contrário as superfícies começam a se sobrepor de uma forma que o cérebro acha estranho.

Você pode até fazer o mesmo truque com as barras de erro (com opacity) para obter o seguinte efeito:

opacidade com barras de erro

A seguir está o código completo da última figura:

\documentclass{article}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}[scale=0.8]
\begin{axis}
  [scale only axis, width=0.35\textwidth,
  xlabel=x, ylabel=y, zlabel=z, title=Two dimensional input,]
  \addplot3[surf,mesh/rows=5,opacity=0.5] coordinates { 
    (0,0,0) (1,0,0) (2,0,0) (3,0,0) 
    (0,1,0.1) (1,1,0.3) (2,1,0.3) (3,1,0.4) 
    (0,2,0.15) (1,2,0.5) (2,2,0.5) (3,2,0.5) 
    (0,3,0.65) (1,3,0.60) (2,3,0.65) (3,3,0.45) 
    (0,4,0.8) (1,4,0.75) (2,4,0.85) (3,4,0.65) 
  }; 
 \addplot3[surf,mesh/rows=5, opacity=0.5] coordinates { 
    (0,0,0.1) (1,0,0.1) (2,0,0) (3,0,0) 
    (0,1,0.3) (1,1,0.2) (2,1,0.2) (3,1,0.4) 
    (0,2,0.15) (1,2,0.6) (2,2,0.5) (3,2,0.5) 
    (0,3,0.55) (1,3,0.7) (2,3,0.65) (3,3,0.45) 
    (0,4,0.6) (1,4,0.85) (2,4,0.65) (3,4,0.35) 
  }; 
  \addplot3[mesh/rows=5,
    error bars/z dir=both, error bars/z fixed=0.1, opacity=0.3, draw=none] coordinates { 
    (0,0,0.05) (1,0,0.05) (2,0,0) (3,0,0) 
    (0,1,0.2) (1,1,0.25) (2,1,0.25) (3,1,0.4) 
    (0,2,0.15) (1,2,0.55) (2,2,0.5) (3,2,0.5) 
    (0,3,0.65) (1,3,0.65) (2,3,0.65) (3,3,0.45) 
    (0,4,0.7) (1,4,0.80) (2,4,0.75) (3,4,0.5) 
  };
\end{axis} 
\end{tikzpicture}
\end{document}

informação relacionada