2021-07-20

단순회귀 모형

데이타

food = read.table(url("http://www.principlesofeconometrics.com/poe4/data/dat/food.dat"),header=F)
head(food)         
##       V1    V2
## 1 115.22  3.69
## 2 135.98  4.39
## 3 119.34  4.75
## 4 114.96  6.03
## 5 187.05 12.47
## 6 243.92 12.98

데이타 요약

summary(food)      # Summary statistics 
##        V1              V2       
##  Min.   :109.7   Min.   : 3.69  
##  1st Qu.:200.4   1st Qu.:17.11  
##  Median :264.5   Median :20.03  
##  Mean   :283.6   Mean   :19.60  
##  3rd Qu.:363.3   3rd Qu.:24.40  
##  Max.   :587.7   Max.   :33.40

데이타 그림

plot(food)         # Plot matrix 

모형

\[ Y_{i} = \alpha + \beta X_{i} + e_{i} \]

변수

x = food[,2]   # Income
y = food[,1]   # Food Expenditure

추정

reg <- lm(y ~ x)

추정 결과

summary(reg)  
## 
## Call:
## lm(formula = y ~ x)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -223.025  -50.816   -6.324   67.879  212.044 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   83.416     43.410   1.922   0.0622 .  
## x             10.210      2.093   4.877 1.95e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 89.52 on 38 degrees of freedom
## Multiple R-squared:  0.385,  Adjusted R-squared:  0.3688 
## F-statistic: 23.79 on 1 and 38 DF,  p-value: 1.946e-05

b1, b2

b1 <- coef(reg)[[1]] 
b2 <- coef(reg)[[2]]

b1
## [1] 83.416
b2
## [1] 10.20964

예측

N <- 40
sde <- 89.52
y1 <- b1+b2*x+rnorm(N, mean=0, sd=sde)

y2 <- data.frame()
y2 <- cbind(y1, y)

예측 (1회)

matplot(y1, type='l', col=1:40,
        xlab='Income', ylab='Food Expenditure', 
        main ='Prediction N=1 ')

예측 (1회)

matplot(y2, type='l', col=1:40,
        xlab='Income', ylab='Food Expenditure', 
        main ='Food Expenditure vs. Prediction ')

예측 (1,000회)

b1 <- coef(reg)[[1]] 
b2 <- coef(reg)[[2]]
yy <- data.frame()

trial <- 1
trials <- 1000
while(trial <= trials) {
  y3 <- b1+b2*x+rnorm(N, mean=0, sd=sde)
  yy <- rbind(yy, t(y3))
  trial <- trial + 1
}

예측 (1,000회)

matplot(t(yy), type='l', col=1:40,
        xlab='Income', ylab='Food Expenditure', 
        main ='Prediction N=1000 ')

화일 저장

sink(‘ch4.out’)

# Least sqaures prediction (one time) 

y1
##  [1] 146.09925 184.51946 164.23597  66.90804 163.66636 283.37333 159.99964
##  [8] 267.71627 338.42453 265.58164  92.38219 264.84892 329.20575 351.52303
## [15] 228.88673 195.29077 196.42103 193.51222 472.06960 372.72661 102.05845
## [22]  94.95207 276.51248 291.10323 211.77755 397.03806 259.19405 201.16944
## [29] 254.41617 280.35226 193.98679 502.49304 266.59672 159.61452 291.44410
## [36] 364.92933 400.97678 394.07836 596.85796 509.90968

sink()

참고자료