#3-3 True False
x1 <- c(T,F,T,F)
x2 <- c(F,F,T,T)
!x1
## [1] FALSE  TRUE FALSE  TRUE
x1|x2
## [1]  TRUE FALSE  TRUE  TRUE
x1&x2
## [1] FALSE FALSE  TRUE FALSE
x1||x2
## [1] TRUE
x1&&x2
## [1] FALSE
#3-4 Factor
#1
sex <- c(1,2,1,2,NA)
class(sex)
## [1] "numeric"
mode(sex)
## [1] "numeric"
sex <- factor(c(1,2,1,2,NA),levels=c(1,2),labels=c("F","M"))
class(sex)
## [1] "factor"
mode(sex)
## [1] "numeric"
levels(sex)
## [1] "F" "M"
nlevels(sex)
## [1] 2
sex <- factor(c(1,2,1,2,NA),levels=c(1,2),labels=c("F","M"))
sex
## [1] F    M    F    M    <NA>
## Levels: F M
#2
blood <- c("A","O","O","AB","O",NA)
class(blood)
## [1] "character"
mode(blood)
## [1] "character"
blood <- factor(c("A","O","O","AB","O",NA),levels=c("A","AB","B","O"))
class(blood)
## [1] "factor"
mode(blood)
## [1] "numeric"
levels(blood)
## [1] "A"  "AB" "B"  "O"
nlevels(blood)
## [1] 4
#3
q1 <- c(3,2,2,3,2)
class(q1)
## [1] "numeric"
mode(q1)
## [1] "numeric"
q1 <- factor(c(3,2,2,3,2),levels=c(1,2,3),labels=c("반대","보통","모름"))
class(q1)
## [1] "factor"
mode(q1)
## [1] "numeric"
levels(q1)
## [1] "반대" "보통" "모름"
nlevels(q1)
## [1] 3
q1 <- factor(c(3,2,2,3,2),levels=c(1,2,3),labels=c("반대","보통","모름"),ordered=T)
class(q1)
## [1] "ordered" "factor"
mode(q1)
## [1] "numeric"
levels(q1)
## [1] "반대" "보통" "모름"
nlevels(q1)
## [1] 3
q1 <- factor(c(3,2,2,3,2),levels=c(1,2,3),labels=c("반대","보통","찬성"))

#4
income <- c("Mid","Hi",NA,"Hi","Mid","Hi")
class(income)
## [1] "character"
mode(income)
## [1] "character"
income <- factor(c("Mid","Hi",NA,"Hi","Mid","Hi"),levels=c("Lo","Mid","High"))
class(income)
## [1] "factor"
mode(income)
## [1] "numeric"
levels(income)
## [1] "Lo"   "Mid"  "High"
nlevels(income)
## [1] 3
income <- factor(c("Mid","Hi",NA,"Hi","Mid","Hi"),levels=c("Lo","Mid","High"),ordered=T)
class(income)
## [1] "ordered" "factor"
mode(income)
## [1] "numeric"
levels(income)
## [1] "Lo"   "Mid"  "High"
nlevels(income)
## [1] 3
income
## [1] Mid  <NA> <NA> <NA> Mid  <NA>
## Levels: Lo < Mid < High
#3-4
h5 <- 1/(1:5)
sum(h5)
## [1] 2.283333
#3-5
#1 
X <- matrix(c(1,1,1,1,2,0),nr=3)
X
##      [,1] [,2]
## [1,]    1    1
## [2,]    1    2
## [3,]    1    0
#2
y <- c(1,2,3)
y
## [1] 1 2 3
sst <- var(y)*(length(y)-1)
sst
## [1] 2
#3
XTX <- t(X) %*% X
XTX
##      [,1] [,2]
## [1,]    3    3
## [2,]    3    5
XTy <- t(X) %*% y
XTy
##      [,1]
## [1,]    6
## [2,]    5
#4
det(XTX)
## [1] 6
InvXTX <- solve(XTX)
b <- InvXTX %*% XTy
b
##      [,1]
## [1,]  2.5
## [2,] -0.5
#5
b <- solve(XTX,XTy)
#6
H <- X %*% InvXTX %*% t(X)
H
##           [,1]       [,2]       [,3]
## [1,] 0.3333333  0.3333333  0.3333333
## [2,] 0.3333333  0.8333333 -0.1666667
## [3,] 0.3333333 -0.1666667  0.8333333
H %*% H
##           [,1]       [,2]       [,3]
## [1,] 0.3333333  0.3333333  0.3333333
## [2,] 0.3333333  0.8333333 -0.1666667
## [3,] 0.3333333 -0.1666667  0.8333333
sum(diag(H))
## [1] 2
det(H)
## [1] 0
#7
yhat <- H %*% y
#8
res <- y-yhat
res
##      [,1]
## [1,] -1.0
## [2,]  0.5
## [3,]  0.5
sse <- t(res) %*% res
sse
##      [,1]
## [1,]  1.5
##
x <- c(1,2,0)
y <- c(1,2,3)
m <- lm(y~x)
coef(m)
## (Intercept)           x 
##         2.5        -0.5
predict(m)
##   1   2   3 
## 2.0 1.5 2.5
residuals(m)
##    1    2    3 
## -1.0  0.5  0.5
summary(m)
## 
## Call:
## lm(formula = y ~ x)
## 
## Residuals:
##    1    2    3 
## -1.0  0.5  0.5 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)
## (Intercept)    2.500      1.118   2.236    0.268
## x             -0.500      0.866  -0.577    0.667
## 
## Residual standard error: 1.225 on 1 degrees of freedom
## Multiple R-squared:   0.25,  Adjusted R-squared:   -0.5 
## F-statistic: 0.3333 on 1 and 1 DF,  p-value: 0.6667
anova(m)
## Analysis of Variance Table
## 
## Response: y
##           Df Sum Sq Mean Sq F value Pr(>F)
## x          1    0.5     0.5  0.3333 0.6667
## Residuals  1    1.5     1.5
plot(x,y)
abline(a=coef(m)[1],b=coef(m)[2])

#3-6 
d <- data.frame(name=c('대처','간디','프랭클린'),
                gnder=c(2,1,1),
                ht=c(162,168,178),
                wt=c(71,58,73),
                bld=c(2,3,4),
                consrv=c(3,1,1),
                capital=c(3,1,2),
                nsibling=c(2,4,17),
                bord=c(2,4,15),
                digit=c(3,1,3),
                hair=c(1,NA,1))
d
##       name gnder  ht wt bld consrv capital nsibling bord digit hair
## 1     대처     2 162 71   2      3       3        2    2     3    1
## 2     간디     1 168 58   3      1       1        4    4     1   NA
## 3 프랭클린     1 178 73   4      1       2       17   15     3    1