## 3 Methodology
### Testing and Relaxing the Classical Assumptions
#### 3.3.1 Diagnostics of the Multicollinearity Assumption  
The multicollinearity assumption is the first one to be tested and relaxed. It requires that the design matrix has a full rank, i.e., rank(\(\mathbf{X}\)) = \(p\). If that is not the case, then the information matrix, \((\mathbf{X}^{\mathrm{T}}\mathbf{X})\), will have no inverse and the point estimate of the parameter vector could not be obtained with (13). The solution of this problem can be found in [44] (pp. 788-798) with a proposed 3-step SVD procedure. Step 1: Factor the design matrix \(\mathbf{X}\) to the product of three matrices using SVD decomposition:  
\[\mathbf{X}=\mathbf{U}\mathbf{S}\mathbf{V}^{T} \tag{25}\]  
In (25), \(\mathbf{U}\) is a [\(n\times p\)]-dimensional column-orthonormal matrix with columns \(\overset{\rightarrow}{u}_{j}\) (for \(j\) = 1, 2, \(\ldots\), \(p\)), \(\mathbf{S}\) is a [\(p\times p\)]-dimensional diagonal matrix with non-negative elements \(s_{j}\) (for \(j\) = 1, 2, \(\ldots\), \(p\)) on the main diagonal, called singular values, and \(\mathbf{V}\) is a [\(p\times p\)]-dimensional orthonormal matrix with columns \(\overset{\rightarrow}{v}_{j}\) (for \(j\) = 1, 2, \(\ldots\), \(p\)). Step 2: Classify the singular values \(s_{j}\) (for \(j\) = 1, 2, \(\ldots\), \(p\)) into 'positive group' and 'zero group'. Set \(s_{j}^{cor}=s_{j}\), if \(s_{j}\) belongs to the 'positive group'. Set \(s_{j}^{cor}=0\), if \(s_{j}\) belongs to the 'zero group'. Step 3: Approximate the inverse of the information matrix as:  
\[\left(\mathbf{X}^{T}\mathbf{X}\right)^{-1}\approx\sum_{ \begin{array}{c}j=1\\ s_{j}^{cor}>0\end{array} }^{p}\frac{\overset{\rightarrow}{v}_{j}\overset{ \rightarrow}{v}_{j}^{T}}{\left(s_{j}^{cor}\right)^{2}} \tag{26}\]  
The classification in the second step is not trivial. The SVD decomposition (25) is executed by software and therefore subject to round-off errors. We need to judge subjectively which singular values are in fact small positive real values and which are in fact zeros (but estimated as small positive real values due to round-off errors). According to [45], an improved automatic version of the above algorithm can be obtained by substituting its second step with the following procedure for classification and correction of singular values (PCCSV). ```
1. Set \(j=1\). 2. If \(s_{j}\leq 0\), then set \(s_{j}^{cor}=0\) and go to step 8. 3. Calculate \(\overset{\rightarrow}{u}_{j}^{nonzero}=\mathbf{X}\overset{\rightarrow}{v}_{j}/s_ {j}\) as an estimate of the unit vector \(\overset{\rightarrow}{u}_{j}\). 4. Estimate the length of \(\overset{\rightarrow}{u}_{j}^{nonzero}\) as \(\left|\overset{\rightarrow}{u}_{j}^{nonzero}\right|=\left(\overset{ \rightarrow}{u}_{j}^{nonzero}\right)^{T}\overset{\rightarrow}{u}_{j}^{nonzero}\). 5. Estimate the angle in degrees between \(\overset{\rightarrow}{u}_{j}\) and \(\overset{\rightarrow}{u}_{j}^{nonzero}\) as \(\alpha_{j}=180\left(\overset{\rightarrow}{u}_{j}^{nonzero}\right)^{T} \overset{\rightarrow}{u}_{j}^{\left|\rightarrow}\left|\overset{ \rightarrow}{u}_{j}^{nonzero}\right|/\pi\). 6. If \(\alpha_{j}\leq 1^{o}\) and \(\left|\overset{\rightarrow}{u}_{j}^{nonzero}\right|\in[0.99,1.01]\), then set \(s_{j}^{cor}=s_{j}\) and go to step 8. 7. Set \(s_{j}^{cor}=0\). 8. Set \(j=j+1\). 9. if \(j\leq p\), then go to step 2. ```  
**Algorithm 1**Classification and correction of singular values of a matrix (PCCSV)  
The main idea of PCCSV is that if the \(j^{\text{th}}\) singular value is really 0, then the vector \(\mathbf{X}\overset{\rightarrow}{v}_{j}\) will be an estimate of the \(p\)-dimensional column zero vector, \(\overset{\rightarrow}{0}\). Then, the vector \(\overset{\rightarrow}{u}_{j}^{nonzero}=\mathbf{X}\overset{\rightarrow}{v}_{j}/s_ {j}\) will be an estimate of \(\overset{\rightarrow}{0}/0\) which will make it quite different from the unit vector \(\overset{\rightarrow}{u}_{j}\).