2016-06-17 77 views
0

我正在試圖擬合一個迴歸模型來解釋獨裁者遊戲中的捐款。由於我有很多變量,我想用'for'循環自動執行該過程。現在我從單變量模型開始。 當我打印/總結適合fit[1:24]時,只顯示截距和係數。這似乎是p值不存儲?lm in for循環沒有存儲p值? (in R)

predictor<-0 
fit<-0 
dictatorgame<-mydata$dictatorgame 
sumres<-0 
pVal<-0 

for(i in 1:24) #24 predictor variables stored in column 1-24 in mydata 
{ 
predictor<-mydata[i] 
unlist(predictor) 
fit[i]<-lm(dictatorgame~unlist(predictor)) 
} 

我嘗試了兩種不同的解決方案,我發現這裏的SO,他們兩人似乎認爲的對象是原子:

sumres[i]=summary(fit[i]) 
pf(sumres[i]$fstatistic[1L], sumres[i]$fstatistic[2L],sumres[i]$fstatistic[3L], lower.tail = FALSE) 

pVal[i] <- (fit[i])$coefficients[,4] 

但最後總是得到錯誤消息$ operator is invalid for atomic vectors

+0

'predictor <-m​​ydata [i]'似乎是錯的。如果'mydata'是一個data.frame,那麼它應該是'predictor <-m​​ydata [,i]'。 – Alex

+0

是的,這是我所做的更清潔的解決方案('unlist(predictor)')。在我的代碼中改變了它之後,我仍然沒有看到p值(截距和係數似乎是正確的)。 – YaeVo

回答

2

我生成了一些數據來執行多個迴歸。最後,您可以找到輸出列表的前三個元素。這是你想要的嗎?

dependent <- rnorm(1000) 
independent <- matrix(rnorm(10*1000), ncol = 10) 

result <- list() 
for (i in 1:10){ 
    result[[i]] <- lm(dependent ~ independent[ ,i]) 
} 

lapply(result, function(x) summary(x)$coefficients) 

[[1]] 
        Estimate Std. Error t value Pr(>|t|) 
(Intercept)  -0.02890665 0.03167108 -0.9127144 0.3616132 
independent[, i] -0.04605868 0.03138201 -1.4676776 0.1425069 

[[2]] 
        Estimate Std. Error t value Pr(>|t|) 
(Intercept)  -0.03142412 0.03161656 -0.9939134 0.3205060 
independent[, i] -0.03874678 0.03251463 -1.1916723 0.2336731 

[[3]] 
        Estimate Std. Error t value Pr(>|t|) 
(Intercept)  -0.03208370 0.03162904 -1.0143749 0.3106497 
independent[, i] 0.02089094 0.03189098 0.6550737 0.5125713 
+0

就是這樣,它的工作原理!謝謝。你介意闡述兩件事情嗎? 1.'result [[i]]'雙括號如何解釋? 是'函數(x)彙總(x)$係數'的避免原子向量誤差的解決方法? – YaeVo

+1

Yaevo:結果是一個列表,''[[''訪問一個元素(這裏是數字i)''lapply'爲每個迴歸提取係數,輸出仍然是一個列表。你的原子錯誤是由於別的原因造成的。如果只想提取p值,則可以使用:'lapply(result,function(x)summary(x)$ coefficients [,「Pr(> | t |)」]'還要注意,如果只提取你可能有興趣將所有的東西都與例如'do.call(「cbind」,結果)結合起來使用p-值' –

+0

我也不確定你的錯誤信息是從哪裏來的,我不能用我的例子重現它。 ,但是,你不能將'lm'對象存儲在一個向量中,你必須將它存儲在一個列表中,我建議閱讀關於R的數據結構。如果仍然有不清楚的地方,只需要問。 – Alex