2014-06-13 4 views
2

SPSS에서 LOOCV를 수행하는 방법을 이해하는 데 문제가 있습니다. 간단한 선형 회귀를 계산할 필요가 있습니다 $ Y = aX + b $. 감사합니다. .SPSS에서 leave-one-out 교차 유효성 검사 수행 방법

+1

이 질문은 소프트웨어에서 통계 절차를 수행하는 방법에 관한 것이므로 주제와는 다른 것으로 보입니다. – AdamO

+2

이 질문은 소프트웨어에서 통계 프로 시저를 수행하는 방법에 관한 것이므로 주제와는 거리가 먼 것처럼 보입니다. – gung

답변

1

선형 회귀의 경우 pretty easy이며 SPSS를 사용하면 REGRESSION 명령 내에서 통계를 바로 저장할 수 있습니다. here for another example을 참조하십시오.

REGRESSION 
    /NOORIGIN 
    /DEPENDENT Y 
    /METHOD=ENTER X 
    /SAVE PRED (PredAll) DFIT (CVFit). 

는 그 다음 휴가 하나 밖으로 예측 COMPUTE LeaveOneOut = PredAll - CVFit. 그러나 한 후, 다음, 누락 된 값으로 반복되는 데이터 집합을 구축 SPLIT FILE을 사용하고 있습니다 위해 SPSS 편리 SAVE 값을 제공하지 않는 비선형 모델에 대해 계산 될 수있다 어느 통계 절차를 원하는대로 에 대한 통계를 남겨주세요. id 변수가 단순히 데이터 세트의 행 번호 인 경우 최대 케이스 번호의 두 개의 루프가 필요하며 필요한 정보가 새 파일과 일치하면됩니다.

다음은이 절차의 예입니다.

*Making some fake data to work with. 
INPUT PROGRAM. 
LOOP Id = 1 TO 10. 
END CASE. 
END LOOP. 
END FILE. 
END INPUT PROGRAM. 
DATASET NAME Sim. 
COMPUTE X = RV.NORMAL(10,5). 
COMPUTE Y = 3 + 0.2*(X) + RV.NORMAL(0,0.2). 
FORMATS Id (F2.0) X Y (F4.2). 
EXECUTE. 

*Original regression model with the leave one. 
*out fits. 
REGRESSION 
    /NOORIGIN 
    /DEPENDENT Y 
    /METHOD=ENTER X 
    /SAVE PRED (PredAll) DFIT (CVFit).  

*Manual way to create stacked dataset 
*can use with other non-linear models. 
INPUT PROGRAM. 
COMPUTE #Cases = 10. 
LOOP #Id = 1 TO #Cases. 
    LOOP #Iter = 1 TO #Cases. 
    COMPUTE L1O = #Iter. 
    COMPUTE Id = #Id. 
    END CASE. 
    END LOOP. 
END LOOP. 
END FILE. 
END INPUT PROGRAM. 
DATASET NAME LeaveOneOut. 

*Merging in original data. 
MATCH FILES FILE = * 
    /TABLE = 'Sim' 
    /BY Id. 

*Set missing to 
IF L1O = Id Y = $SYSMIS. 
SORT CASES BY L1O. 
SPLIT FILE BY L1O. 
*You can replace regression with whatever procedure you are. 
*interested in. 
REGRESSION 
    /NOORIGIN 
    /DEPENDENT Y 
    /METHOD=ENTER X 
    /SAVE PRED (CVFit2). 
SPLIT FILE OFF. 

*This shows the original leave one out stats. 
*And new stats are the same besides some floating. 
*point differences. 
COMPUTE Test = (CVFit2 - (PredAll-CVFit)). 
TEMPORARY. 
SELECT IF (L1O = Id). 
FREQ VAR Test. 
EXECUTE.