0

I need to graph the cdf of a gamma distribution in Latex. I was able to graph that for the Normal distribution using erf function explained here: How to Draw CDF of normal distribution in Tikz (third comment)

How do I do that for gamma?

Stefan Pinnow
  • 29,535
Vika
  • 405

2 Answers2

0

You can use the sagetex package, the documentation is located here on CTAN, for this sort of problem. This gives you access to a computer algebra system, Sage, which is like Mathematica (except it's free). You also get the Python programming language as a bonus. Looking at the Wikipedia page for the gamma distribution here I used the second form (involving alpha and beta rather than k and theta) in my code to get my function f = (beta^(alpha)/gamma(alpha))*x^(alpha-1)*e^(-beta*x) and I put in alpha = 7.5 beta = 3.8 for illustrative purposes. Sage calculates the CDF via N = lambda a: integrate(f,x,0,a). The values determined by Sage are used by pgfplots in graphing.

\documentclass{article}
\usepackage{sagetex}
\usepackage[usenames,dvipsnames]{xcolor}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\begin{document}
\begin{sagesilent}
t = var('t')
LowerY = 0
UpperY = 1
LowerX = 0
UpperX = 10
step = .1

var("x, alpha, beta", domain="positive") assume(alpha,"noninteger") alpha = 7.5 beta = 3.8 f = (beta^(alpha)/gamma(alpha))x^(alpha-1)e^(-beta*x) N = lambda a: integrate(f,x,0,a)

x_coords = [t for t in srange(LowerX,UpperX,step)] y_coords = [N(t).n(digits=6) for t in srange(LowerX,UpperX,step)]

output = r"" output += r"\begin{tikzpicture}[scale=.7]" output += r"\begin{axis}[xmin=%f,xmax=%f,ymin= %f,ymax=%f]"%(LowerX,UpperX,LowerY, UpperY) output += r"\addplot[thin, blue, unbounded coords=jump] coordinates {" for i in range(0,len(x_coords)-1): if (y_coords[i])<LowerY or (y_coords[i])>UpperY: output += r"(%f , inf) "%(x_coords[i]) else: output += r"(%f , %f) "%(x_coords[i],y_coords[i]) output += r"};" output += r"\end{axis}" output += r"\end{tikzpicture}" \end{sagesilent} \begin{center} \sagestr{output} \end{center} \end{document}

The output, running in Cocalc, is shown below: enter image description here

Sage is not part of LaTeX so it needs to be downloaded to your computer or you can access it with a free Cocalc account. The free Cocalc account is by far the easiest way to get started.

DJP
  • 12,451
0
  1. Look for an online gamma function generator such as here or calculate it using your favorite software package (Matlab, Python, ...).
  2. Generate a text file (table) with the x and y data.
  3. Use pgfplots to plot the table.
  4. Since it seems that you are not very familiar with this site, please have a look at this ("The Tour") and this ("MWE").

enter image description here

\documentclass{article}

\begin{filecontents}{data1.txt} 0 0 0.1 0.00452418709 0.2 0.01637461506 0.3 0.03333681993 0.4 0.05362560368 0.5 0.07581633246 0.6 0.0987860945 0.7 0.1216633994 0.8 0.1437852685 0.9 0.1646607122 1 0.1839397206 1.1 0.2013870056 1.2 0.2168598326 1.3 0.2302893651 1.4 0.2416650247 1.5 0.2510214302 1.6 0.258427543 1.7 0.2639776923 1.8 0.2677841989 1.9 0.2699713577 2 0.2706705665 2.1 0.2700164243 2.2 0.2681436432 2.3 0.2651846416 2.4 0.2612677055 2.5 0.2565156207 2.6 0.2510446944 2.7 0.2449640939 2.8 0.2383754455 2.9 0.2313726403 3 0.2240418077 3.1 0.2164614175 3.2 0.2087024844 3.3 0.2008288465 3.4 0.1928975004 3.5 0.1849589735 3.6 0.1770577215 3.7 0.1692325387 3.8 0.1615169728 3.9 0.1539397365 4 0.1465251111 4.1 0.1392933368 4.2 0.1322609876 4.3 0.1254413281 4.4 0.1188446503 4.5 0.11247859 4.6 0.1063484222 4.7 0.1004573356 4.8 0.094806686 4.9 0.08939622977 5 0.08422433749 5.1 0.07928818908 5.2 0.07458395097 5.3 0.07010693642 5.4 0.06585175014 5.5 0.06181241801 5.6 0.05798250307 5.7 0.05435520886 5.8 0.05092347082 5.9 0.04768003707 6 0.04461753918 6.1 0.04172855392 6.2 0.03900565683 6.3 0.0364414683 6.4 0.03402869295 6.5 0.03176015295 6.6 0.02962881586 6.7 0.02762781766 6.8 0.02575048142 6.9 0.02399033214 7 0.02234110816 7.1 0.02079676959 7.2 0.01935150415 7.3 0.01799973067 7.4 0.0167361006 7.5 0.01555549791 7.6 0.0144530374 7.7 0.01342406184 7.8 0.01246413806 7.9 0.01156905218 8 0.01073480409 8.1 0.009957601425 8.2 0.009233853022 8.3 0.00856016211 8.4 0.007933319197 8.5 0.007350294831 8.6 0.00680823225 8.7 0.006304440017 8.8 0.005836384668 8.9 0.005401683433 9 0.004998097066 9.1 0.004623522801 9.2 0.004275987486 9.3 0.00395364089 9.4 0.003654749216 9.5 0.003377688824 9.6 0.003120940177 9.7 0.002883082025 9.8 0.002662785805 9.9 0.002458810294 10 0.002269996488 \end{filecontents}

\begin{filecontents}{data2.txt} x gamma distribution 0 0 0.1 1.546530703E-4 0.2 0.001148481245 0.3 0.003599493183 0.4 0.007926331867 0.5 0.01438767797 0.6 0.02311528775 0.7 0.03414158413 0.8 0.04742259607 0.9 0.0628569343 1 0.08030139707 1.1 0.0995837186 1.2 0.1205129012 1.3 0.1428875109 1.4 0.1665022619 1.5 0.1911531695 1.6 0.2166415102 1.7 0.2427767928 1.8 0.2693789141 1.9 0.2962796466 2 0.3233235838 2.1 0.3503686481 2.2 0.37728625 2.3 0.4039611741 2.4 0.4302912533 2.5 0.4561868841 2.6 0.4815704241 2.7 0.5063755089 2.8 0.5305463165 2.9 0.5540368014 3 0.5768099189 3.1 0.5988368527 3.2 0.6200962589 3.3 0.6405735337 3.4 0.6602601118 3.5 0.6791528011 3.6 0.6972531553 3.7 0.7145668869 3.8 0.7311033223 3.9 0.7468748974 4 0.7618966944 4.1 0.7761860187 4.2 0.789762013 4.3 0.8026453092 4.4 0.8148577143 4.5 0.8264219291 4.6 0.8373612977 4.7 0.8476995849 4.8 0.8574607811 4.9 0.8666689301 5 0.8753479805 5.1 0.8835216569 5.2 0.8912133496 5.3 0.898446022 5.4 0.9052421318 5.5 0.9116235676 5.6 0.9176115964 5.7 0.9232268226 5.8 0.9284891569 5.9 0.9334177937 6 0.9380311956 6.1 0.9423470853 6.2 0.9463824426 6.3 0.9501535068 6.4 0.9536757832 6.5 0.9569640531 6.6 0.9600323871 6.7 0.9628941607 6.8 0.9655620724 6.9 0.968048163 7 0.9703638361 7.1 0.9725198805 7.2 0.9745264922 7.3 0.9763932975 7.4 0.9781293762 7.5 0.9797432849 7.6 0.9812430803 7.7 0.9826363417 7.8 0.9839301941 7.9 0.9851313303 8 0.9862460323 8.1 0.9872801924 8.2 0.9882393341 8.3 0.9891286314 8.4 0.989952928 8.5 0.9907167557 8.6 0.9914243521 8.7 0.9920796776 8.8 0.9926864312 8.9 0.9932480662 9 0.9937678049 9.1 0.9942486525 9.2 0.9946934106 9.3 0.9951046895 9.4 0.9954849205 9.5 0.995836367 9.6 0.9961611352 9.7 0.9964611846 9.8 0.9967383369 9.9 0.9969942857 10 0.9972306043 \end{filecontents}

\usepackage{pgfplots}

\begin{document}

\begin{figure} \centering \begin{tikzpicture} \begin{axis} \addplot table [x index=0, y index=1]{data1.txt}; % use \addplot[mark=none] table ... if you do not like the "dots" \end{axis} \end{tikzpicture} \caption{Gamma Function} \end{figure}

\begin{figure} \centering \begin{tikzpicture} \begin{axis} \addplot table [x index=0, y index=1]{data2.txt}; \end{axis} \end{tikzpicture} \caption{CDF of Gamma Function} \end{figure}

\end{document}

enter image description here