Predictor variables sum up to 1 but not necessarily correlated - is it a problem? I am trying to fit hierarchical mixture model (using ML and MCMC, but this shouldn't matter) where the linear predictor part contains 17 independent variables. These are habitat variables: for each habitat type I have one variable saying the proportions of the area in 100 m circle which belongs to that particular habitat type. 
The thing is that these 17 predictor variables sum up to 1 (i.e. simplex). 
Could this be a problem with 1) fitting the model 2) model selection 3) predictions? This is not exactly collinearity (there is no correlation coefficient over 0.4 or under -0.4), but the variables are linearly dependent - the each one could be derived from all the others. If there is too much of a certain habitat, there cannot be a lot of other habitat types.
EDIT: The correlogram is here (the number is correlation coefficient multiplied by 100 and rounded. Only significant p < 0.05 coefficients are displayed).

EDIT 2: please do not assume that the variables are correlated. They are slightly in my case, but in general the variables can be linearly dependent but with no correlation! Look at this artificialy generated example:
set.seed(1063)
x <- rmultinom(17, rep(1000, 17), rep(1/17, 17))
envV <- x/1000

(If you have different RNG, please download the generated matrix: http://pastebin.com/sK55w3Y2)
Now the columns of envV are linearly dependent, as they sum up to 1 (see apply(envV, 2, sum)), but they are not correlated. See:
cor.mtest <- function(mat, conf.level = 0.95){
    mat <- as.matrix(mat)
    n <- ncol(mat)
    p.mat <- lowCI.mat <- uppCI.mat <- matrix(NA, n, n)
    diag(p.mat) <- 0
    diag(lowCI.mat) <- diag(uppCI.mat) <- 1
    for(i in 1:(n-1)){
        for(j in (i+1):n){
            tmp <- cor.test(mat[,i], mat[,j], conf.level = conf.level)
            p.mat[i,j] <- p.mat[j,i] <- tmp$p.value
   lowCI.mat[i,j] <- lowCI.mat[j,i] <- tmp$conf.int[1]
            uppCI.mat[i,j] <- uppCI.mat[j,i] <- tmp$conf.int[2]
        }
    }
    return(list(p.mat, lowCI.mat, uppCI.mat))
}

cor1 <- cor.mtest(envV)

number_of_correlated_variables <- sum(cor1[[1]] < 0.05 & !diag(nrow(cor1[[1]])))
number_of_correlated_variables  # reports 0

EDIT 3: It is interesting and strange that the matrix can be actually inverted: if I do solve(t(as.matrix(envV)) %*% as.matrix(envV)) both on my real predictors and the artificial generated ones in EDIT 2, the inverse matrix will get computed with no error or warning (both with solve and ginv()). 
Also:
> is.singular.matrix(t(as.matrix(envV)) %*% as.matrix(envV))
[1] FALSE

 A: The problem is that you have only 16 predictors, not 17. You can take any 16 variables and compute the remaining. This is the case of perfect milticollinearity. The solution is to simply regress on any subset of 16 variables.
The perfect multicollinearity (also rank deficiency) is the problem of identification in OLS. It's basically a technicality where you'd need to invert the design matrix $X'X$, and it's impossible when one of your variables is the linear combination of others.
Look up this wiki page for the definitions of the perfect multicollinearity condition: $\lambda_0 + \lambda_1 X_{1i} + \lambda_2 X_{2i} + \cdots + \lambda_k X_{ki} = 0$, which is what you have in your data with $k=17$, $\lambda_i=1, i\in [1,17]$ and $\lambda_0=-1$
UPDATE 3
Thanks to @Khashaa, he noticed that you did not use the intercept in your test, that's why it seems to pass. Here's the correct test code:
> x=runif(100*16)/17;
> x1=matrix(x,100,16)
> envV=cbind(x1,1-apply(x1,1,sum),rep(1,100))> apply(envV,1,sum)
  [1] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
 [38] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
 [75] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
> hat=t(envV)%*%envV
> solve(hat)
Error in solve.default(hat) : 
  system is computationally singular: reciprocal condition number = 4.17876e-18

UPDATE 2
The reason why you don't see the correlations high is because you have a linear relationship with 17 variables, so pair-wise correlations don't have to be high. Consider this $x_{17}=1-\sum_{i=1}^{16}x_i, x_i\sim\mathcal{N}(0,1)$, if you look at the pair-wise correlations, you get $Corr[x_{17},x_i]=\frac{1}{\sqrt{16}}$, a relatively low number. So, in this case you're not going to notice multicollinearity by looking at pair-wise correlations.
A: It could be an issue. Thinking of the design matrix, $X$ the last column could be expressed as $1 - $ sum of other columns. That means $X^TX$ would not be invertible.
Two options that might help, the first of which is probably going to be easier:


*

*Drop a column. As its value is perfectly defined by the remaining data, you lose no information.

*Use (Bayesian equivalent of) lasso regression, which will effectively choose one to drop for you.


Low entries in the correlogram are unlikely to signify we can relax. The proportions must be negatively related in some sense as for one to get larger, another must get smaller.
