我正在寻找标准正态分布的 cdf 表

我正在寻找标准正态分布的 cdf 表

我正在寻找德语版的 LaTeX 数学表,名为“标准正态分布”。Google 给出了标准正态分布,但我认为不太正确。它是这个:https://de.wikibooks.org/wiki/Tabelle_Standardnormalverteilung

有人知道该表的 LaTeX 源代码吗,这样我就不用手动输入了?

答案1

这是一个基于 LuaLaTeX 的实现。它使用 Lua 代码来计算 cdf 值,并在array具有 11 列(包括 1 个标题列)和 42 行(包括 1 个标题行)的环境中将它们制成表格。

x计算 处的 cdf (对于 的正值)的算法x基于 Abramovitz 和 Stegun 在《数学函数手册》(1964 年)中提出的近似值。有关此算法的更多信息,另请参阅累积正态分布的 Abramowitz 和 Stegun 近似。最大绝对误差可能小于7.5×10^{−8}。由于表中的数字仅显示 5 位数字,因此对于当前用例而言,近似误差可以忽略不计。


附录:如果您想使用,(逗号)作为小数点标记,则您需要在下面显示的代码中执行的操作是(a)添加说明

\usepackage[output-decimal-marker={,}]{siunitx}
\newcolumntype{T}[1]{S[table-format=#1,group-digits=false]}

在序言中 (b) 将环境规范array从更改*{11}{l}T{1.1} *{10}{T{1.5}}


enter image description here

\documentclass{article} 
\usepackage{luacode}
%% code based on algorithm of Abramovitz and Stegun (1964)
\begin{luacode}
-- x must be positive in Phi(x)
function Phi ( x )
   pdfx = 1/(math.sqrt(2*math.pi)) * math.exp ( -x*x/2 )
   t = 1 / (1+0.2316419*x)
   return ( 1 - pdfx*(0.319381530*t - 0.356563782*t^2
              + 1.781477937*t^3 - 1.821255978*t^4 + 1.330274429*t^5) )
end
-- x can be positive or negative in cdfn(x)
function cdfn ( x ) 
  if ( x==0 ) then
      return ( 0.5 )
  elseif ( x>0 ) then
      return ( Phi ( x ) )
  else
      return ( 1 - Phi ( -x ) ) 
  end
end
-- the table is generated via a set of nested for-loops
function bigloop ()
   -- first, generate the header row
   tex.sprint ( "x" )
   for v=0,9 do
      tex.sprint( "&"..v/100 )
   end
   tex.sprint ( "\\\\[0.5ex]" )
   -- next, 41 rows of calculations
   for u=0,40,1 do
      tex.sprint ( u/10 ) 
      for v=0,9 do
         tex.sprint( "&"..string.format("%.5g", cdfn(u/10+v/100)) )
      end
      tex.sprint ( "\\\\" )
   end
end
\end{luacode}

%% Just in case it's needed: A LaTeX macro to access the cdf value directly
\newcommand\cdfn[1]{\directlua{tex.sprint(cdfn(#1))}}

\usepackage[a4paper,margin=2.5cm]{geometry} % choose page parameters suitably

\begin{document} 
\[
\begin{array}{*{11}{l}}
  \directlua{bigloop()}   % call the Lua function "bigloop" to tabulate the numbers   
\end{array}
\]
\end{document}

答案2

这是一个版本(从德语维基百科复制粘贴,然后导入到http://www.tablesgenerator.com/latex_tables;希望它是正确的):

cdf

\begin{table}[]
\centering
\caption{My caption}
\label{my-label}
\begin{tabular}{lllllllllll}
z   & 0       & 0,01    & 0,02    & 0,03    & 0,04    & 0,05    & 0,06    & 0,07    & 0,08    & 0,09    \\
0   & 0,5     & 0,50399 & 0,50798 & 0,51197 & 0,51595 & 0,51994 & 0,52392 & 0,5279  & 0,53188 & 0,53586 \\
0,1 & 0,53983 & 0,5438  & 0,54776 & 0,55172 & 0,55567 & 0,55962 & 0,56356 & 0,56749 & 0,57142 & 0,57535 \\
0,2 & 0,57926 & 0,58317 & 0,58706 & 0,59095 & 0,59483 & 0,59871 & 0,60257 & 0,60642 & 0,61026 & 0,61409 \\
0,3 & 0,61791 & 0,62172 & 0,62552 & 0,6293  & 0,63307 & 0,63683 & 0,64058 & 0,64431 & 0,64803 & 0,65173 \\
0,4 & 0,65542 & 0,6591  & 0,66276 & 0,6664  & 0,67003 & 0,67364 & 0,67724 & 0,68082 & 0,68439 & 0,68793 \\
0,5 & 0,69146 & 0,69497 & 0,69847 & 0,70194 & 0,7054  & 0,70884 & 0,71226 & 0,71566 & 0,71904 & 0,7224  \\
0,6 & 0,72575 & 0,72907 & 0,73237 & 0,73565 & 0,73891 & 0,74215 & 0,74537 & 0,74857 & 0,75175 & 0,7549  \\
0,7 & 0,75804 & 0,76115 & 0,76424 & 0,7673  & 0,77035 & 0,77337 & 0,77637 & 0,77935 & 0,7823  & 0,78524 \\
0,8 & 0,78814 & 0,79103 & 0,79389 & 0,79673 & 0,79955 & 0,80234 & 0,80511 & 0,80785 & 0,81057 & 0,81327 \\
0,9 & 0,81594 & 0,81859 & 0,82121 & 0,82381 & 0,82639 & 0,82894 & 0,83147 & 0,83398 & 0,83646 & 0,83891 \\
1   & 0,84134 & 0,84375 & 0,84614 & 0,84849 & 0,85083 & 0,85314 & 0,85543 & 0,85769 & 0,85993 & 0,86214 \\
1,1 & 0,86433 & 0,8665  & 0,86864 & 0,87076 & 0,87286 & 0,87493 & 0,87698 & 0,879   & 0,881   & 0,88298 \\
1,2 & 0,88493 & 0,88686 & 0,88877 & 0,89065 & 0,89251 & 0,89435 & 0,89617 & 0,89796 & 0,89973 & 0,90147 \\
1,3 & 0,9032  & 0,9049  & 0,90658 & 0,90824 & 0,90988 & 0,91149 & 0,91309 & 0,91466 & 0,91621 & 0,91774 \\
1,4 & 0,91924 & 0,92073 & 0,9222  & 0,92364 & 0,92507 & 0,92647 & 0,92785 & 0,92922 & 0,93056 & 0,93189 \\
1,5 & 0,93319 & 0,93448 & 0,93574 & 0,93699 & 0,93822 & 0,93943 & 0,94062 & 0,94179 & 0,94295 & 0,94408 \\
1,6 & 0,9452  & 0,9463  & 0,94738 & 0,94845 & 0,9495  & 0,95053 & 0,95154 & 0,95254 & 0,95352 & 0,95449 \\
1,7 & 0,95543 & 0,95637 & 0,95728 & 0,95818 & 0,95907 & 0,95994 & 0,9608  & 0,96164 & 0,96246 & 0,96327 \\
1,8 & 0,96407 & 0,96485 & 0,96562 & 0,96638 & 0,96712 & 0,96784 & 0,96856 & 0,96926 & 0,96995 & 0,97062 \\
1,9 & 0,97128 & 0,97193 & 0,97257 & 0,9732  & 0,97381 & 0,97441 & 0,975   & 0,97558 & 0,97615 & 0,9767  \\
2   & 0,97725 & 0,97778 & 0,97831 & 0,97882 & 0,97932 & 0,97982 & 0,9803  & 0,98077 & 0,98124 & 0,98169 \\
2,1 & 0,98214 & 0,98257 & 0,983   & 0,98341 & 0,98382 & 0,98422 & 0,98461 & 0,985   & 0,98537 & 0,98574 \\
2,2 & 0,9861  & 0,98645 & 0,98679 & 0,98713 & 0,98745 & 0,98778 & 0,98809 & 0,9884  & 0,9887  & 0,98899 \\
2,3 & 0,98928 & 0,98956 & 0,98983 & 0,9901  & 0,99036 & 0,99061 & 0,99086 & 0,99111 & 0,99134 & 0,99158 \\
2,4 & 0,9918  & 0,99202 & 0,99224 & 0,99245 & 0,99266 & 0,99286 & 0,99305 & 0,99324 & 0,99343 & 0,99361 \\
2,5 & 0,99379 & 0,99396 & 0,99413 & 0,9943  & 0,99446 & 0,99461 & 0,99477 & 0,99492 & 0,99506 & 0,9952  \\
2,6 & 0,99534 & 0,99547 & 0,9956  & 0,99573 & 0,99585 & 0,99598 & 0,99609 & 0,99621 & 0,99632 & 0,99643 \\
2,7 & 0,99653 & 0,99664 & 0,99674 & 0,99683 & 0,99693 & 0,99702 & 0,99711 & 0,9972  & 0,99728 & 0,99736 \\
2,8 & 0,99744 & 0,99752 & 0,9976  & 0,99767 & 0,99774 & 0,99781 & 0,99788 & 0,99795 & 0,99801 & 0,99807 \\
2,9 & 0,99813 & 0,99819 & 0,99825 & 0,99831 & 0,99836 & 0,99841 & 0,99846 & 0,99851 & 0,99856 & 0,99861 \\
3   & 0,99865 & 0,99869 & 0,99874 & 0,99878 & 0,99882 & 0,99886 & 0,99889 & 0,99893 & 0,99896 & 0,999   \\
3,1 & 0,99903 & 0,99906 & 0,9991  & 0,99913 & 0,99916 & 0,99918 & 0,99921 & 0,99924 & 0,99926 & 0,99929 \\
3,2 & 0,99931 & 0,99934 & 0,99936 & 0,99938 & 0,9994  & 0,99942 & 0,99944 & 0,99946 & 0,99948 & 0,9995  \\
3,3 & 0,99952 & 0,99953 & 0,99955 & 0,99957 & 0,99958 & 0,9996  & 0,99961 & 0,99962 & 0,99964 & 0,99965 \\
3,4 & 0,99966 & 0,99968 & 0,99969 & 0,9997  & 0,99971 & 0,99972 & 0,99973 & 0,99974 & 0,99975 & 0,99976 \\
3,5 & 0,99977 & 0,99978 & 0,99978 & 0,99979 & 0,9998  & 0,99981 & 0,99981 & 0,99982 & 0,99983 & 0,99983 \\
3,6 & 0,99984 & 0,99985 & 0,99985 & 0,99986 & 0,99986 & 0,99987 & 0,99987 & 0,99988 & 0,99988 & 0,99989 \\
3,7 & 0,99989 & 0,9999  & 0,9999  & 0,9999  & 0,99991 & 0,99991 & 0,99992 & 0,99992 & 0,99992 & 0,99992 \\
3,8 & 0,99993 & 0,99993 & 0,99993 & 0,99994 & 0,99994 & 0,99994 & 0,99994 & 0,99995 & 0,99995 & 0,99995 \\
3,9 & 0,99995 & 0,99995 & 0,99996 & 0,99996 & 0,99996 & 0,99996 & 0,99996 & 0,99996 & 0,99997 & 0,99997 \\
4   & 0,99997 & 0,99997 & 0,99997 & 0,99997 & 0,99997 & 0,99997 & 0,99998 & 0,99998 & 0,99998 & 0,99998
\end{tabular}
\end{table}

另一个建议:看看下面的收藏https://www.york.ac.uk/depts/maths/tables/sources.htm(您寻找 CDF)。

答案3

使用以下包的简单 Sage 解决方案sagetex

\documentclass[12pt]{article}
\usepackage{kpfonts}  %Changing the default fonts
\usepackage[T1]{fontenc}
\usepackage{sagetex}
\usepackage[margin=.25in]{geometry}
\begin{document}
\pagestyle{empty}
\begin{center}
{\LARGE Gaussian Table}
\end{center}
\begin{sagesilent}
var('x')
sigma = 1
T = RealDistribution('gaussian', sigma)
output = ""
output += r"\begin{tabular}{ccccccccccc} "
output += r" z & $0$ & $1$ & $2$ & $3$ & $4$ & $5$ & $6$ & $7$ & $8$ & $9$ \\ \hline "
for i in range(0, 41):
    output += r"%3.1f & %8.5f & %8.5f & %8.5f & %8.5f & %8.5f & %8.5f & %8.5f & %8.5f & %8.5f  & %8.5f  \\ "%(.1*i,T.cum_distribution_function(.1*i), T.cum_distribution_function(.1*i+.01),T.cum_distribution_function(.1*i+.02), T.cum_distribution_function(.1*i+.03), T.cum_distribution_function(.1*i+.04),T.cum_distribution_function(.1*i+.05),T.cum_distribution_function(.1*i+.06),T.cum_distribution_function(.1*i+.07),T.cum_distribution_function(.1*i+.08),T.cum_distribution_function(.1*i+.09))
output += r"\end{tabular}"
\end{sagesilent}
\begin{center}
\sagestr{output}
\end{center}
\end{document}

输出结果如下: enter image description here

您需要在计算机上安装 Sage 才能使用sagetex软件包,或者更好的是,免费思杰云帐户。

答案4

这是一个xintexpr基于的实现。它采用信特代码既可以计算 cdf 值,又可以在tabular具有 11 列和 42 行(包括 1 个标题行)的环境中对其进行制表。

x计算 处的 cdf (对于 的正值)的算法x基于 Abramovitz 和 Stegun 在《数学函数手册》(1964 年)中提出的函数有理近似值erf(x)。我从以下公式中摘录了维基百科。 中的最大绝对误差小于。该算法以大约 16 位精度的浮点数来计算该数量。当 时erf(x),近似值毫无意义x>03×10^{-7}erfc(x) = 1 - erf(x)x)(当然,999...99 或 00...00 在该讨论中是有问题的)。从随机挑选的表格条目中,我发现与维基百科表

我之所以选择公式,是因为它只使用有理函数:事实上,将科学模块附加到xintexpr此类函数上exp还有待实现。在用户级别,已经可以使用泰勒级数或类似函数来定义此类函数,但困难的部分是实现有效的方法,并首先决定是否xintexpr应该以任意精度正确舍入计算它们(就像对sqrt函数实际执行的那样)。

以下是代码:

% -*- coding: iso-latin-1; -*-
\documentclass[a4paper]{article}

\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
% \usepackage{babel}

% \usepackage[autolanguage, np]{numprint}
\usepackage[hscale=0.85, vscale=0.85]{geometry}

\usepackage{xintexpr}

% dans le préambule les :, ;, ne sont pas encore frenchb-actifs donc ok.

% l'assignation simultanée de valeurs nécessite xint 1.2p (2017/12/05)
% au minimum

\xintdeffloatvar a_1, a_2, a_3, a_4, a_5, a_6 :=
    0.0705230784,
    0.0422820123,
    0.0092705272,
    0.0001520143,
    0.0002765672,
    0.0000430638;

\xintdeffloatfunc erfc(x) := % uniquement pour x positif
% la formule prise de
% https://en.wikipedia.org/wiki/Error_function#Approximation_with_elementary_functions
% garantit à erf(x) = 1 - erfc(x) une erreur absolue d'au plus 3e-7.
    ((((((a_6 * x + a_5) * x + a_4) * x + a_3) * x + a_2) * x + a_1) * x + 1)
    ** -16
; % fin de définition de erfc(x)

\xintdeffloatvar rac2inv := sqrt(2)/2;% on le calcule une fois pour toutes

% https://en.wikipedia.org/wiki/Standard_normal_table#Cumulative

% On va calculer Phi(z) = 1/2(1 + erf(z/sqrt(2))) = 1 - erfc(z/sqrt(2))/2
\xintdeffloatfunc Phi(z) := 1 - 0.5 * erfc(rac2inv * z);

% 0.5erfc() does not work about xint thinks 0.5e starts a number in scientific
% notation. Thus one must (currently) type 0.5*erfc() as above

\usepackage{array}
\begin{document}

% on pourrait aussi utiliser 0, 1, 2, ... pour \xintFor,
% mais \xintFor* est plus rapide et la première chose que
% fait \xintFor c'est de convertir au format pour \xintFor*
% sans les virgules

{\small
\begin{tabular}{|>{\bfseries}c|*{10}{l|}}
  \hline
  z\xintFor* #1 in {0123456789}\do
   {&\multicolumn{1}{c|}{\textbf{+0.0#1}}}% or \np{+0.0#1}
  \\\hline
\xintFor* #1 in {0123}\do {%
  \xintFor* #2 in {0123456789}\do {%
    #1.#2\xintFor* #3 in {0123456789}\do {%
         &%\np{% in case \np macro of numprint is used
           \xinttheiexpr[5] % arrondir à 5 chiffres après la virgule
              \xintfloatexpr Phi(#1.#2#3)\relax
           \relax
           %}%
         }% fin de boucle avec #3
    \\\hline
    }% fin de boucle avec #2
  }% fin de boucle avec #1
% add last row
4.0\xintFor* #3 in {0123456789}\do {%
         &%\np{% in case \np macro of numprint is used
           \xinttheiexpr[5] % arrondir à 5 chiffres après la virgule
              \xintfloatexpr Phi(4.0#3)\relax
           \relax
           %}%
         }% fin de boucle avec #3
\\\hline
\end{tabular}
}
\end{document}

并生成表格:

enter image description here

相关内容