R에서 다중 회귀 변수 변환


26

에서 다중 회귀를 수행하려고합니다 R. 그러나 내 종속 변수에는 다음 플롯이 있습니다.

DV

다음은 모든 변수가있는 산점도 행렬입니다 ( WAR종속 변수입니다).

SPLOM

이 변수 (및 독립 변수)에 대한 변환을 수행해야하지만 정확한 변환이 확실하지 않습니다. 누군가 올바른 방향으로 나를 가리킬 수 있습니까? 독립 변수와 종속 변수 간의 관계에 대한 추가 정보를 제공하게되어 기쁩니다.

회귀 분석의 진단 그래픽은 다음과 같습니다.

진단 플롯

편집하다

Yeo-Johnson 변환을 사용하여 종속 및 독립 변수를 변환 한 후 진단 플롯은 다음과 같습니다.

변형 후

로그 링크와 함께 GLM을 사용하는 경우 진단 그래픽은 다음과 같습니다.

로그 링크가있는 GLM


3
@ zglaa1 님 안녕하세요. 변수를 변환해야한다고 생각하는 이유는 무엇입니까? 첫 번째 단계는 회귀 분석을 원래의 varibales에 맞추고 그 결과를 살펴 보는 것입니다 (잔여 물 등). 잔차는 변수가 아니라 대략 정규 분포되어야합니다. 어쩌면 당신은 찾을 수 이 게시물에 관심을.
COOLSerdash

링크와 제안에 감사드립니다. 회귀 분석을 실행했으며 다음 그림을 기반으로 변수를 변환해야한다는 것을 알고 있습니다. i.imgur.com/rbmu14M.jpg 잔차의 편차가없고 편차가 일정하지 않습니다. 또한 정상이 아닙니다.
zgall1

@ COOLSerdash 나는 링크를 보았습니다. 통계에 대한 기본 지식이 있으므로 토론을 이해합니다. 그러나 내 문제는 내가 배운 기술을 실제로 적용 한 경험이 제한되어있어 실제로 필요한 변환을 수행하기 위해 데이터 (Excel 또는 R)로 정확히 무엇을 해야하는지 파악하는 데 어려움을 겪고 있다는 것입니다.
zgall1

그래픽 주셔서 감사합니다. 이 적합이 차선책이라고 말함으로써 당신은 절대적으로 옳습니다. 회귀 분석에서 DV 및 IV를 사용하여 산점도 행렬을 생성 할 수 있습니까? 이것은에서 수행 할 수 있습니다 R명령으로 데이터 집합이 될 것입니다. pairs(my.data, lower.panel = panel.smooth)my.data
COOLSerdash

2
변환에 대한 일반적인 접근 방식은 Box-Cox 변환 입니다. 수행 할 수있는 작업은 다음과 같습니다. 1. lm변환되지 않은 변수 를 사용 하여 회귀 모델을 맞 춥니 다. 패키지 의 함수 boxcox(my.lm.model)를 사용하여MASS 를 추정하십시오 . 이 명령은 또한 편의를 위해 업로드 할 수있는 그래픽을 생성합니다. λ
COOLSerdash

답변:


30

John Fox의 저서 응용 회귀 분석의 R 동반자 는 응용 회귀 모델링에 대한 훌륭한 자원입니다 R. car이 답변에서 전체적으로 사용 하는 패키지 는 함께 제공되는 패키지입니다. 이 책 에는 추가 장이있는 웹 사이트있습니다 .


반응 변형 (일명 종속 변수, 결과)

Box-Cox 변환 은 응답 변환을 선택할 수있는 방법을 제공합니다. 으로 변형되지 않은 변수를 포함하여 회귀 모델 피팅 후 R기능을 lm, 당신은 기능을 사용할 수 있습니다 boxCox으로부터 car패키지 추정 최대 우도로 (즉, 전원 매개 변수). 종속 변수가 엄격하게 양수가 아니기 때문에 Box-Cox 변환이 작동하지 않으며 Yeo-Johnson 변환 을 사용하는 옵션 을 지정해야합니다 ( 여기 의 원본 및 관련 게시물 참조 ).λfamily="yjPower"

boxCox(my.regression.model, family="yjPower", plotit = TRUE)

다음과 같은 플롯이 생성됩니다.

박스 콕스 램닷 플롯

의 가장 좋은 추정치는 이 예에서 약 0.2 인 프로파일을 최대화하는 값입니다. 일반적으로 의 추정치 는 여전히 -1, -1/2, 0, 1/3, 1/2, 1 또는 2와 같이 95 % 신뢰 구간 내에있는 익숙한 값으로 반올림됩니다.λλλ

종속 변수를 변환하려면 패키지 의 함수 yjPower를 사용하십시오 car.

depvar.transformed <- yjPower(my.dependent.variable, lambda)

함수 사용하기 전에 찾은 lambda둥근 여야합니다 . 그런 다음 변환 된 종속 변수를 사용하여 회귀를 다시 맞 춥니 다.λboxCox

중요 사항 : 종속 변수를 로그 변환하는 대신 로그 링크가있는 GLM을 맞추는 것이 좋습니다. 다음은 추가 정보를 제공하는 일부 참조입니다. first , second , third . 에서이 작업을 수행하려면 다음을 R사용하십시오 glm.

glm.mod <- glm(y~x1+x2, family=gaussian(link="log"))

y종속 변수는 어디에 x1있고 x2등은 독립 변수입니다.


예측 변수의 변환

변환의 엄격히 긍정적 예측기는 종속 변수의 변환 이후 최대 우도 추정 될 수있다. 이렇게하려면 패키지 의 기능 boxTidwell을 사용하십시오 car(원본 용지는 여기 참조 ). 다음과 같이 사용하십시오 boxTidwell(y~x1+x2, other.x=~x3+x4). 여기서 중요한 것은 옵션 other.x은 변환 되지 않아야 하는 회귀 항을 나타냅니다 . 이것은 모든 범주 형 변수입니다. 이 함수는 다음 형식의 출력을 생성합니다.

boxTidwell(prestige ~ income + education, other.x=~ type + poly(women, 2), data=Prestige)

          Score Statistic   p-value MLE of lambda
income          -4.482406 0.0000074    -0.3476283
education        0.216991 0.8282154     1.2538274

이 경우 점수 테스트에서 변수 income를 변환해야한다고 제안합니다 . 최대 우도 추정 에 대한이 -0.348이다. 이는 변환과 유사한 -0.5로 반올림 될 수 있습니다 .소득 n e w = 1 / λincomeincomenew=1/incomeold

독립 변수의 변형에 관한 사이트에서 매우 흥미로운 또 다른 게시물은 이것 입니다.


변형의 단점

로그 변환 된 종속 및 / 또는 독립 변수는 비교적 쉽게 해석 할 수 있지만 다른 복잡한 변환에 대한 해석은 직관적이지 않습니다 (적어도 나에게는). 예를 들어, 종속 변수가 의해 변환 된 후 회귀 계수를 어떻게 해석 하시겠습니까? 이 사이트에는 그 질문을 정확히 다루는 게시물이 몇 개 있습니다 : first , second , third , four . Box-Cox에서 를 반올림없이 직접 사용하는 경우 (예 : = -0.382) 회귀 계수를 해석하기가 훨씬 더 어렵습니다. λλ1/yλλ


비선형 관계 모델링

비선형 관계에 맞는 매우 유연한 두 가지 방법은 분수 다항식스플라인 입니다. 이 세 가지 논문은 두 가지 방법 모두에 대한 아주 좋은 소개를 제공합니다 : First , secondthird . 분수 다항식 및에 대한 전체 이 있습니다 R. 이 R 패키지mfp 는 다 변수 분수 다항식을 구현합니다. 이 표현 은 분수 다항식에 관한 정보가 될 수 있습니다. 스플라인에 맞추기 위해 패키지 또는 함수에서 함수 gam(일반화 된 추가 모델, 여기 에 대한 우수한 소개를 참조 하십시오R )를 사용할 수 있습니다mgcvns(천연 큐빅 스플라인) 및 bs패키지의 (큐빅 B 스플라인) splines( 이 기능의 사용 예는 여기 참조 ). 를 사용 gam하면 s()함수를 사용하여 스플라인을 사용하여 피팅 할 예측 변수를 지정할 수 있습니다 .

my.gam <- gam(y~s(x1) + x2, family=gaussian())

여기에서는 x1스플라인을 사용하여 x2일반 선형 회귀에서 와 같이 선형으로 적합 합니다. 내부에서 gam와 같이 배포 제품군과 링크 기능을 지정할 수 있습니다 glm. 로그 링크 기능을 가진 모델에 맞게 그래서, 당신은 옵션을 지정할 수 있습니다 family=gaussian(link="log")gam같이 glm.

사이트 에서이 게시물 을 살펴보십시오 .


1
좋은 설명입니다. 명시 적 Box-Cox가 실제로 변환을 선택하는 가장 일반적인 방법이라는 것을 모르겠습니다. 어떤 식 으로든 로그를 선택하는 사람들을 셀 수 있다면 내 생각에는 소수의 방법이라고 생각합니다. 그 까다로운 점은 자연스럽게 다른 것에 영향을 미치지 않습니다.
Nick Cox

@NickCox 감사합니다 (답변은 +1, btw). Box-Cox가 가장 일반적인 방법이라는 진술은 John Fox의 책에서 나옵니다. 진술을 판단 할 충분한 경험이 없기 때문에 액면가로 가져갔습니다. 문장을 제거하겠습니다.
COOLSerdash

자세한 설명을 주셔서 감사합니다. 지금 내 데이터에 적용하려고합니다.
zgall1

@COOLSerdash 자세한 연습을 사용하여 Box Cox 변환을 종속 및 독립 변수에 적용하고 다음과 같은 진단 변수 플롯을 얻었습니다. i.imgur.com/eO01djl.jpg 분명히 개선이 있지만 여전히 변동성과 편견이 일정하지 않은 문제 일 수 있으며 정규성에 문제가있을 수 있습니다. 여기서 어디로 갈 수 있습니까?
zgall1

1
@ zgall1 의견을 보내 주셔서 감사합니다. 감사합니다. 흠, 예, 변환은 많은 도움이되지 않은 것 같습니다 :). 이 시점에서 나는 mgcv패키지와 함께 GA (Generalized Additive Models)를 사용하여 예측 변수에 스플라인을 사용하려고 시도합니다 gam. 그것이 도움이되지 않으면, 나는 재치가 끝날 무렵입니다. 여기에 나보다 훨씬 더 경험이 많은 사람들이 있으며 아마도 그들은 당신에게 더 많은 조언을 줄 수 있습니다. 나는 또한 야구에 대해 잘 모른다. 이러한 데이터에 더 적합한 논리 모델이있을 수 있습니다.
COOLSerdash

8

응답 (결과, 종속) 변수의 특성에 대해 더 알려주십시오. 첫 번째 줄거리에서 그것은 0에 가까운 많은 값과 일부 음의 값으로 강하게 왜곡되어 있습니다. 그로부터 가능하지만 불가피한 것은 아니지만 변환이 도움이 될 수 있지만 가장 중요한 질문은 변환이 데이터를 선형 관계에 더 가깝게 만들지 여부입니다.

반응의 음수 값은 로그 대수 변환은 제외하지만 로그 (응답 + 상수)는 제외하고 로그 링크가있는 일반화 된 선형 모델은 제외합니다.

이 사이트에는 통계적 사람들을 나누는 로그 (응답 + 상수)에 대한 많은 답변이 있습니다. 일부 사람들은 그것을 특별하고 다루기가 어려우며 다른 사람들은 그것을 합법적 인 장치로 간주합니다.

로그 링크가있는 GLM은 여전히 ​​가능합니다.

또는 모델에 일종의 혼합 프로세스가 반영되어있을 수 있습니다.이 경우 데이터 생성 프로세스를 더 자세히 반영하는 사용자 정의 모델이 좋은 아이디어입니다.

(후에)

OP에는 약 100에서 -2 사이의 값을 갖는 종속 변수 WAR이 있습니다. 0 또는 음수의 로그를 취하는 문제를 극복하기 위해 OP는 0과 음수의 퍼지를 0.000001로 제안합니다. 이제 로그 스케일 (기본 10)에서이 값의 범위는 약 2 (100 정도)에서 -6 (0.000001)까지입니다. 대수 스케일에서 퍼지 된 포인트의 소수는 이제 대규모 특이 치의 소수입니다. 이것을 확인하기 위해 log_10 (퍼지 드 퍼지)을 다른 어떤 것에도 플로팅하십시오.


위에 게시 된 산점도에서 알 수 있듯이 야구 통계 데이터 세트를 사용하고 있습니다. 독립 변수, WAR은 기본적 메이저 리그 레벨에서 자신의 경력을 통해 플레이어로 기여 값의 누적 측정이다. 독립 변수는 AdjSLG, SOPct 및 BBPct은 일반적으로 메이저 리그 레벨에서 성공을 예측하는 것으로 생각된다 마이너 리그 통계입니다. 연령 변수는 플레이어가 마이너 리그 통계를 생성 한 연령입니다. 더미 변수는 통계가 생성 된 부 리그 수준을 나타내는 데 사용됩니다.
zgall1

즉, 변환 과정 쉽게 경우 약간 복잡한 이유로 제외 독립 변수 (WAR) 문제에 관해서는,, 그것은 제로로서 그 재 코드 합리적이다. 이 데이터 세트의 프레임 워크 내에서 이것은 정당한 절차입니다. 당신이 더 많은 세부 사항으로 가라고하고 싶은 경우 (경고 - 야구 용어 필요), 나는 그렇게 할 기쁘게 생각합니다.
zgall1

1
WAR이 종속 변수 인 것 같습니다 . 당신은 두 용어는 종종 혼동되어 있으며,이 사이트에 다른 곳에서 이의를 제기 나의 주장에 대한 증거를 제공합니다. 내 조언은 제로로 레코딩 마이너스 값으로하지 않습니다 (데이터를 maltreats)하지만 로그 링크가 GLM을 사용합니다. 내 옆에 제로에 대한 관심이나 지식, 야구 사소한 가정하십시오.
Nick Cox

WAR이 내 종속 변수 인 것이 맞습니다. 로그 링크가있는 GLM을 살펴 보겠습니다. 충고 감사합니다.
zgall1

1
경력 WAR는 다음 계산 방법을 알고 도움이 될 수 있음 (일명 데이터 생성 과정을 이해).
Affine
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.