我正在尝试寻求帮助解决一个统计问题。它并不先进,而且我非常清楚如何解决它。我只是偶然发现了 LaTeX,并对学习如何使用它产生了兴趣,而且由于我目前正在做的作业相当简单,所以我认为这是尝试学习 LaTeX 的最佳时机。作业如下:
我目前有这段代码:
\documentclass{article}
\usepackage[utf8]{inputenc}
\title{Statistikk og Risikoanalyse 1}
\author{Isak Midtvedt}
\date{22.01.2022}
\begin{document}
\maketitle
\begin{table}[h]
\centering
\begin{tabular}{l | l |}
Speed interval & Frequency\\
\hline \hline
0.45-0.90 & 2\\
0.90-1.35 & 6\\
1.35-1.80 & 11\\
1.80-2.25 & 5\\
2.25-2.70 & 6
\end{tabular}
\caption{Frequencies}
\label{tab:week1}
\end{table}
产生了这个结果;
现在最好的方法是什么,使用我已经绘制的频率表来制作直方图?有没有办法让 latex 提取数据,还是我必须手动进行?如果是这样,我该怎么做?谢谢
答案1
您遇到的第一个问题只需阅读手册并按照您想要的方式进行设置即可。关于您的其他两个问题:“Latex 是否有办法提取数据,还是我必须手动进行?如果是,我该怎么做?”答案是肯定的。一种方法是使用鼠尾草软件包可让您访问 CAS Sage,它还允许进行 Python 编程。基本统计文档是这里。
\documentclass{article}
\usepackage{sagetex,tikz,pgfplots,xcolor}
\usepackage[utf8]{inputenc}
\title{Statistikk og Risikoanalyse 1}
\author{Isak Midtvedt}
\date{22.01.2022}
\pgfplotsset{compat=1.16}
\begin{document}
\maketitle
\begin{sagesilent}
MyData = [1.28,1.36,1.24, 2.47,1.94,2.52,2.67,1.29,1.56,2.66,2.17,1.57,2.10,2.54,1.63,2.11,2.57,1.72,0.76,1.02,1.78,0.50,1.49,1.57,1.04,1.92,1.55,1.78,1.70,1.20]
bins = 5
step = .45
frequencies =[0 for i in range(0,bins)]
for i in range(0,len(MyData)):
for j in range(0,bins):
if MyData[i]<.45+(j+1)*.45 and MyData[i]>=.45+j*.45:
frequencies[j] += 1
output = r"\begin{table}[h]"
output += r"\centering"
output += r"\begin{tabular}{l | l |}"
output += r"Speed interval & Frequency\\"
output += r"\hline \hline"
for i in range(0,bins):
if i < bins-1:
output += r"%.2f-%.2f & %d\\"%(.45+i*.45, .45+(i+1)*.45, frequencies[i])
else:
output += r"%.2f-%.2f & %d"%(.45+i*.45, .45+(i+1)*.45, frequencies[i])
output += r"\end{tabular}"
output += r"\caption{Frequencies}"
output += r"\label{tab:week1}"
output += r"\end{table}"
output += r"\begin{center}"
output += r"\begin{tikzpicture}"
output += r"\begin{axis}[title = My Histogram,ybar interval,ymin=0, ymax=12,minor y tick num = 1,area style]"
output += r"\addplot coordinates {"
for i in range(0,bins):
output += r"(%.2f,%d)"%(.45+i*step,frequencies[i])
output += r"(%.2f,%d)"%(.45+bins*step,0)
output += r"};"
output += r"\end{axis}"
output += r"\end{tikzpicture}"
output += r"\end{center}"
\end{sagesilent}
\sagestr{output}
\end{document}
根据MyData
您想要创建的五个箱体,Sage 会创建频率表,然后创建直方图。这样可以减少出错的可能性,尤其是在数据量增加的情况下。
Sage 不是 Latex 发行版的一部分。访问它的最简单方法是通过免费的可钙帐户。也可以将程序下载到您的计算机;但是,这可能会有问题,具体取决于您的计算机和计算机专业知识。如果您的生活中有很多数学/统计知识,Sage 可以sagetex
解决很多问题。
答案2
\documentclass[border=5pt]{standalone}
\usepackage{statistics}
\begin{document}
\StatsRangeData \tips = { 1.28, 1.36, 1.24, 2.47, 1.94, 2.52, 2.67, 1.29, 1.56, 2.66, 2.17, 1.57, 2.10, 2.54, 1.63, 2.11, 2.57, 1.72, 0.76, 1.02, 1.78, 0.50, 1.49, 1.57, 1.04, 1.92, 1.55, 1.78, 1.70, 1.20 }
(\IN[0.45;0.90;[, \IN[0.90;1.35;[, \IN[1.35;1.80;[, \IN[1.80;2.25;[, \IN[2.25;2.70;])
%\detokenize\expandafter{\tips}
\statisticssetup{table/values=Classes}
\statisticssetup[table]{counts=Counts}
\statisticssetup[table]{frequencies=Frequencies}
\StatsTable \tips
\statisticssetup{graph/values=Classes}
\statisticssetup[graph]{counts=Counts}
\StatsGraph \tips[x/axis = {ticks={major={at={0.45, 0.9, 1.35,1.80,2.25,2.7}}}, grid = none}, y/axis = {grid = none},axissystem={end labels, clean}]
\end{document}