Non-linear regression models in PostgreSQL using R

后端 未结 3 1327
北恋
北恋 2021-02-06 14:56

Background

I have climate data (temperature, precipitation, snow depth) for all of Canada between 1900 and 2009. I have written a basic website and the simplest page a

相关标签:
3条回答
  • 2021-02-06 15:35

    The awesome pl/r package allows you to run R inside PostgreSQL as a procedural language. There are some gotchas because R likes to think about data in terms of vectors which is not what a RDBMS does. It is still a very useful package as it gives you R inside of PostgreSQL saving you some of the roundtrips of your architecture.

    And pl/r is apt-get-able for you as it has been part of Debian / Ubuntu for a while. Start with apt-cache show postgresql-8.4-plr (that is on testing, other versions/flavours have it too).

    As for the appropriate modeling: that is a whole different ballgame. loess is a fair suggestion for something non-parametric, and you probably also want some sort of dynamic model, either ARMA/ARIMA or lagged regression. The choice of modeling is pretty critical given how politicized the topic is.

    0 讨论(0)
  • 2021-02-06 15:43

    I don't think autoregression is what you want. Non-linear isn't what you want either because the implies discontinuous data. You have continuous data, it just may not be a straight line. If you're just visualizing, and especially if you don't know what the shape is supposed to be then loess is what you want.

    It's easy to also get a confidence interval band around the line if you just plot the data with ggplot2.

    qplot(x, y, data = df, geom = 'point') + stat_smooth()
    

    That will make a nice plot.

    If you want to a simpler graph in straight R.

    plot(x, y)
    lines(loess.smooth(x,y))
    
    0 讨论(0)
  • 2021-02-06 15:50

    May I propose a different solution? Just use PostgreSQL to pull the data, feed it into some R script and finally show the results. The R script may be as complicated as you want as long as the user doesn't have to deal with it.

    You may want to have a look at rapache, an Apache module that allows running R scripts in a webpage. A couple of videos illustrating its use:

    • Hello world application
    • Jeffrey Horner's presentation of RApache + links to working apps

    In particular check how the San Francisco Estuary Institue Web Query Tool allows the user to interact with the parameters.

    As for the regression, I'm not an expert, so I may be saying something extremely stupid... but wouldn't something like a LOESS regression be OK for this?

    0 讨论(0)
提交回复
热议问题