티스토리 뷰
다중공선성(multicollinearity) 검증을 위한 VIF(Variance Inflation Factor)
일련의 변수에 대한 분산팽창계수(VIF)를 계산하고 단계적 절차를 통해 상관관계가 높은 변수를 제외한다. 이 방법은 통계 모델을 적합할 때 다중공선성 문제를 처리하는 사용할 수 있다.
R 라이브러리 usdm을 사용한다.
사용하기 앞서 usdm 라이브러리가 설치되어 있지 않다면 다음 명령어 구문으로 설치하고 불러온다.
install.packages("usdm")
library(usdm)
사용법
vif(x, ...)
vifcor(x,th=0.9, ...)
vifstep(x,th=10, ...)
매개변수 설명
x : 래스터 객체(RasterStack 또는 RasterBrick), 매트릭스 또는 data.frame으로 정의된 설명 변수(예측자).
th: vifcor에 대한 상관계수 임계값과 vifstep에 대한 VIF 임계값을 지정하는 숫자(상세내용 참조).
상세내용
VIF can be used to detect collinearity (Strong correlation between two or more predictor variables).
[VIF는 공선성(둘 이상의 예측 변수 사이의 강한 상관관계)을 감지하는 데 사용할 수 있습니다.]
Collinearity causes instability in parameter estimation in regression-type models.
[공선성은 회귀 유형 모델에서 매개변수 추정의 불안정성을 유발합니다.]
The VIF is based on the square of the multiple correlation coefficient resulting from regressing a predictor variable against all other predictor variables.
[VIF는 다른 모든 예측 변수에 대해 예측 변수를 회귀 분석한 다중 상관 계수의 제곱을 기반으로 합니다.]
If a variable has a strong linear relationship with at least one other variables, the correlation coefficient would be close to 1, and VIF for that variable would be large.
[변수가 적어도 하나의 다른 변수와 강한 선형 관계를 가지고 있다면 상관 계수는 1에 가까울 것이고 해당 변수에 대한 VIF는 커질 것입니다.]
A VIF greater than 10 is a signal that the model has a collinearity problem. vif function calculates this statistic for all variables in x. vifcor and vifstep uses two different strategy to exclude highly collinear variable through a stepwise procedure. vifcor, first find a pair of variables which has the maximum linear correlation (greater than th), and exclude one of them which has greater VIF.
[10보다 큰 VIF는 모델에 공선성 문제가 있다는 신호입니다. vif 함수는 x의 모든 변수에 대해 이 통계를 계산합니다. vifcor 및 vifstep은 두 가지 다른 전략을 사용하여 단계적 절차를 통해 공선성이 높은 변수를 제외합니다. vifcor, 먼저 최대 선형 상관(th보다 큼)을 갖는 변수 쌍을 찾고 VIF가 더 큰 변수 중 하나를 제외합니다.]
The procedure is repeated untill no variable with a high corrrelation coefficient (grater than threshold) with other variables remains. vifstep calculate VIF for all variables, exclude one with highest VIF (greater than threshold), repeat the procedure untill no variables with VIF greater than th remains.
[이 절차는 다른 변수와 상관 계수가 높은(임계값보다 큰) 변수가 남지 않을 때까지 반복됩니다. vifstep은 모든 변수에 대한 VIF를 계산하고 VIF가 가장 높은 변수(임계값보다 큼)를 제외하고 VIF가 이보다 큰 변수가 남지 않을 때까지 절차를 반복합니다.]
addtional arguments: [추가 인수:]
maxobservations a number (default=5000) specifying the maximum number of observations should be contributed in calculation of VIF.
[maxobservations VIF 계산에 기여해야 하는 최대 관찰 수를 지정하는 숫자(기본값=5000)입니다.]
When the number of observations (cells in raster or rows in data.frame/matrix) is greater than maxobservations, then a random sample with a size of maxobservations is drawn to keep the calculation effecient.
[관찰 수(래스터의 셀 또는 data.frame/matrix의 행)가 maxobservations보다 크면 maxobservations 크기의 무작위 샘플이 추출되어 계산 효율성을 유지합니다.]
참고자료
Chatterjee, S. and Hadi, A. S. 2006. Regression analysis by example. John Wiley and Sons.;
Dormann, C. F. et al. 2012. Collinearity: A review of methods to Deal with it and a simulation study evaluating their performance. Ecography 35: 001-020.;
————–
IF you used this method, please cite the following article for which this package is developed:
Naimi, B., Hamm, N.A.S., Groen, T.A., Skidmore, A.K., and Toxopeus, A.G. 2014. Where is positional uncertainty a problem for species distribution modelling?, Ecography 37 (2): 191-203.
예제
## Not run:
file <- system.file("external/spain.grd", package="usdm")
r <- brick(file) # reading a RasterBrick object including 10 raster layers in Spain
r
vif(r) # calculates vif for the variables in r
v1 <- vifcor(r, th=0.9) # identify collinear variables that should be excluded
v1
v2 <- vifstep(r, th=10) # identify collinear variables that should be excluded
v2
## End(Not run)