2011年4月29日 星期五

R軟體的迴歸分析練習

這學期應用線性統計模式的課程必須用R軟體計算迴歸,
一開始覺得很棘手,
後來發現R的語法似乎比SAS直觀,需要什麼就寫什麼,
摸索了一整天,終於計算並檢驗了一個多元迴歸式。

雖然用SPSS,不用1分鐘答案就出來了,
但是用R寫完作業,再用SPSS驗證,發現答案一樣,還是很高興。

回顧研究所以來,使用過好幾個需要自己寫程式的軟體,
但是目前的程度只會使用常用的功能,
有許多訣竅還需要查詢軟體操作手冊才知道,
但是如果不是要以統計軟體維生,或許略懂即可,而不需要精通。

由於寫出R語法實在太感動了,
因此附上作業語法,以茲慶祝 :)


data=read.table('D:/reg_hw2_1.txt',header=T)
X=as.matrix(cbind(rep(1,50),data[,-4]));X
Y=as.matrix(data[,4]);Y
XX=solve(t(X)%*%X)
XY=t(X)%*%Y
beta=XX%*%XY
options(digits=4)
beta
N=length(Y)
K=4
Ye=beta[1]*X[,1]+beta[2]*X[,2]+beta[3]*X[,3]+beta[4]*X[,4]
erro=Y-Ye
sum(erro^2)
sigma2=sum(erro^2)/(N-K)
sigma2
sigma=sqrt(sigma2)
sigma
var.beta=sigma2*XX
var.beta
diag(var.beta)
sqrt(diag(var.beta))
b=matrix(c(-1.6032,0.4384,0.3651,0.8387),4,1);b
t(b)
J=matrix(1,50,50)
SSR=t(b)%*%t(X)%*%Y-(1/50)*t(Y)%*%J%*%Y;SSR
SSE=t(Y)%*%Y-t(b)%*%t(X)%*%Y;SSE
MSR=SSR/3;MSE
MSE=SSE/46;MSE
R2=1-sum(erro^2)/sum((Y-mean(Y))^2)
R2
R22=1-(1-R2)*(50-1)/(50-4)
R22

4 則留言:

  1. R可說是我最討厭的軟體...可是又不能不用他,真的很強大.....不過你一個一個定義喔@@我都套上package以後就直接跑了 XDDD

    回覆刪除
  2. To Antonio:
    這是我第一次用R,
    因此花了許多時間熟悉操作介面與語法。
    因為助教要求不可以用package(而且我也不知道子怎麼用),
    所以只好自己一個步驟一個步驟寫了!

    只是,用R計算一個多元迴歸式,
    不免感嘆割雞焉用牛刀......

    回覆刪除
  3. 禁用package真是太可怕了@@我們老師都說我們是來學統計,不是來學寫軟體的,通通用package! XD 不過這個應該是當作練習吧!後來更複雜以後不用package應該要寫很久,緩不濟急~

    回覆刪除
  4. To Antonio:
    現在確實是在寫作業,練習熟悉軟體。
    至於未來會不會繼續使用R作分析就還不確定了......

    回覆刪除