# Which statistical software is suitable for teaching an undergraduate introductory course of statistics in social sciences?

I am looking for a statistical software package which I can use in an introductory course of statistics for a social science study programme. The students have no prior knowledge of statistics and no experience with programming languages either. The goal is to introduce them to basic statistical concepts (as means, variance, sum of squares, p-values, ... and finally linear regression) and to enable them to conduct basic analyses on their own using example datasets. The course should be about learning concepts by doing statistics rather than memorizing formulas (although I think formulas are important).

Therefore, I am looking for an alternative to the usual syntax (as normal R) or point-and-click (as SPSS or Rcmdr) driven software. The software should be easily learnable and it should have a clear graphical user interface which visualizes datasets and offers the standard graphs and tables. The best would be if it visualized all different steps of an analysis (e.g. reading & manipulating data, computation of descriptive measures, making descriptive tables & graphs, computation of inferential measures, plotting of inferential graphs, export to a report).

Do you have suggestions of (open-source or free) statistical software which is suited for learning and first practising statistics?

EDIT
Thanks for your suggestions. I have looked into gretl, and two other programms I have found during my own online enquiry: RapidMiner and Statistical Lab.[1]
I have found that gretl's interface and output is more clear and focused than e.g. Rcmdr, SPSS or Stata. Therefore, it is a well qualified tool for starting teaching statistics from my point of view.
However, the flowchart GUI's of RapidMiner and Statistical Lab impressed me as they visualize the single steps of a statistical analysis (starting with loading data). I think this might be helpful to many students who struggle with the usual focus on mathematical explanations. Of course, RapidMiner seems to me too overloaded with functions, menus and buttons for beginners whereas the Statistical Lab is much more focused. The big plus of the Statistical Lab is the console-like "R-Calculator" with a "R-code Wizard" which assists in producing real R syntax as the Statistical Lab relies on R for its computations.
Finally, I decided to start with the Statistical Lab in the first semester while introducing the basic concepts and switch to RStudio (and Rcmdr) in the second semester.

[1]: Gnumeric, SciPy, Scilab, GNU Octave and alike seem to me less directed to social sciences.

• @Matthias: I think if your students are coming/aiming from/for a social sciences field, teaching them R as a first step in Statistics is an overkill. Most of them will have problems with the concept of console, commands, syntax etc. and you'll spend more time going through "programming concepts" (what is 'function', 'loop' etc.) than "statistics". I base this on prior experience, when I did tutorials for a Stats 101 in a Soc.Science department; people missed the point of the lectures cause they focused more in getting R to work for them than actually exploring their data. Apr 10, 2013 at 15:57
• @user11852: You may be right but it's sad that high schools send students out with no programming exposure at all. Or universities that allow this gap. There ought to be no student coming to a university class that doesn't know what a loop or function is. Delaying exposure just pushes the problem elsewhere. Apr 11, 2013 at 19:04
• @user11852: The other less palatable option might be for Satistics departments to insist that "Stats 101 for Social Sciences" classes have a prerequisite of some programming experience or a remedial class on programming. These days when almost all subjects are so heavily computation biased there really is no reason why Programming-101 shouldn't be the very first class everyone takes. Apr 11, 2013 at 19:51
• For what it's worth, I have used R successfully in my introductory stats course for political science. I used RStudio. I also had weekly "labs" where I would allow students to work together on small assignments, while I went around and answered questions. With some well-commented example code, the students did well and hardly complained at all. They actually complained a lot less about R than they did the previous semester when I used Stata. Because Stata isn't free, students had to come in for lab hours to do their work -- they hated it. Apr 30, 2013 at 21:22
• I think that R in conjunction with RStudio can be an excellent approach. It also sets the stage for reproducible research practice, unlike menu systems. I would recommend giving out several code templates that the students can load into RStudio from the web (RStudio makes this easy) and let the students do the work of changing variable names and statistical models to what is needed for the problem at hand. May 3, 2013 at 18:46

Maybe Gretl? http://gretl.sourceforge.net/

It is free and used at our University for undergraduate statistics.

• +1. Excellent suggestion. I have always found Gretl's GUI intuitive and to the point and the feedback it provides accurate and without too much frills that would put off some less "techy" students. Plus it is free, well-documented and has an R console if someone if incline to see something a bit "deeper". Apr 10, 2013 at 15:59

I would avoid most of the "famous" stuff, MatLab, Maple, Mathematica, JMP, SAS, or Minitab, because when your students graduate they have to pay thousands of dollars per year to use it professionally. Each company tends to have its particular favorite tool, and if you teach them a tool that their company won't pay for then their skill-set is wasted. I also don't like the proprietary libraries - they train users to push buttons and if the user wants to go somewhere else (JMP or whatever) there is no carry-over of learning.

Python inclding SciPy/NumPy is pretty good. It is open source and well supported. It has a learnable/easy grammar. It is still interpreted so its not screaming fast, but if they don't know any scripting or spreadsheeting then it is much faster than they would ever need. PythonXY is good version, has good libs and support. I also like that GUI programming is possible through it. Building standalone applications in windows is a little challenging but likely waaaay above the level of your students. (edit) Sage and Cython substantially improve the value proposition of Python. The interface, and usability are substantially improved. A compiled code that is 1000x faster than a pretty good interpreted code sounds great (or amazing) to me. EDIT: I have had some fun using the Anaconda (aka conda) distributions, and they are also very straightforward to use.

I am not a huge fan of Perl. It is a little outdated. It is about parsing and processing text more than math/science. Don't get me wrong, it can do math/science, but if you know VBA then MSWord can do math/science. Being able to isn't the same has having a particular job as your primary focus.

I like R, even though you don't, because it is aggressively being developed by qualified PhD's in math/stats. This means that even though the grammar might be klugy, it is going to have libraries that are up to date, and proven error free. (In general)

Excel is not a bad start. Once you know one spreadsheet it makes using any other easier. In a business setting nearly every company has MicroSloth office so Excel isn't a bad idea. I don't like their scripting, but that is just preference, I can still use it. It costs about 150 dollars US compared to 5000 dollars US for some of the other softwares so its entry-cost for normal folks is more reasonable.

JMP script language is alien. It does not translate to other (nonSAS) software. Stay away from it. The only redeemable feature of the language is that it can (in some limited sense) run "R" code. If you are coding in "R" just use "R" and "RStudio".

I have not used MathCAD so I cannot speak to its relevance. I think it is more symbolic, less about importing external data. It is cheaper, so far. It is not free and open. Facility at it doesn't translate to facility in another language. (EDIT) Also in this category is EES, which I am similarly not impressed with outside of a very narrow window of use.

EDIT: I have been impressed a little by LabVIEW. It is simple enough to use that a few hours can get someone capable. It runs really fast, like literally 1000x faster than MatLab for literally the exact same (MathScript) code. If you have some heavy-lifting, it is worth a little consideration. It does cost money, but something in the neighborhood of 1/5 of conventional big-iron.

Best of luck

EDIT: I would not use Statistical LAboratory because even when you select "english" for language it comes out in German, and it does not uninstall on windows 7. Both administrative weaknesses make it a no-go for me. I can't operate it, and when I tried to remove it that failed.

By trial and error I discovered the menu setting to make it display in English. It appears to be a relatively simple (and therefore useful and a consistent) interface into some R libraries for data processing and display. I will have to look more into it, so at this point 'the jury is still out.'

EDIT more:

->Here<- is a fun link to a whole other discussion about tools and workbenches.

• There's also RPy rpy.sourceforge.net, R as a library for Python, so you get the up-to-date, proven-error-free aspects of R with the syntactic simplicity of Python. Apr 10, 2013 at 20:09
• "they train users to push buttons and if the user wants to go somewhere else (JMP or whatever) there is no carry-over of learning." SAS, a proprietary program, doesn't particularly train well for "pushing buttons", and having trouble carrying over between different languages is hardly a feature of proprietary software alone. Heck, I was more at home going from SysStat to JMP than I was from Python to R. May 18, 2013 at 5:16
• @Epigrad - I watch it turn engineers brains off all the time. Dozens and dozens of folks. I am glad that you found utility for it, but I strongly expect that you are an outlier and the general trend of harm is not substantially changed by your experience. May 18, 2013 at 22:40
• @EngrStudent: Thank you for your effort to try Statistical Laboratory! The menu setting for English language is indeed non-intuitive, but after having it set once I have not encountered more issue with language. Unfortunately, I cannot get the "R-Graph Wizard" to work, though the normal R-Graph works fine if I put in some R code. Therefore, I will give my students some example code snippets to produce basic graphics. Maybe I switch earlier to RStudio... May 21, 2013 at 15:51

### You can use R without making it too complicated

Academic work using data analysis in the social sciences is sometimes programmed in R, and it is useful for students to have an exposure to this language during their undergraduate degree. This language is free and it is widely used in the professions, so it is helpful for students to begin learning it early. My view is that it it best to expose students to the language they will be using as early as possible, rather than peppering them with minor exposures to less-adaptive languages. While this might take some effort in your own course, it will be of benefit to later instructors in the degree program, who can then presume some basic familiarity with the language in later courses.

Now, the main challenge in doing a course with R is that there is a lot to learn in the long-run, and you want to give a simple presentation that avoids having to teach too much of the initial structure and syntax. For an introductory course you should set narrow and feasible goals in terms of coverage, and cover the minimum number of statistical programming topics required to implement the data analysis in your course. To simplify your teaching you can give students a cut-down version of the analysis, by doing some of the preliminary steps yourself. For example, in an introductory course you could use the following simplifications:

#### What to remove (and how to remove it)

• Remove consideration of packages: For an introductory course it is best to work with the base program, which contains enough functionality to deal with data-frames and apply introductory statistical tests and models. I recommend avoiding extension packages for an introductory course, but if you particularly want to use some additional packages, you should provide the code to install and load these yourself in the relevant exercises. Students should be able to copy or run your existing code to install and use any packages they want to use. To avoid difficulties with conflicting function names (in case a student loads other packages and creates a problem) you can refer to non-base functions directly using the package::function syntax.

• Remove the data importation step: This can be done by making sure that all of the datasets you give the students are already in .rds form, and you can even start your students off by giving them the first lines of code needed to import the data file from the course website or a local directory. I recommend giving your students some notes or resources on data importation for the benefit of those students who wish to learn this, but make the importation step non-assessable in the course, and provide students with the code for importation in each exercise.

• Remove the data-wrangling (unless you particularly want to teach this bit): This can be done by giving students pre-wrangled data forms in different .rds files. For example, you might have one dataset in wide form (CancerDataWide.rds) and the same data in long form (CancerDataLong.rds) as seperate files. If you particularly want to teach data-wrangling in the course you can provide some notes for this and allocate some time to it, but you can also remove this part by providing pre-wrangled data if you prefer. Data-wrangling is a long subject, so if you want to teach this you will need to allocate some serious time.

#### What to include

• Teach students the basics of the mathematical and logical operators: Take a bit of time to teach the basic mathematical operations and the logical operations. Students should be able to use mathematical operations to manipulate values and they should be able to conduct logical queries, etc. This will help students when they want to compute a value from other values or when they want to perform a logical query (e.g., for subsetting purposes).

• Teach students the basics of vectors, data-frames, lists and subsetting: The data you provide should be in .rds form as data.frame objects, so you should teach your students the basics of looking at data in this object form. Teach them the functions View, str and head and teach them some basic subsetting syntax so that they can extract individual variables or rows matching some logical query, etc. Once students can deal with this you can move on to teach them some basics of subsetting from lists, so that they can extract information from list objects. All of this is fairly simple and can probably be covered in a single session, with some assistance and reminders in subsequent tutorial work. In most introductory courses you can get away with avoiding matrices and arrays.

• Restrict your statistical analysis to a few key models/tests: For an introductory course you will most likely cover some basic data analysis methods including looking at correlation, T-tests, leading into regression and ANOVA. You will probably also teach some basic graphical methods including scatterplots, barplots, histograms (preferably KDEs), etc. All of these can be implemented with functions in the base program with relevant queries on an initial data frame. You will need to teach your students various functions for these things, but they are all fairly simple and most of the work is automated in the functions.

You could try using Gnumeric, a highly thought of spreadsheet, there is also an Open Office spreadsheet. Provided you explain the pitfalls of using spreadsheets, particularly Excel, after college in their subsequent practical lives they may not have the luxury of something like SPSS, but could still get useful service from these free products that are not too demanding of maths and programming skills. Many office environments contain Excel by default.

Have a look at:

and search for similar references such as

http://groups.google.com/group/comp.soft-sys.stat.spss/browse_frm/thread/3940bcd6c6266f1b/d85edd4978e53568?hl=en#d85edd4978e53568 Keeling, Kellie B. & Pavur, Robert J. (2007). A comparative study of the reliability of nine statistical software packages. Computational Statistics & Data Analysis, 51, 3811–3831.

I have been CalEst. The license is cheap, like 10 buck and provides both calculations/graphics as well as great simulation/activities for the students to practice. Moreover, in their website, they have some tools, mainly on distributions you may find useful.

• This answer is a bit short. Could you some more about why you will propose this software, and which afdvantages it have compared with the competition? Dec 1, 2017 at 19:16

I personally use DataMelt software for teaching of statistics. It's very well documented, it has tutorials, books and a lot of examples to look at. What is also important is that one can search for any example, and you can get a reasonable answer (in Javadoc and code snippets). Students can learn not only Python (which is the default programming language), but also how to code statistical methods in Java. In my view, this is a significant strength: students do not need to learn very specialized "statistical" language, like R-stat. They can learn Java at the same time too, which can open a lot of opportunities if they will decide to go to the industry.

I use StatCrunch.com (by Pearson). It is web-based with menus and boxes, no coding required, simple, has everything necessary for introductory statistics and lots of how-to videos on internet. The 6 month subscription is only \$15.