2011-10-24 2 views
3

나는 총 95 개의 잠재적 인 예측 변수를 가지고 있는데, 그 수를 더 많은 예측 능력을 가진 변수로 줄이고 싶습니다. 지금까지의 계획은 루프 내에서 6 개의 랜덤 예측 변수를 선택하고 단계적 회귀 (방향 = 둘 다)를 수행하여 코드를 작성하는 것이 었습니다 :루프 된 단계별 회귀에서 테이블에 쓰는 데 문제가 있습니다.

  • 이 루프는 모든 가능한 조합을 입력 할 수 있도록 100,000 반복됩니다.
  • (요약 명령의) 예측 자의 중요성은 p 값을 기반으로합니다. 중요한 값 < 0.05가 '1'로 코드화되고> 0.05 인 경우 6 개의 예측 변수 (또는 그 이하)에 대해 '0'이되는 경우. 예측기 이름은 루프 출력 테이블에 보존됩니다.

나는 하나의 출력 테이블을 95 개의 열로 만들고 루프의 각 반복마다 생성 된 6 개의 열을 사용하여 각 개별 줄에 쓸 수 없습니다. 열 이름

results <- array(NA,c(100000,95)) 

에 의해 할당 :

그래서 만든 배열에 추가 할 수있는 방법이 대신 무작위로 변수를 선택의

colnames(results)<-c(<inputdata>) 
+1

나는이 종류 o fthing가 어떻게 일하는지 실제로 모르지만, 선택 (95,6)를위한 100,000의 조합 이상있다. 무작위 표본을 100,000 회 이상 가져 오는 것보다 변수를 결합하는 것이 더 똑똑해야합니다. –

+1

패키지'MASS'는 여러분도 관심을 가질만한'stepAIC' 함수를 가지고 있습니다 : http://www.statmethods.net/stats/regression.html. 아래쪽으로 내려가는 예제가 있습니다 ... – Chase

+2

당신이하고있는 일을 알 수 있습니다 - 당신이 제안하는 것은 표준적인 (순진한) 단계별 접근법보다 조금 더 복잡 합니다만, 당신을 상기시킬 수는 없습니다. 단계적으로 접근 할 때 ** 매우주의해야합니다 ** - 종종 예측 능력이 매우 떨어집니다. 여러 가지 조합에 대한 평균을 취하면 단계별 접근법의 임의성/경로 의존성을 처리하지만 지나치게 추측 할 수있는 근본적인 경향은 아닙니다 (http://www.stata.com/support/faqs/stat/stepwise). .html –

답변

6

, 왜 수축을 사용하지 변수 선택 방법 (예 : the lasso or least angle regression). 두 변수 모두 결과와 가장 관련이 많은 변수를 자동으로 선택합니다.

성숙한 R package이 있습니다.

+1

+1 또한 'elasticnet','glmnet' –

+1

이것은 이런 종류의 문제에 대한 최선의 대답 인 것 같습니다. – marbel

2

aix와 Ben Bolker는 모두 좋은 제안을했습니다. 또한 glmnet을 권장하고 dfmaxpmax에 대한 설정을 살펴보면 모델의 활성 변수 수와 특정 모델 시퀀스에서 고려되는 변수의 총 개수를 제한 할 수 있습니다.

본질적으로 한 번에 하나의 변수 인 단계적 회귀는 약간 오래된 것입니다 (오, 내가 어린 반복자 였을 때 처음 반복을 할 때마다 단계적으로 회귀했습니다). 그러나 계속 나아가는 것이 좋습니다. 전적으로 다른 방법론. 여전히 합리적인 경우가 있지만, 소수의 전문성이 있습니다. 그러나 모든 하위 집합 모델링은 피해야합니다. 단순히 규모가 조정되지 않고 모든 계산 작업에서 사실상 아무 것도 얻지 못합니다.

관련 문제