From mboxrd@z Thu Jan 1 00:00:00 1970 From: tsd@tsdye.com (Thomas S. Dye) Subject: Re: Efficiency of Org v. LaTeX v. Word ---LOOK AT THE DATA! Date: Mon, 29 Dec 2014 09:47:17 -1000 Message-ID: References: <54A078C8.90501@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:36281) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Y5gI0-0001zI-8a for emacs-orgmode@gnu.org; Mon, 29 Dec 2014 14:47:42 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Y5gHw-0007Vf-3r for emacs-orgmode@gnu.org; Mon, 29 Dec 2014 14:47:40 -0500 Received: from gproxy9-pub.mail.unifiedlayer.com ([69.89.20.122]:35874) by eggs.gnu.org with smtp (Exim 4.71) (envelope-from ) id 1Y5gHv-0007Uu-Pj for emacs-orgmode@gnu.org; Mon, 29 Dec 2014 14:47:36 -0500 In-Reply-To: <54A078C8.90501@gmail.com> (Christophe Pouzat's message of "Sun, 28 Dec 2014 22:40:24 +0100") List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: Christophe Pouzat Cc: emacs-orgmode@gnu.org Aloha Christophe, I think you make a good case for the authors' poor choice of metrics. These aren't well defined in the paper, so it is enlightening to see your graphics and learn how their metrics were ineptly designed. I hope you'll make your findings known to the PLOS audience. This looks to me like a clear case of peer review failure (see http://www.sciencemag.org/content/342/6154/60.summary for an eye-opening look at what's become of peer review.) All the best, Tom Christophe Pouzat writes: > Hi all, > > After seeing Ken's mail: > > Le 26/12/2014 23:47, Ken Mankoff a =C3=A9crit : >> People here might be interested in a publication from [2014-12-19 Fri] >> available at http://dx.doi.org/10.1371/journal.pone.0115069 >> >> Title: An Efficiency Comparison of Document Preparation Systems Used >> in Academic Research and Development >> >> Summary: Word users are more efficient and have less errors than even >> experienced LaTeX users. >> >> Someone here should repeat experiment and add Org into the mix, perhaps >> Org -> ODT and/or Org -> LaTeX and see if it helps or hurts. I assume >> Org would trump LaTeX, but would Org -> ODT or Org -> X -> DOCX (via >> pandoc) beat straight Word? >> >> -k. >> >> > and some of replies it triggered on the list, I went to check the paper.= =20 > As many of you guys I found some "results" puzzling in particular: > 1. the use of bar graphs when the data would better be displayed=20 > directly (that qualifies immediately the paper as "low quality" for me). > 2. the larger error bars observed for LaTeX when compared to Word. > 3. the systematic inverse relationship between the blue and pink bars=20 > heights. > > So I went to figshare to download the data and looked at them. A quick=20 > and dirty "analysis" is attached to this mail in PDF format (generated=20 > with org, of course, and this awful software called LaTeX!) and the=20 > source org file can be found at the bottom of this mail. I used R to do=20 > the figures (and I'm sure the authors of the paper will then criticize=20 > me for not using Excel with which everyone knows errors are generated=20 > much more efficiently). > > I managed to understand the inverse relationship in point 3 above: the=20 > authors considered 3 types of mistakes / errors: > 1. Formatting and typos error. > 2. Orthographic and grammatical errors. > 3. Missing words and signs. > Clearly, following the mail of Tom (Dye) on the list and on the Plos web= =20 > site, I would argue that formatting errors in LaTeX are bona fide bugs.=20 > But the point I want to make is that the third source accounts for 80%=20 > of the total errors (what's shown in pink bars in the paper) and clearly= =20 > the authors counted what the subjects did not have time to type as an=20 > error of this type. Said differently, the blue and pink bars are showing= =20 > systematically the same thing by construction! The second type of error=20 > in not a LaTeX issue (and in fact does not differ significantly from the= =20 > Word case) but an "environment" issue (what spelling corrector had the=20 > LaTeX users access to?). > > There is another strange thing in the table copy case. For both the=20 > expert and novice group in LaTeX, there is one among 10 subjects that=20 > did produce 0% of the table but still manage to produce 22 typographic=20 > errors! > > The overall worst performance of LaTeX users remains to be explained and= =20 > as mentioned in on the mails in the list, that does not make sense at=20 > least for the continuous text exercise. The method section of the paper=20 > is too vague but my guess is that some LaTeX users did attempt to=20 > reproduce the exact layout of the text they had to copy, something LaTeX= =20 > is definitely not design to provide quickly. > > One more point: how many of you guys could specify their total number of= =20 > hours of experience with LaTeX (or any other software you are currently=20 > using)? That what the subjects of this study had to specify... > > Let me know what you think, > > Christophe > > My org buffer: > > #+TITLE: An Efficiency Comparison of Document Preparation Systems Used=20 > in Academic Research and Development: A Re-analysis. > #+DATE: <2014-12-28 dim.> > #+AUTHOR: Christophe Pouzat > #+EMAIL: christophe.pouzat@gmail.com > #+OPTIONS: ':nil *:t -:t ::t <:t H:3 \n:nil ^:t arch:headline > #+OPTIONS: author:t c:nil creator:comment d:(not "LOGBOOK") date:t > #+OPTIONS: e:t email:nil f:t inline:t num:t p:nil pri:nil stat:t > #+OPTIONS: tags:t tasks:t tex:t timestamp:t toc:nil todo:t |:t > #+CREATOR: Emacs 24.4.1 (Org mode 8.2.10) > #+DESCRIPTION: > #+EXCLUDE_TAGS: noexport > #+KEYWORDS: > #+LANGUAGE: en > #+SELECT_TAGS: export > #+LaTeX_HEADER: \usepackage{alltt} > #+LaTeX_HEADER: \usepackage[usenames,dvipsnames]{xcolor} > #+LaTeX_HEADER: \renewenvironment{verbatim}{\begin{alltt} \scriptsize=20 > \color{Bittersweet} \vspace{0.2cm} }{\vspace{0.2cm} \end{alltt}=20 > \normalsize \color{black}} > #+LaTeX_HEADER: \definecolor{lightcolor}{gray}{.55} > #+LaTeX_HEADER: \definecolor{shadecolor}{gray}{.85} > #+LaTeX_HEADER: \usepackage{minted} > #+LaTeX_HEADER: \hypersetup{colorlinks=3Dtrue} > > #+NAME: org-latex-set-up > #+BEGIN_SRC emacs-lisp :results silent :exports none > (setq org-latex-listings 'minted) > (setq org-latex-minted-options > '(("bgcolor" "shadecolor") > ("fontsize" "\\scriptsize"))) > (setq org-latex-pdf-process > '("pdflatex -shell-escape -interaction nonstopmode=20 > -output-directory %o %f" > "biber %b" > "pdflatex -shell-escape -interaction nonstopmode -output-directory=20 > %o %f" > "pdflatex -shell-escape -interaction nonstopmode -output-directory=20 > %o %f")) > #+END_SRC > > * Introduction > This is a re-analysis of the data presented in=20 > [[http://dx.doi.org/10.1371/journal.pone.0115069][An Efficiency=20 > Comparison of Document Preparation Systems Used in Academic Research and= =20 > Development]]. My "interest" in this paper was triggered by a discussion= =20 > on the [[http://article.gmane.org/gmane.emacs.orgmode/93655][emacs org=20 > mode mailing list]]. Ignoring the "message" of the paper, what stroke me= =20 > was the systematic use of bar graphs: a way of displaying data that=20 > *should never be used* since when many observations are considered, a=20 > box plot is going to do a much better job and when, like in the present=20 > paper, few (10 in each of the 4 categories) observations are available,=20 > a direct display or even a simple table is going to do a *much better*=20 > job. Since it turns out that the data are available both on the Plos web= =20 > site and on=20 > [[http://figshare.com/articles/_An_Efficiency_Comparison_of_Document_Prep= aration_Systems_Used_in_Academic_Research_and_Development_/1275631][figshar= e]],=20 > I decided to re-analyze them. > > * Getting the data, etc. > > We get the data with: > > #+BEGIN_SRC sh > wget http://files.figshare.com/1849394/S1_Materials.xlsx > #+END_SRC > > #+RESULTS: > Using for instance [[http://dag.wiee.rs/home-made/unoconv/][unoconv]],=20 > we can convert the =3DExcel=3D file into a friendlier =3Dcsv=3D file: > > #+BEGIN_SRC sh > unoconv -f csv S1_Materials.xlsx > #+END_SRC > > #+RESULTS: > We then get the data with =3DR=3D =3Dread.csv=3D function: > > #+NAME: data-table > #+BEGIN_SRC R :session *R* :results silent > efficiency <- read.csv("S1_Materials.csv",header=3DTRUE,dec=3D",") > #+END_SRC > The description of this table is obtained with: > > #+BEGIN_SRC sh :exports both :results output > wget http://files.figshare.com/1849395/S2_Materials.txt > cat "S2_Materials.txt" > #+END_SRC > > * Making some figures > We can now make a figure out of the same data as figures 4, 5 and 6 of=20 > the paper but showing the actual data. We start with the "continuous=20 > text" exercise. We represent, in each of the four categories, each of=20 > the 10 individuals by a number between 0 and 9. Some horizontal jitter=20 > has been added to avoid overlaps. Category 1 corresponds to expert=20 > =3DWord=3D users; 2 to novice =3DWord=3D users; 3 to expert \LaTeX{} user= s; 4 to=20 > novice \LaTeX{} users: > > #+HEADER: :file continuous.png :width 1000 :height 1000 > #+BEGIN_SRC R :session *R* :exports both :results output graphics > layout(matrix(1:4,nc=3D2,byrow=3DTRUE)) > par(cex=3D2) > plot(c(1,4),c(0,100),type=3D"n",xlim=3Dc(0.5,4.5),ylim=3Dc(0,100), > xlab=3D"User category",ylab=3D"",main=3D"Fraction of text") > with(efficiency, > sapply(1:4, > function(k) points(runif(10,k-0.2,k+0.2), > PROZENT1[Kenntnisse=3D=3Dk], > pch =3D paste(0:9)))) > > with(efficiency, > plot(c(1,4),c(0,100),type=3D"n", > xlim=3Dc(0.5,4.5),ylim=3Drange(FEHLERSFT),xlab=3D"User categor= y", > ylab=3D"",main=3D"Formatting errors and typos")) > with(efficiency, > sapply(1:4, > function(k) points(runif(10,k-0.2,k+0.2), > FEHLERSFT[Kenntnisse=3D=3Dk], > pch =3D paste(0:9)))) > > with(efficiency, > plot(c(1,4),c(0,100),type=3D"n",xlim=3Dc(0.5,4.5), > ylim=3Drange(FEHLEROFT),xlab=3D"User category",ylab=3D"", > main=3D"Orthographic and grammatical mistakes")) > with(efficiency, > sapply(1:4, > function(k) points(runif(10,k-0.2,k+0.2), > FEHLEROFT[Kenntnisse=3D=3Dk], > pch =3D paste(0:9)))) > > with(efficiency, > plot(c(1,4),c(0,100),type=3D"n",xlim=3Dc(0.5,4.5),ylim=3Drange(FEHLENDFT), > xlab=3D"User category",ylab=3D"",main=3D"Missing words and sig= ns")) > with(efficiency, > sapply(1:4, > function(k) points(runif(10,k-0.2,k+0.2), > FEHLENDFT[Kenntnisse=3D=3Dk], > pch =3D paste(0:9)))) > #+END_SRC > > > Notice that the number of "missing words and signs" exactly mirrors the=20 > fraction of written text. We will see that this observation holds for=20 > the two following exercises. This "missing words and signs" is always=20 > roughly ten times as large as the two other sources of mistakes. This=20 > explains the inverse relationship between the blue and pink bars on each= =20 > of the 3 figures. > > Let's keep going with the "table exercise": > > #+HEADER: :file table.png :width 1000 :height 1000 > #+BEGIN_SRC R :session *R* :exports both :results output graphics > layout(matrix(1:4,nc=3D2,byrow=3DTRUE)) > par(cex=3D2) > plot(c(1,4),c(0,100),type=3D"n",xlim=3Dc(0.5,4.5),ylim=3Dc(0,100), > xlab=3D"User category",ylab=3D"",main=3D"Fraction of text") > with(efficiency,sapply(1:4, > function(k) points(runif(10,k-0.2,k+0.2), > PROZENT2[Kenntnisse=3D=3Dk], > pch =3D paste(0:9)))) > > with(efficiency,plot(c(1,4),c(0,100),type=3D"n",xlim=3Dc(0.5,4.5), > ylim=3Drange(FEHLERST),xlab=3D"User category", > ylab=3D"",main=3D"Formatting errors and typos")) > with(efficiency,sapply(1:4, > function(k) points(runif(10,k-0.2,k+0.2), > FEHLERST[Kenntnisse=3D=3Dk], > pch =3D paste(0:9)))) > > with(efficiency,plot(c(1,4),c(0,100),type=3D"n",xlim=3Dc(0.5,4.5), > ylim=3Drange(FEHLEROT),xlab=3D"User category", > ylab=3D"",main=3D"Orthographic and grammatical mist= akes")) > with(efficiency,sapply(1:4, > function(k) points(runif(10,k-0.2,k+0.2), > FEHLEROT[Kenntnisse=3D=3Dk], > pch =3D paste(0:9)))) > > with(efficiency,plot(c(1,4),c(0,100),type=3D"n",xlim=3Dc(0.5,4.5), > ylim=3Drange(FEHLENDT),xlab=3D"User category",ylab= =3D"", > main=3D"Missing words and signs")) > with(efficiency,sapply(1:4, > function(k) points(runif(10,k-0.2,k+0.2), > FEHLENDT[Kenntnisse=3D=3Dk], > pch =3D paste(0:9)))) > #+END_SRC > > We also see a strange thing here: in each of the expert \LaTeX{} and the= =20 > novice \LaTeX{} users we have one individual who did not right anything=20 > but still manage to produce 22 "formatting errors and typos" (!) but=20 > luckily no orthographic or grammatical error... > > #+BEGIN_SRC R :session *R* :exports both > with(efficiency,cbind(c(PROZENT2[Kenntnisse=3D=3D3][10], > FEHLERST[Kenntnisse=3D=3D3][10], > FEHLEROT[Kenntnisse=3D=3D3][10], > FEHLENDT[Kenntnisse=3D=3D3][10]), > c(PROZENT2[Kenntnisse=3D=3D4][7], > FEHLERST[Kenntnisse=3D=3D4][7], > FEHLEROT[Kenntnisse=3D=3D4][7], > FEHLENDT[Kenntnisse=3D=3D4][7]))) > #+END_SRC > > > Now for the "equations" exercise: > > #+HEADER: :file equation.png :width 1000 :height 1000 > #+BEGIN_SRC R :session *R* :exports both :results output graphics > layout(matrix(1:4,nc=3D2,byrow=3DTRUE)) > par(cex=3D2) > plot(c(1,4),c(0,100),type=3D"n",xlim=3Dc(0.5,4.5),ylim=3Dc(0,100), > xlab=3D"User category",ylab=3D"",main=3D"Fraction of text") > with(efficiency, > sapply(1:4, > function(k) points(runif(10,k-0.2,k+0.2), > PROZENT3[Kenntnisse=3D=3Dk], > pch =3D paste(0:9)))) > > with(efficiency, > plot(c(1,4),c(0,100),type=3D"n",xlim=3Dc(0.5,4.5), > ylim=3Drange(FEHLERSFOR),xlab=3D"User category",ylab=3D"", > main=3D"Formatting errors and typos")) > with(efficiency, > sapply(1:4, > function(k) points(runif(10,k-0.2,k+0.2), > FEHLERSFOR[Kenntnisse=3D=3Dk], > pch =3D paste(0:9)))) > > with(efficiency, > plot(c(1,4),c(0,100),type=3D"n",xlim=3Dc(0.5,4.5),ylim=3Drange(FEHLEROFOR= ), > xlab=3D"User category",ylab=3D"", > main=3D"Orthographic and grammatical mistakes")) > with(efficiency, > sapply(1:4, > function(k) points(runif(10,k-0.2,k+0.2), > FEHLEROFOR[Kenntnisse=3D=3Dk], > pch =3D paste(0:9)))) > > with(efficiency, > plot(c(1,4),c(0,100),type=3D"n",xlim=3Dc(0.5,4.5), > ylim=3Drange(FEHLENDFOR),xlab=3D"User category",ylab=3D"", > main=3D"Missing words and signs")) > with(efficiency, > sapply(1:4, > function(k) points(runif(10,k-0.2,k+0.2), > FEHLENDFOR[Kenntnisse=3D=3Dk], > pch =3D paste(0:9)))) > #+END_SRC --=20 Thomas S. Dye http://www.tsdye.com