통계 모형에 적합하고 예측 된 값 찾기


12

다음 데이터가 있고 회귀 모델을 실행한다고 가정 해 봅시다.

df=data.frame(income=c(5,3,47,8,6,5),
              won=c(0,0,1,1,1,0),
              age=c(18,18,23,50,19,39),
              home=c(0,0,1,0,0,1))

한편으로는 소득을 예측하기 위해 선형 모델을 실행합니다.

md1 = lm(income ~ age + home + home, data=df)

둘째, 원 변수를 예측하기 위해 로짓 모델을 실행합니다.

md2 = glm(factor(won) ~ age + home, data=df, family=binomial(link="logit"))

두 모델 모두 예측 변수 반응 범주, 적합치 및 모형 예측 값을 사용하여 테이블 또는 데이터 프레임을 생성하는 방법이 궁금합니다.

선형 모델의 경우 다음과 같습니다.

age  fitted_income  predicted_income
18    3              5 
23    3              3
50    4              2
19    5              5
39    6              4

home   fitted_income    predicted_income
0       5               6       
1       3               9

또는 각 데이터 포인트에 대한 것일 수도 있습니다. 따라서 x_i 데이터 포인트의 경우 적합하고 예측 된 값은 다음과 같습니다.

id   age  fitted_income  predicted_income
1     18    3              5 
2     23    3              3
3     50    4              2
4     19    5              5
5     39    6              4
  1. 통계적인 관점에서 볼 때 그러한 사업은 유용합니까? 그 이유는 무엇?

  2. R에서 어떻게 할 수 있습니까? (이름 (md1)을보고 모델에서 가져올 수있는 것을 찾았지만 그 이후로는 진행하지 못했습니다)

감사!


1
# 2 다시 : stat.ethz.ch/R-manual/R-patched/library/stats/html/...를 . 다시 # 1 : 무엇에 유용합니까? 결국 무엇을 성취하고 싶습니까?
whuber

모델이 각 개별 데이터 포인트에 대해 "예측 적"인지 여부를 알려주는 데 유용합니다. 모든 행 / ID를보고 "정확한"값을보기 위해 실제 / 적합 된 값과 예측 된 값을 비교할 수 있어야합니다.
ATMathew

공변량과 관련하여 실제 반응이 어떻게 변하는 지 확인하기 위해 테이블을 스캔하려면 유용하다고 생각합니다. 그래도 귀하의 용어를 이해하지 못합니다. 적합치와 예측치가 같아야합니다. 달라져야 할 것은 관측 값과 적합치입니다.
Michael R. Chernick

2
x = cbind (df, md1 $ fitted.values) colnames (x) = c (colnames (df), "predicted")
RioRaider 2012 년

2
관측 값과 적합치의 차이는의 residuals명령 을 통해 사용할 수 있습니다 R. cbind원본 데이터 프레임에 연결하는 데 사용 합니다.
whuber

답변:


20

R의 모형 객체에 대해서는 약간주의해야합니다. 예를 들어 모형 값에서 훈련 된 데이터의 적합치와 예측값이 동일해야 glm()하지만 올바른 추출기 함수를 사용할 때의 값이 동일하지 않아야합니다.

R> fitted(md2)
        1         2         3         4         5         6 
0.4208590 0.4208590 0.4193888 0.7274819 0.4308001 0.5806112 
R> predict(md2)
         1          2          3          4          5          6 
-0.3192480 -0.3192480 -0.3252830  0.9818840 -0.2785876  0.3252830

기본값 predict.glm()은 선형 예측 변수의 스케일로 예측을 반환 하기 때문 입니다. 피팅 된 값을 얻기 위해 링크 함수의 역수를 해당 값에 적용하려고합니다. fitted()우리를 위해 그것을하고, 우리는 predict()또한 사용하여 올바른 값을 얻을 수 있습니다 :

R> predict(md2, type = "response")
        1         2         3         4         5         6 
0.4208590 0.4208590 0.4193888 0.7274819 0.4308001 0.5806112

마찬가지로 residuals()(또는 resid()); 에 저장된 값은 md2$residuals있는 작업 잔차는 당신이 원하는 것을 할 가능성이 있습니다. 이 resid()방법을 사용하면 원하는 잔차 유형을 지정할 수 있으며 유용한 기본값이 있습니다.

를 들어 glm()모델이 같은 충분합니다 :

R> data.frame(Age = df$age, Won = df$won, Fitted = fitted(md2))
  Age Won    Fitted
1  18   0 0.4208590
2  18   0 0.4208590
3  23   1 0.4193888
4  50   1 0.7274819
5  19   1 0.4308001
6  39   0 0.5806112

lm()모델에 대해 비슷한 것을 수행 할 수 있습니다 .

R> data.frame(Age = df$age, Income = df$income, Fitted = fitted(md1))
  Age Income    Fitted
1  18      5  7.893273
2  18      3  7.893273
3  23     47 28.320749
4  50      8 -1.389725
5  19      6  7.603179
6  39      5 23.679251
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.