循環迴歸我曾嘗試這個QA適用於:"efficient looping logistic regression in R"我自己的問題,但我不能完全使它發揮作用。我沒有嘗試過使用apply,但有人告訴我一個for循環在這裏是最好的(如果有人相信,請隨時解釋!)我認爲這個問題是相當普遍的,不是太深奧的論壇。已有多個變量和輸出的一個子集
這就是我想實現的:我有3個預測變量(性別,年齡,種族)和幾個人86個基因位置的因變量(比例)的數據集。我想要爲每個位置運行雙變量線性迴歸(因此,對於3個預測變量,所以需要86個線性迴歸)。然後,我想以一些易於閱讀的格式輸出結果;我的想法是一個矩陣,其中行=性別,年齡和種族,列= 86個職位。每行*列組合都會有一個p值。然後,我可以調用p值< 0.1(或任何我想要的閾值)來輕鬆查看哪些預測變量與每個位置的比例顯着相關。
這是我到目前爲止的代碼。
BB <- seq.csv[,6:91] #the data frame containing the 86 positions
AA <- seq.csv[,2:4] #the data frame containing the 3 predictor variables
linreg <- matrix(NA,3,86) #make a results vector and fill it with NA
for (i in 1:86) #loop over each position variable
{
for (j in 1:3) #for each position variable, loop over each predictor
{
linreg[i,j] <- lm(BB[,i]~AA[,j]) #bivariate linear regression
}}
無論我如何改變這種(例如,它簡化了遍歷的位置只有一個預測),我仍然得到一個錯誤,我的矩陣是不一樣的長度(項目取而代之的是數不是替換長度的倍數)。事實上,長度(linreg)= 286(3 * 86)和長度(BB)= 86,長度(AA)= 3。我知道後兩個是數據框,而不是矩陣......但如果我將它們轉換爲矩陣,我會得到一個無效的類型錯誤(變量'BB [,i]'的無效類型(列表)')。我不知道如何解決這個錯誤,因爲我只是不明白[R不夠好。我查閱過的書籍應用統計遺傳學有R和藝術[R編程無濟於事,我一直在谷歌搜索整天。而且我還沒有得到的編碼輸出的結果...
我會很感激的一種更好的方式調試任何提示或一些建議編寫這個!謝謝大家。
我想你需要和統計學家交談。我認爲在你嘗試自己編寫代碼之前,你已經頭腦清醒,需要更好地理解這些問題。 – 2013-03-08 22:43:46
如果您發佈數據結構的一部分,它可以幫助您更輕鬆地獲得幫助。嘗試粘貼輸出(head(BB [,6:10]))和'dput(head(AA))'輸出。 – 2013-03-08 22:55:29
這聽起來像是我在博士學習中所做的一些令人遺憾的事情......請與統計顧問交談! – alexwhan 2013-03-09 09:42:47