2017-03-09 5 views
0

간단한 다 변수 로지스틱 회귀 분석을 실행하고 싶습니다. 예제를 통해 이진 데이터로 아래 예제를 만들었습니다.다 변수 로지스틱 회귀 분석 R

다변량 회귀 = 2 + 예측 결과 변수 그래서

> y = matrix(c(0,0,0,1,1,1,1,1,1,0,0,0), nrow=6,ncol=2) 

> x = matrix(c(1,0,0,0,0,0,1,1,0,0,0,0,1,1,1,0,0,0,1,1,1,1,0,0,1,1,1,1,1,0,1,1,1,1,1,1), nrow=6,ncol=6) 
> x 
    [,1] [,2] [,3] [,4] [,5] [,6] 
[1,] 1 1 1 1 1 1 
[2,] 0 1 1 1 1 1 
[3,] 0 0 1 1 1 1 
[4,] 0 0 0 1 1 1 
[5,] 0 0 0 0 1 1 
[6,] 0 0 0 0 0 1 
> y 
    [,1] [,2] 
[1,] 0 1 
[2,] 0 1 
[3,] 0 1 
[4,] 1 0 
[5,] 1 0 
[6,] 1 0 

하려고, 변수 "X"6 개 샘플을 가지고 있으며, 각 샘플 6 개 특성을가집니다. 변수 "y"는 6 개의 샘플 각각에 대해 2 개의 예측을가집니다. 바이너리 데이터로 작업하고 싶습니다.

나는 절편 계수를 제거하기 위해 "-1"을 사용합니다. 다른 모든 것은 다변량 상황에서 표준 로지스틱 회귀입니다.

> fit 

Call: glm(formula = y ~ x - 1, family = binomial(logit)) 

Coefficients: 
data1 data2 data3 data4 data5 data6 
    0.00 0.00 -49.13 0.00 0.00 24.57 

Degrees of Freedom: 6 Total (i.e. Null); 0 Residual 
Null Deviance:  8.318 
Residual Deviance: 2.572e-10 AIC: 12 

이 시점에서 상황이 보입니다. 데이터 3과 6의 인터넷이 왜 그런지는 잘 모르겠습니다.

val <- predict(fit,data.frame(c(1,1,1,1,1,1)), type = "response") 

> val 
     1   2   3   4   5   6 
2.143345e-11 2.143345e-11 2.143345e-11 1.000000e+00 1.000000e+00 1.000000e+00 

논리적으로 나는 잘못된 것을하고 있습니다. 나는 1x6이 아니라 1x2 매트릭스를 기대하고있다. 나는 데이터 프레임 벡터가 y1과 y2에서 "1"(true)이 될 확률을 알려주는 행렬을 원한다.

도움을 주시면 감사하겠습니다.

참고 : Mario의 답글을 기반으로 내 질문의 끝 부분을 업데이트했습니다.

답변

0

인수 newdata는 data.frame이어야합니다. 당신은 이것을 할 수 있습니다 :

aux <- data.frame(c(1,1,1,1,1,1)) 
val <- predict(fit, aux, type = "response") 
+0

먼저 "예측"기능에 데이터 프레임 유형 객체를 입력해야합니다. 둘째, "val"의 출력 값은 1x6 행렬입니다. 나는 벡터 [1,1,1,1,1,1]의 확률이 y1과 y2에서 "1"(참)임을 알려주는 1x2 행렬을 얻으려고합니다. – logic8

+0

대상이 y1이고 다른 대상이 y2이고 출력을 연결하는 모델을 만들 수 있습니까? – Mario

+0

당신이 말하는 것을 봅니다. 제 생각에는 다변량 로지스틱 회귀 분석에서 발견 할 수있는 종속 변수 간에는 상관 관계가 있다고 생각합니다. 50-100 개의 종속 변수가있는 경우 연결된 출력의 런타임이 훨씬 길어질 것입니다. – logic8