Skip to content

Problems plotting and regression w.r.t. date data type on x axis

6 messages · Kategoricus, PIKAL Petr, David Winsemius

#
Hello,

probably a newbie question, but i didnt find any information on
plotting/regressing w.r.t. a date data type. My trials were unfruitful. Can
anyone help ? Thanks in advance!

Here is my interaction with R:
date number date2
1 2009-01-1 1673 2009-01-01
2 2009-12-1 2111 2009-12-01
3 2010-7-1 2487 2010-07-01
4 2013-2-1 4301 2013-02-01
Fehler in model.frame.default(formula = tabelle$number ~ tabelle$date2, :
ung?ltiger Typ (list) f?r die Variable 'tabelle$date2'
Call:
lm(formula = tabelle$number ~ tabelle$date)

Coefficients:
(Intercept) tabelle$date2009-12-1 tabelle$date2010-7-1
1673 438 814
tabelle$date2013-2-1
2628
Warnmeldung:
In abline(regression.punkte, lwd = 2) :
nutze nur die ersten beiden von 4 Regressionskoeffizienten
Call:
lm(formula = tabelle$number ~ tabelle$date)

Residuals:
ALL 4 residuals are 0: no residual degrees of freedom!

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 1673 NA NA NA
tabelle$date2009-12-1 438 NA NA NA
tabelle$date2010-7-1 814 NA NA NA
tabelle$date2013-2-1 2628 NA NA NA

Residual standard error: NaN on 0 degrees of freedom
Multiple R-squared: 1, Adjusted R-squared: NaN
F-statistic: NaN on 3 and 0 DF, p-value: NA



--
View this message in context: http://r.789695.n4.nabble.com/Problems-plotting-and-regression-w-r-t-date-data-type-on-x-axis-tp4658518.html
Sent from the R help mailing list archive at Nabble.com.
#
Hi

most probably your dates are not what you expect. Eg. they look like a date but they are not treated as date. You can check yourself by

str(tabelle)

which will result probably in factor, numeric, factor.

You need to change variables date and date2 into Date class.

?strptime or ?as.Date

date and date2 seems to be same but usually you shall use the same variables for plotting and for model to get correct regression line. 

Regards
Petr
#
Hello Petr!

thanks a lot for your help. The plot command plots well, but the abline
returns without error and does nothing.
'data.frame':   4 obs. of  3 variables:
 $ date  : Factor w/ 4 levels "2009-01-1","2009-12-1",..: 1 2 3 4
 $ number: int  1673 2111 2487 4301
 $ date2 : POSIXlt, format: "2009-01-01" "2009-12-01" ...
Call:
lm(formula = tabelle$number ~ as.Date(tabelle$date))

Coefficients:
          (Intercept)  as.Date(tabelle$date)  
           -24046.326                  1.799
--
View this message in context: http://r.789695.n4.nabble.com/Problems-plotting-and-regression-w-r-t-date-data-type-on-x-axis-tp4658518p4658529.html
Sent from the R help mailing list archive at Nabble.com.
#
On Feb 14, 2013, at 1:10 AM, Kategoricus wrote:

            
I'm guessing that you used as.POSIXlt to create that date2 variable.  
POSIXlt classed variables are lists and as such create all sorts of  
problems for functions that are expecting atomic vectors. If I'm  
right, you will ahve better chances of success by converting to  
POSIXct class.

 > tabelle <- read.table(text="date number date2
+ 1 2009-01-1 1673 2009-01-01
+ 2 2009-12-1 2111 2009-12-01
+ 3 2010-7-1 2487 2010-07-01
+ 4 2013-2-1 4301 2013-02-01", header=TRUE, stringsAsFactors=FALSE)
 > tabelle$date2 <- as.POSIXlt(tabelle$date2)
 > regression.punkte<-lm(tabelle$number ~ tabelle$date2)
Error in model.frame.default(formula = tabelle$number ~ tabelle 
$date2,  :
   invalid type (list) for variable 'tabelle$date2'

 > tabelle$date2 <- as.POSIXct(tabelle$date2)
 > regression.punkte<-lm(tabelle$number ~ tabelle$date2)
 > regression.punkte

Call:
lm(formula = tabelle$number ~ tabelle$date2)

Coefficients:
   (Intercept)  tabelle$date2
    -2.405e+04      2.082e-05
David Winsemius, MD
Alameda, CA, USA
#
Hi
As expected date is factor, number is numeric and date2 is POSIXlt format.
Here you are plotting number against POSIX date2.
Here you use date probably converted by as.Date. Why you do not use 

lm(number ~ date2, data = tabelle)

which is usual form of model formula.

Try also change date2 by as.POSIXct.

Regards
Petr