Monday, December 21, 2009

單因子變異數分析(1)--獨立樣本

1.先讀取資料,資料也如同以往放在D:test.csv (data<-read.table(test.csv),header=T,sep=",")
各項資料說明如下:
  • a->演講法
  • b->討論法
  • c->電腦輔助教學法
  • treatment->此研究有一個因子(三個水準)
  • score->考試分數

2.本例為單因子獨立樣本檢定,公式如下:
  • aov.test<-aov(data$score~data$treatement)
  • summary(aov.test)

3.結果如下圖:

Tuesday, June 23, 2009

匯入SPSS資料檔並實作因素分析(2)

  • 為了要找出各變項在各因素之組型負荷量(pattern loadings),因此我們以psych套件中的factor.pa()函數來計算。未轉軸為fpex_n,使用varimax法轉軸為fpex_v。(下方的指令同時輸入估計分數)
fpex_n<-factor.pa(na.omit(ex3_2[,2:17]),3,rotate="none",scores=T,residuals=T)
fpex_v<-factor.pa(na.omit(ex3_2[,2:17]),3,rotate="varimax",scores=T,residuals=T)
  • 未轉軸的組型負荷量。
  • 使用varimax轉軸的組型負荷量。
  • 和之前結果相同也就是使用3個因素可以解釋67%的變異量。
  • 最後我們將轉軸後的估計分數加以輸出到新資料檔中以利後續的使用。
write.table(fpex_v$scores,"fpex_vscore.csv",sep=",",col.names=NA)

Saturday, June 20, 2009

匯入SPSS資料檔並實作主成份分析(2)

接下來我們將以匯入後的資料spss_data進行主成份分析:
  • 首先確定匯入的資料共有8個向度(SYMPTOMS→後遺症、ACTIVITY→活動量、SLEEP→睡眠量、EAT→食量、APPETITE→食慾、SKIN→皮膚反應、FACT1_1、FACT2_1)。但是我們要用到的只有前6個向度(因為題目是要探討此六個變項並縮減之)。
  • 我們使用額外的變數data儲存此6個向度的資料:
data<-spss_data[,1:6]
  • 先檢查correlation matrix的各項係數,看看是否有許多低於.3的,若有則須刪除變項。
corm<-cor(data)
  • 結果如下圖所示,顯示大多數的係數均大於.3,故適合進行主成份分析。
  • 然後載入nFacrotrs套件(若沒有則請先安裝),利用它來找出各變項之eigen value以及可解釋的變異量,我們將結果存入eig_data變數中。
eig_data<-principalComponents(corm)

  • 結果如下圖所示,其中eigen value大於1的只有二個主成份,故可保留二個主成份。
  • 之後我們再使用Scree Plot來看看應保留幾個主成份,結果如下圖,由目視的結果來看特徵值是在第二個因素陡升,故也可保留2個主成份。
plotuScree(eig_data$values)


  • 因此,我們將以psych套件中的principal函數來抽取二個主成份,結果如下圖:
principal(corm,2,rotate="none")


  • 由上圖我們可知抽取兩個主成份所能解釋的變異量為66%,接下來我們可以依據各變項在各成份所占的比重,來為兩個主成份命名。
  • 另外,我們亦可以輸出以迴歸法計算之主成份分數做為新的變項,以利後續進一步的分析之用。
new_data<-principal(data,2,rotata="none",scores=T)$scores

匯入SPSS資料檔並實作主成份分析(1)

本文要說明如何匯入SPSS資料檔,並且進行主成份分析。步驟如下(在此引用王保進教授-『多變量分析-套裝程式與資料分析』一書中,第三章的資料檔EX3-1.sav。):
  • 先確定是否有foreign套件,如果沒有請使用Install Package安裝,如果有則要先載入該套件。
  • 將SPSS資料檔案ex3-1.sav複製到D:\ex3-1.sav,並且切換R的工作目錄至D:。
  • 將原始資料讀入到spss_data的變數之中:
spss_data<-read.spss("ex3-1.sav")
  • 讀入後顯示變數的內容會發現資料並不是以data frame的型式存在,若要將資料以data frame的型式存在,可以下列指令:
spss_data<-read.spss("ex3-1.sav",to.data.frame=T)
  • 接下來即可使用主成份分析的方法來進行資料分析。

Thursday, June 18, 2009

匯入SPSS資料檔並實作因素分析(1)

本文同樣引用王保進教授(2004)在『多變量分析-套裝程式與資料分析』一書中,第三章的資料檔EX3-2.sav來進行因素分析。步驟如下(資料檔同樣置於D:\EX3-2.sav):
  • 載入foreign套件,並且將SPSS資料檔匯入到變數ex3-2中。
ex3_2<-read.spss("EX3-2.sav",to.data.frame=T)
  • 計算correlation matrix(相關係數矩陣),並將此矩陣的內容存至corex.csv檔中以及determinant(行列式值),為避免發生遺漏值的狀況,因為在計算前要加上na.omit()函數;同時,也要將讀入資料的第一欄(ID)刪除。
corex<-cor(na.omit(ex3_2[,2:17]))
write.table(corex,"corex.csv",sep=",",col.names=NA)

det(corex)
  • 由上述操作的結果可以發現各變項間相關係數小於.3的甚少,同時行列式值8.044e-06也不等於0,表示適合進行因素分析。
  • 接下來我們以rela套件中的paf(principal axis factoring)來進行因素分析,並且看看其KMO值、MSA值等等。
pafex<-paf(as.matrix(na.omit(ex3_2[,2:17])))
  • 首先以Scree Plot來看看大概會有幾個因素存在,如下圖所示陡線在第三個因素時陡升,故保留3個因素應為合理。
plotuScree(pafex$Eigenvalues[,1])

  • 然後看KMO值(.879),已達到『有價值的』(meritorious)標準。
pafex$KMO
  • 接下來看看Bartlett's test of sphericity的值(3364.7)。
pafex$Bartlett
  • 由以上兩項結果表示資料適合進行因素分析;之後我們來看看各變項的取樣適當性係數,由資料顯示除了RUGGED此一變項係數為.6948較低外,其餘變項之取樣適當性均高,故可考慮刪除此一變項,再進行因素分析,本文先不探討刪除的狀況。
pafex$MSA
  • 接下來我們來看看各變項的初始共同性(initial communalities)以及萃取後的共同性(extraction communalities),共同性愈高表示該變項愈適合進行因素分析。
pafex$Communalities