[R] vif in package car: there are aliased coefficients in the model

Rodolfo Pelinson rodolfopelinson at gmail.com
Mon Mar 30 14:53:50 CEST 2015


Thanks a lot for the answer and I'm sorry for the silly question!

Also thanks for the conceptual advice! It was also a doubt of me and my
advisors.


Best!

2015-03-28 15:17 GMT-03:00 John Fox <jfox em mcmaster.ca>:

> Dear Rodolfo,
>
> Sending the data helps, though if you had done what I suggested, you would
> have seen what's going on:
>
> -------------------- snip ------------------
>
> > dim(data)
> [1] 8 8
>
> > summary(lm(response_variable ~ predictor_1 + predictor_2 + predictor_3 +
> predictor_4
> +             + predictor_5 + predictor_6 + predictor_7, data = data))
>
> Call:
> lm(formula = response_variable ~ predictor_1 + predictor_2 +
>     predictor_3 + predictor_4 + predictor_5 + predictor_6 + predictor_7,
>     data = data)
>
> Residuals:
> ALL 8 residuals are 0: no residual degrees of freedom!
>
> Coefficients: (1 not defined because of singularities)
>                     Estimate Std. Error t value Pr(>|t|)
> (Intercept)          -5.1905         NA      NA       NA
> predictor_1yellow     2.4477         NA      NA       NA
> predictor_2fora       6.5056         NA      NA       NA
> predictor_2interior   6.0769         NA      NA       NA
> predictor_3           0.6750         NA      NA       NA
> predictor_4           3.0742         NA      NA       NA
> predictor_5           0.6715         NA      NA       NA
> predictor_6          -0.9850         NA      NA       NA
> predictor_7               NA         NA      NA       NA
>
> Residual standard error: NaN on 0 degrees of freedom
> Multiple R-squared:      1,     Adjusted R-squared:    NaN
> F-statistic:   NaN on 7 and 0 DF,  p-value: NA
>
> -------------------- snip ------------------
>
> So the data set that you're using has 8 cases and 8 variables, one of
> which is a factor with 3 levels. Consequently, the model you're fitting my
> LS has 9 coefficients. Necessarily the rank of the model matrix is
> deficient. When you eliminate a coefficient, you get a perfect fit: 8
> coefficients fit to 8 cases with 0 df for error.
>
> This is of course nonsense: You don't have enough data to fit a model of
> this complexity. In fact, you might not have enough data to reasonably fit
> a model with just 1 predictor.
>
> I'm cc'ing this response to the r-help email list, where you started this
> thread.
>
> Best,
>  John
>
> On Sat, 28 Mar 2015 12:04:05 -0300
>  Rodolfo Pelinson <rodolfopelinson em gmail.com> wrote:
> > Thanks a lot for your answer and your time! But Im still having the same
> > problem.
> >
> > That's the script I am using:
> >
> ____________________________________________________________________________________________________________________
> > library(car)
> >
> > data <-read.table("data_vif.txt", header = T, sep = "\t", row.names = 1)
> > data
> >
> > vif(lm(response_variable ~ predictor_1 + predictor_2 + predictor_3 +
> > predictor_4 + predictor_5 + predictor_6 + predictor_7, data = data))
> >
> > vif(lm(response_variable ~ predictor_1 + predictor_2 + predictor_3 +
> > predictor_4 + predictor_5 + predictor_6, data = data))
> >
> ____________________________________________________________________________________________________________________
> >
> > the first vif function above returns me the following error:
> >
> > "Error in vif.default(lm(response_variable ~ predictor_1 + predictor_2
> +  :
> >   there are aliased coefficients in the model"
> >
> > Then if I remove any one of the predictors (in the script I removed
> > predictor_7 as an example), it returns this:
> >
> >             GVIF Df GVIF^(1/(2*Df))
> > predictor_1  NaN  1             NaN
> > predictor_2  NaN  2             NaN
> > predictor_3  NaN  1             NaN
> > predictor_4  NaN  1             NaN
> > predictor_5  NaN  1             NaN
> > predictor_6  NaN  1             NaN
> > Warning message:
> > In cov2cor(v) : diag(.) had 0 or NA entries; non-finite result is
> doubtful
> >
> >
> > Can you help me with this? I even attached to this e-mail my data set.
> It's
> > a small table.
> >
> > Sorry for the question.
> >
> >
> >
> > 2015-03-27 21:51 GMT-03:00 John Fox <jfox em mcmaster.ca>:
> >
> > > Dear Rodolfo,
> > >
> > > It's apparently the case that at least one of the columns of the model
> > > matrix for your model is perfectly collinear with others.
> > >
> > > There's not nearly enough information here to figure out exactly what
> the
> > > problem is, and the information that you provided certainly falls
> short of
> > > allowing me or anyone else to reproduce your problem and diagnose it
> > > properly. It's not even clear from your message exactly what the
> structure
> > > of the model is, although localizacao  is apparently a factor with 3
> > > levels.
> > >
> > >
> > > If you look at the summary() output for your model or just print it,
> you
> > > should at least see which coefficients are aliased, and that might
> help you
> > > understand what went wrong.
> > >
> > > I hope this helps,
> > >  John
> > >
> > > -------------------------------------------------------
> > > John Fox, Professor
> > > McMaster University
> > > Hamilton, Ontario, Canada
> > > http://socserv.mcmaster.ca/jfox/
> > >
> > >
> > > > -----Original Message-----
> > > > From: R-help [mailto:r-help-bounces em r-project.org] On Behalf Of
> Rodolfo
> > > > Pelinson
> > > > Sent: March-27-15 3:07 PM
> > > > To: r-help em r-project.org
> > > > Subject: [R] vif in package car: there are aliased coefficients in
> the
> > > model
> > > >
> > > > Hello. I'm trying to use the function vif from package car in a lm.
> > > However it
> > > > returns the following error:
> > > > "Error in vif.default(lm(MDescores.sitescores ~ hidroperiodo +
> > > localizacao
> > > > +  : there are aliased coefficients in the model"
> > > >
> > > > When I exclude any predictor from the model, it returns this warning
> > > > message:
> > > > "Warning message: In cov2cor(v) : diag(.) had 0 or NA entries;
> non-finite
> > > > result is doubtful"
> > > >
> > > > When I exclude any other predictor from the model vif finally works.
> I
> > > can't
> > > > figure it out whats the problem. This are the results that R returns
> > > > me:
> > > >
> > > > > vif(lm(MDescores.sitescores ~ hidroperiodo + localizacao + area +
> > > > profundidade + NTVM +  NTVI + PCs...c.1.., data = MDVIF)) Error in
> > > > vif.default(lm(MDescores.sitescores ~ hidroperiodo + localizacao +
> > > >  :   there are aliased coefficients in the model
> > > >
> > > > > vif(lm(MDescores.sitescores ~ localizacao + area + profundidade +
> NTVM
> > > > > +
> > > >  NTVI + PCs...c.1.., data = MDVIF))
> > > >              GVIF Df GVIF^(1/(2*Df))
> > > > localizacao   NaN  2             NaN
> > > > area          NaN  1             NaN
> > > > profundidade  NaN  1             NaN
> > > > NTVM          NaN  1             NaN
> > > > NTVI          NaN  1             NaN
> > > > PCs...c.1..   NaN  1             NaN
> > > > Warning message:
> > > > In cov2cor(v) : diag(.) had 0 or NA entries; non-finite result is
> > > doubtful
> > > >
> > > > Thanks.
> > > > --
> > > > Rodolfo Mei Pelinson.
> > > >
> > > >       [[alternative HTML version deleted]]
> > > >
> > > > ______________________________________________
> > > > R-help em r-project.org mailing list -- To UNSUBSCRIBE and more, see
> > > > https://stat.ethz.ch/mailman/listinfo/r-help
> > > > PLEASE do read the posting guide http://www.R-project.org/posting-
> > > > guide.html
> > > > and provide commented, minimal, self-contained, reproducible code.
> > >
> > >
> > > ---
> > > This email has been checked for viruses by Avast antivirus software.
> > > http://www.avast.com
> > >
> > >
> >
> >
> > --
> > Rodolfo Mei Pelinson.
>
> ------------------------------------------------
> John Fox, Professor
> McMaster University
> Hamilton, Ontario, Canada
> http://socserv.mcmaster.ca/jfox/
>
>
>
>


-- 
Rodolfo Mei Pelinson.

	[[alternative HTML version deleted]]



More information about the R-help mailing list