728x90

이 내용은 SAS 일반에서 SAS/IML 의 내용을 R로 바꾸어 본 것입니다.

SAS에서 행렬계산을 할 때에는 SAS/IML 이란 제품을 구입해야 하지만

R에서는 기본 데이터객체(그냥 변수라고 쉽게 생각)에서 행렬(matrix)를 지원하므로

공짜로, 그리고 다양한 기능을 자유자재로 사용할 수 있습니다.

SAS/IML과 R과의 문법은 거의 비슷합니다.

전치행렬을 구할 때 SAS에서는 `, R에서는 t( ) 함수

역행렬을 구할 때 SAS에서는 INV 를 ,R에서는 solve()를 사용하는 등

조금 차이가 있습니다.

SAS에서는 SAS/BASE, SAS/STAT과 SAS/IML을 자유로이(?) 왔다 갔다 할 수 있지만

R에서는 왔다 갔다 할 것 없이, 그냥(?) 편하게 사용하면 됩니다.

 

#=== 6. 상관분석과 회귀분석
```{r}
x <- matrix(c(1, 1, 1, 2,1, 3, 1, 4, 1, 6, 1, 7),byrow = T,ncol=2)
x
y <- matrix(c(21, 32, 43, 56, 67, 76))
y
t(x)
xpx <- t(x) %*% x; xpx
xpy <- t(x) %*% y; xpy                                      

xpxi <- solve(xpx)
beta <- solve(t(x) %*% x) %*% t(x) %*% y
beta
yhat <- x %*% beta
resid <- y-yhat;             
sse <- sum(resid*resid)   # sum of squares error         
sse
n <- nrow(x)             # number of observations       
k <- ncol(x)            # number of variables
dfe <- n-k              # degrees of freedom error        
dfe
mse <- sse/dfe;              # mean square error             
mse
rmse <- sqrt(mse)           # root mean square error         
rmse
?dt
sum((y-mean(y))^2)
rsquare <- 1 - sse / sum((y-mean(y))^2)                                  
rsquare
covb <- solve(t(x) %*% x) * mse;                                            
covb
diag(covb)
stderr <- sqrt(diag(covb))
tratio <- beta / stderr 
tratio
probt <- pt(tratio,dfe)
(1-probt)*2

lm(y~x)
summary(lm(y~x))
```

+ Recent posts