2011-04-08 157 views
1

我有100個變量,我想用變量var15-v25進行因子分析。要做到這一點,我首先提取變量到另一個對象(如f),&然後運行主成分分析。原始變量的PCA分數的最小二乘法擬合

現在我想將PCA分數與原始數據集合起來,以PCA分數作爲預測變量進行迴歸分析。

任何人都可以請建議我合併這兩個數據集的方法。我使用的代碼如下:

spss_data_factor <- sqldf("SELECT Respondent_Serial,Q4_01_Q4,Q4_02_Q4,Q4_03_Q4,Q4_04_Q4,Q4_05_Q4,Q4_06_Q4,Q4_07_Q4,Q4_08_Q4,Q4_09_Q4,Q4_10_Q4 FROM spss_data_rel") 
f <- princomp(spss_data_factor1, cor = TRUE) 
summary(f, loadings=TRUE) 
f$scores[, 1:5] 
+0

向我們展示原始數據的樣本。 – 2011-04-08 16:31:30

+0

你的問題實際上是什麼? AFAICS,它僅僅與FA有關。你只是想在一個文件中附加因子分數表?請提供更多詳細信息... – aL3xa 2011-04-08 17:46:45

+0

我認爲你實際上在SPSS中調用R這裏對嗎?那麼合併2個文件的含義是,你想在SPSS文件中獲得因子分數作爲額外變量?我不知道該怎麼做,但可以用'write.table()'將它寫入文件並將其導入到SPSS中。雖然可能更簡單一些。 – 2011-04-08 17:49:32

回答

4

請避免使用從R基本包名稱 - factor是一種保留。它會工作得很好,但它可能會讓你在某個開發階段感到困惑......而你的factor不是一個文件,它是princomp類的R對象。

無論如何,你想定義一個迴歸模型與因子分數作爲預測?蛋糕......也沒有合併的部分是必需的:

fa <- princomp(mtcars, cor=TRUE) 
fa_scores <- fa$scores 
fit <- lm(mtcars$hp ~ fa_scores) 
summary(fit) 

Call: 
lm(formula = mtcars$hp ~ fa_scores) 

Residuals: 
     Min   1Q  Median   3Q  Max 
-2.521e-14 -7.825e-15 -2.416e-15 5.622e-15 4.329e-14 

Coefficients: 
        Estimate Std. Error t value Pr(>|t|)  
(Intercept)  1.467e+02 2.862e-15 5.125e+16 <2e-16 *** 
fa_scoresComp.1 -2.227e+01 1.113e-15 -2.000e+16 <2e-16 *** 
fa_scoresComp.2 -1.679e+01 1.758e-15 -9.549e+15 <2e-16 *** 
fa_scoresComp.3 9.449e+00 3.614e-15 2.614e+15 <2e-16 *** 
fa_scoresComp.4 -4.567e+00 5.513e-15 -8.285e+14 <2e-16 *** 
fa_scoresComp.5 -3.644e+01 6.055e-15 -6.019e+15 <2e-16 *** 
fa_scoresComp.6 -4.821e+00 6.222e-15 -7.747e+14 <2e-16 *** 
fa_scoresComp.7 -1.010e-01 7.783e-15 -1.297e+13 <2e-16 *** 
fa_scoresComp.8 1.501e+01 8.164e-15 1.838e+15 <2e-16 *** 
fa_scoresComp.9 -3.886e+01 1.031e-14 -3.768e+15 <2e-16 *** 
fa_scoresComp.10 1.672e+01 1.255e-14 1.333e+15 <2e-16 *** 
fa_scoresComp.11 -1.731e+01 1.928e-14 -8.979e+14 <2e-16 *** 
--- 
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Residual standard error: 1.619e-14 on 20 degrees of freedom 
Multiple R-squared:  1, Adjusted R-squared:  1 
F-statistic: 5.053e+31 on 11 and 20 DF, p-value: < 2.2e-16 

您可能還需要原始數據集轉換矩陣,以開展ncol(mtcars)迴歸,在響應矩陣中的每一列。 lm函數支持response ~ terms公式,其中response可以是一個矩陣。見?lm

如果響應是線性模型 通過最小二乘 分別裝配到矩陣的每一列的矩陣。

所以,你可以做這樣的事情:

fit2 <- lm(as.matrix(mtcars) ~ fa_scores) 
summary(fit2) # handle with care! =) 

我希望這是有益的...


無論如何,如果你想進行因子分析,請見this link。你應該安裝William Revelle的psych包。

0

謝謝aL3xa!我找到了解決方案的答案。我會把它放在這裏,因爲有人會覺得它有幫助。

## Factor Analysis 
library(psych) 
spss_data_fac=read.csv("D:\\Arijit\\spss_data_rel_01.csv") 
fa.parallel(spss_data_fac[,40:49]) 
spss_data_fac_01=factanal(spss_data_fac[,40:49],factors=2,scores="regression",rotation="promax") 
spss_data_fac_01$scores 
## Factor Analysis factors are used for logistic regression 
spss_dat_reg=glm(spss_data_fac$Q8~spss_data_fac_01$scores+spss_data_fac$Q14) 
summary(spss_dat_reg) 

問候, 一個