2D 가우스 샘플 플로팅

2D 가우스 샘플 플로팅

지정된 평균과 분산을 사용하여 2D Guassian 샘플을 만드는 데 도움을 주실 수 있나요?

저는 과시안 곡선 만드는 법만 알고 있어요 :D

\documentclass{article}
\usepackage{paralist,pst-func, pst-plot, pst-math, pstricks-add,pgfplots}
\usetikzlibrary{patterns,matrix,arrows}
\begin{document}
\begin{tikzpicture}
    \begin{axis}[hide axis,clip=false,xmin=-4,xmax=4,xlabel={X},ymin=0,ymax=1] 
    \addplot[color=lime, samples=100] {1/sqrt(2)*exp(-(x+1)^2/1)} ;
    \end{axis}
\end{tikzpicture}
\end{document}

그리고 이에 대한 공식은 다음과 같습니다. 여기에 이미지 설명을 입력하세요

그리고 이것은 세 가지 정규 분포의 예가 될 것입니다: 여기에 이미지 설명을 입력하세요

답변1

이를 위해서는 정규 분포 난수를 생성하는 방법이 필요합니다. 이를 수행하는 한 가지 방법은 Box-Muller 변환을 사용하는 것입니다.

여기에 PGFPlots를 사용하는 예가 있습니다(내 답변을 기반으로 함).TikZ: 산점도와 평행 좌표를 사용하여 동일한 데이터 그리기). 숫자가 실제로 거의 정규 분포를 이루고 있음을 보여주기 위해 주변 분포를 표시했습니다.

\documentclass{article}
\usepackage{pgfplots}
% Create a function for generating inverse normally distributed numbers using the Box–Muller transform
\pgfmathdeclarefunction{invgauss}{2}{%
  \pgfmathparse{sqrt(-2*ln(#1))*cos(deg(2*pi*#2))}%
}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
    axis equal image,
    xmin=-2.5,xmax=2.5,
    ymin=-2.5, ymax=2.5,
    enlargelimits=false,
    xtick=data, 
    xticklabel=\empty,
    ytick=data,
    yticklabel=\empty,
    extra x ticks={-2,...,2},
    every extra x tick/.style={
        tick align=outside,
        xticklabel=\pgfmathprintnumber{\tick}
    },
    extra y ticks={-2,...,2},
    every extra y tick/.style={
        tick align=outside,
        yticklabel=\pgfmathprintnumber{\tick}
    }
]
\addplot [only marks, samples=100] ({invgauss(rnd,rnd)},{invgauss(rnd,rnd)});
\end{axis}
\end{tikzpicture}
\end{document}

관련 정보