[R] princomp() with missing values in panel data?

Henric Nilsson henric.nilsson at statisticon.se
Thu Jan 19 13:42:00 CET 2006


ivo welch said the following on 2006-01-18 14:56:

> thank you.  I am still not sure how to get the scores in princomp, though:
> 
> ds= as.data.frame( cbind(rnorm(10),rnorm(10)) )
> names(ds)=c("x1","x2")
> ds[5,]=c(NA,NA)
> pc= princomp( formula = ~ ds$x1 + ds$x2, na.action=na.omit)
> ds$pc1 = pc$scores[,1]  #<-- error, scores has 9 obs, ds has 10 obs
> 
> is there an elegant method to do this, or do I need to learn how to operate

Prof Ripley told you how to do it: `na.action = na.exclude'.

> with pc$loadings?  (may I also humbly suggest that the default behavior or
> $scores should be to contain NA in row 5?)

Choosing sensible defaults in the case of NAs is a tricky business.

Personally, I'd like the default to be `na.fail', so that I don't miss 
out on NAs if I've been sloppy while screening the data. Genrally, just 
ignoring missings and analysing the data as if it were complete may lead 
to seriously biased results.

> Incidentally, R is a lot cleverer than I understand.  pc$loadings by itself

Sometimes R is almost too clever, and I end up feeling humliated when 
finding out that I'm the stupid one... ;-)


HTH,
Henric



> gives me wonderfully intuitive output, with names, text, different
> components---but I can still use p$loadings[,2].  I presume that the array
> operator on the "loadings" object is overloaded.  very nice.
> 
> 	[[alternative HTML version deleted]]
> 
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html




More information about the R-help mailing list