SPSS에서 LOOCV를 수행하는 방법을 이해하는 데 문제가 있습니다. 간단한 선형 회귀를 계산할 필요가 있습니다 $ Y = aX + b $. 감사합니다. .SPSS에서 leave-one-out 교차 유효성 검사 수행 방법
2
A
답변
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.
이 질문은 소프트웨어에서 통계 절차를 수행하는 방법에 관한 것이므로 주제와는 다른 것으로 보입니다. – AdamO
이 질문은 소프트웨어에서 통계 프로 시저를 수행하는 방법에 관한 것이므로 주제와는 거리가 먼 것처럼 보입니다. – gung