이전의 모든 노력을 무시한이 비선형 다중 회귀 분석에 적합하도록 도와주세요


9

편집 :이 게시물을 만든 이후로 여기에 추가 게시물이 있습니다 .

아래 텍스트 요약 : 모델 작업 중이며 선형 회귀, Box Cox 변환 및 GAM을 시도했지만 많은 진전이 없었습니다.

을 사용하여 R현재 메이저 리그 (MLB) 수준에서 마이너 리그 야구 선수의 성공을 예측하는 모델을 연구하고 있습니다. 종속적 변수, 공격적 경력이 대체보다 높음 (oWAR)은 MLB 수준에서의 성공을위한 대리자이며 선수가 자신의 경력 과정에서 참여하는 모든 경기에 대한 공격적 기여의 합으로 측정됩니다 (자세한 내용은 여기 -http : //www.fangraphs.com/library/misc/war/). 독립 변수는 나이를 포함하여 메이저 리그 레벨에서 성공을 예측하는 중요한 예측 변수로 간주되는 통계에 대한 z 점수 마이너 리그 공격 변수입니다 (어릴 때 더 많은 성공을 거둔 플레이어는 더 나은 전망이됩니다). ], 보행 속도 [BBrate] 및 조정 된 생산 (전 세계적으로 공격적인 생산 측정). 또한, 마이너 리그에는 여러 레벨이 있으므로, 마이너 리그 플레이 레벨 (더블 A, 하이 A, 로우 A, 루키 및 단기 시즌 트리플 A를 포함한 더미 변수 포함) (메이저 리그보다 높은 레벨) 참조 변수로]). 참고 : WAR의 크기를 0에서 1까지의 변수로 조정했습니다.

변수 산점도는 다음과 같습니다.

산포도

참고로 종속 변수 oWAR에는 다음 플롯이 있습니다.

종속 변수 도표

선형 회귀로 시작 oWAR = B1zAge + B2zSOPct + B3zBBPct + B4zAdjProd + B5DoubleA + B6HighA + B7LowA + B8Rookie + B9ShortSeason하여 다음 진단 플롯을 얻었습니다.

linearRegressionDiagnostics

잔차의 편견이없고 랜덤 변이가 없다는 명확한 문제가 있습니다. 또한 잔차가 정상이 아닙니다. 회귀 결과는 다음과 같습니다.

linearRegressionResults

이전 스레드 의 조언에 따라 Box-Cox 변환을 성공하지 못했습니다. 다음으로 로그 링크로 GAM을 시도하고 다음 플롯을 받았습니다.

스플라인

기발한 diagnosticChecksGAM

새로운 진단 플롯 GAMDiag

스플라인이 데이터에 적합하는 것처럼 보이지만 진단 그림에는 여전히 적합하지 않습니다. 편집 : 원래 잔차 대 적합 값을보고 있다고 생각했지만 잘못되었습니다. 원래 표시된 플롯은 원본 (위)으로 표시되고 나중에 업로드 한 플롯은 새 진단 플롯 (위의)으로 표시됩니다.

GAM 결과

모형 의 가 증가했습니다R2

그러나 명령 gam.check(myregression, k.rep = 1000)에 의해 생성 된 결과 는 그렇게 유망하지 않습니다.

GAMResults2

누구든지이 모델의 다음 단계를 제안 할 수 있습니까? 지금까지 진행 한 과정을 이해하는 데 도움이 될만한 다른 정보를 제공해 드리겠습니다. 도움을 주셔서 감사합니다.


2
R의 GAM에서이 우수한 입문서를 찾았습니다 -www3.nd.edu/~mclark19/learn/GAMS.pdf 코드 : library (car) scatterplotMatrix (mydata [, c (1,1 : 8)], pch = 19, cex = .5, reg.line = F, lwd.smooth = 1.25, spread = F, ellipse = T, col = c ( 'gray60', '# 2957FF', '# FF8000'), col.axis = 'gray50')
zgall1

1
데이터 세트를 공유 할 수 있습니까? 또한 그 산점도 행렬의 경우 +1입니다. 훌륭합니다.
Zach

1
너무 나쁘다. 재미있는 데이터 세트처럼 보인다. 내 제안은 임의의 숲과 같은 다른 기계 학습 알고리즘을 시도하는 것입니다.
Zach

2
임의의 포리스트는 의사 결정 트리를 기반으로합니다. R의 randomForest 패키지와 임의의 포리스트 Wikipedia 페이지를 확인하십시오. en.wikipedia.org/wiki/Random_forest
Zach

2
"종속 변수는 ... 선수가 경력을 쌓는 동안 관련된 모든 플레이에 대한 공격적인 기여의 합으로 측정됩니다." 이것은 나에게 튀어 나온다. 여기서 중요한 점은 플레이어가 얼마나 오래 플레이했는지, [a] 플레이 시간이 길수록 oWAR을 "수집"하는 데 더 많은 시간이 걸린다는 것입니다.
Affine

답변:


6

아주 좋은 일입니다. 이 상황은 비례 배당률 반모 수 순서 형 로지스틱 모형의 후보라고 생각합니다. lrmR rms패키지 의 기능 은 모델에 적합합니다. 지금은 를 반올림 하여 100-200 레벨 만 가질 수 있습니다. 곧 새로운 버전의 새로운 기능 발표 될 예정이다 즉 효율적으로 모델에 차단 수천 수, 수 완전히 연속으로 [갱신이 2014 년에 등장]. 비례 승산 모델 는 변환 방식에 영향을받지 않습니다 . 그것은 Quantile도 변하지 않음을 의미합니다. 예측 평균을 원할 때 는 적절한 구간 척도로 가정합니다.YrmsormYβYY


1
레벨별로, Y 변수를 100-200 버킷으로 비닝한다는 의미입니까? 그렇다면 빈 크기를 선택하는 데 선호되는 방법이 있습니까? 크기가 같아야합니까?
zgall1

1
지속적인 솔루션이 없으면 비닝을 일시적으로 수행하십시오. 100 백분위 require(Hmisc); cut2(y, g=100, levels.mean=TRUE)
수로 묶을

새 버전이 rms곧 출시 될 예정이라면 언제쯤 될지 아십니까?
zgall1 2016 년

리눅스를 사용한다면 지금 당신에게 줄 수 있습니다. 그렇지 않으면 2 주가 걸릴 것입니다.
Frank Harrell 2016 년

나는 리눅스를 사용하지 않기 때문에 기다려야 할 것 같다. 가능한 경우 알려주십시오.
zgall1

1

종속 변수와 모델을 다시 작업하는 것이 유익 할 수 있다고 생각합니다. 에서 남은 잔상을 살펴보면 lm(), 주요 문제는 커리어 WAR이 높은 플레이어 (모든 WAR의 합으로 정의)에있는 것 같습니다. 가장 많이 예측 된 (확장 된) WAR은 최대 1에서 0.15입니다! 이 종속 변수에는이 문제를 악화시키는 두 가지가 있다고 생각합니다.

  • 단순히 더 오래 플레이하는 플레이어는 WAR을 수집 할 시간이 더 많습니다
  • 좋은 플레이어는 더 오래 유지되는 경향이 있으므로 WAR을 수집하는 데 더 오랜 시간이 걸릴 기회가 있습니다

그러나 예측의 맥락에서 명시 적으로 컨트롤 (무게 또는 평균 경력 WAR 계산에서 분모로 어떤 식 으로든)으로 재생 된 시간은 비생산적입니다 (또한 효과가 비선형 적이라고 생각합니다). 따라서 나는 사용하여 혼합 모델에서 다소 적은 명시 적으로 시간을 모델링 제안 lme4하거나 nlme.

종속 변수는 계절별 WAR이며 플레이어 마다 계절 수가 다른 입니다 . 이 모델은 플레이어를 랜덤 효과로 사용하며 다음과 같은 라인을 따릅니다.j=mii

sWARij=α+σi2+<other stuff>+εij

를 사용하면 lme4다음과 같이 보일 것입니다.
lmer(sWAR ~ <other stuff> + (1|Player), data=mydata)

여전히 에서 변환해야 할 수도 있지만 이것이 피드백 루프에 도움이 될 것이라고 생각합니다.sWAR


완전히 이해하고 있는지 잘 모르겠습니다. 종속 변수가 계절적 WAR 인 경우 독립 변수는 무엇입니까? 각 선수에 대해 동일한 마이너 리그 통계 라인? 우리는 기본적으로 마이너 리그 통계 라인 A가 메이저 리그 WAR B, C, D 및 E로 이어질 수 있다고 말하고 있습니까?
zgall1 2016 년

또한,이 모델을 게시 한 후 여기에서 확인할 수있는 추가 게시물이 있습니다 : stats.stackexchange.com/questions/61711/…
zgall1
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.