2
$\begingroup$

Why do I need to learn to program in python or Java and learn data structures? I can't think of a single thing statisticians/data scientists need to do that isn't built in as a package in R/stata.

$\endgroup$
2
  • 1
    $\begingroup$ This is a too broad question, moreover, the question does not make much sense... A data scientist can use all the tools available out there or develop his own one... The important thing for a data scientist is how and when apply these techniques $\endgroup$
    – ignatius
    Commented Dec 12, 2018 at 14:14
  • $\begingroup$ Neural network packages are better for python. Python has frameworks to create websites. It means easier web services where analytics can be calculated online. $\endgroup$
    – keiv.fly
    Commented Dec 12, 2018 at 22:26

3 Answers 3

1
$\begingroup$

Why do I need to learn to program in python or Java and learn data structures?

The simple answer - you dont need to lear python or Java or Scala or Julia or anything else if you dont wont to. If you dont know python it doesnt mean that you cant be a data scientist or use ML/DL. The point is that some tools are better for some tasks, it might be benefitial to lear C++ or Java if you need code that runs faster in production, etc. But you might be totaly okay with well optimized R code. You should do what is best for you and your tasks. About the things you cant do - I agree with you, you can do basically anything in R, it might be not efficient, but its possible.

$\endgroup$
1
$\begingroup$

This is a great question and, like most great questions, the answer is: it depends.

It all depends on what you mean by "data scientist".

For my own data science practice, I aim to provide an end-to-end solution starting from raw data all the way through to a deployed software solution (or API to be consumed). That means that I blur the lines between being a data engineer, statistician, modeling expert, machine learning engineer and software developer. So for me, Python is the obvious choice because there's virtually nothing I can't do with that language. Plus, Python makes a great "glue" language where I can tie separate systems/objects in a meaningful way. Can you quickly write me a public REST API in SAS that isn't going to be slow and cost me a new $20,000 license to use? Yeah, good luck with that.

If you, as a "data scientist" work in an academic environment and just aim to write whitepapers, then the above may not matter to you at all and you're perfectly fine to continue in R.

Another consideration is your prediction cycles. So you have a model - now what? You have to use it somehow. I've been involved in a ton of algorithm deployments and by far the easiest language to do that in is Python. Have you ever tried deploying a completed R model in a high concurrency, multi-threaded environment??? Yeah, good luck with that.

But again, if you don't deploy often (or at all) that may not matter to you.

The last consideration I can think of at this time would be the kind of models you work with. If I was working exclusively with "traditional" models like decisions trees and lassos, then I would absolutely be working in R/R Studio. So much easier (and fun!) to do in that language. Now, ask me to write a neural network in R and you're going to see a grown man cry ;-) But I know the Keras API backwards and forwards and I can do a ton of modeling in Python in a very short amount of time.

So, it's really all up to you. I work for one of the largest corporations in the world and I'm comfortable working in any of the tools you mentioned; Python, R and SAS are all available to me and I'm kinda-sort-of-alright at this data science thing ;) But I actively choose to be in Python because I want to be a "complete" data scientist that can take on any problem that is thrown my way. That may not matter to you at all, it's all up to you.

$\endgroup$
2
  • $\begingroup$ when is neural network better than traditional model? $\endgroup$
    – user64141
    Commented Dec 23, 2018 at 1:58
  • $\begingroup$ @Gorozon that’s a whole other question and really can’t be answered within the confines of a comment (at least not effectively). Feel free to open another question and I’ll provide an answer there. $\endgroup$ Commented Dec 23, 2018 at 2:00
0
$\begingroup$

It's the same reason you want to be language agnostic in programming. Things that are hard in one language might be easier in another. Job market requirements might change to favor someone who knows one language and not the others.

The closest datascience example I can think of is implementing machine learning models. I understand that's something really easy to do in python. I don't know how easy it is to do in something like Javascript or any of the tools you mentioned - I only really know what R is.

I personally think java is an ugly language so I wouldn't opt to use it. My strange preferences don't change the fact that python has a global interpreter lock while I believe java does not. It also isn't going to make pure python implementations as fast as java implementations - though certain techniques can make that a none issue. An employer looking for someone to fit in with their java tech stack isn't going to care that "I can do it in python".

Truthfully, there's actually nothing that can't be done in R that can be done in java or python, R is Turing complete. That doesn't mean that some things aren't easier in java or python; R might not be the best tool for the job.

$\endgroup$
2
  • $\begingroup$ why would I do ML when I have regression and traditional models like lasso? Can machine learning estimate true population parameters or on average be correct and be unbiased, efficient, robust, consistent estimators (BLUE)? $\endgroup$
    – user64141
    Commented Dec 23, 2018 at 2:24
  • $\begingroup$ @Gorozon probably, if you really wanted to. That's kinda the point though. Just use the language with the best implementation of the best tools for the job. $\endgroup$
    – user38175
    Commented Dec 27, 2018 at 14:46