2012-07-17 31 views
1

我正在執行線性迴歸分析(y = xb,用給定的[nx1]向量y和[nxm]矩陣x對b求解相當大的一組數據,使用regstats()函數Matlab統計工具箱,並循環一系列矩陣/矢量對。問題是如果列中有全零,regstats會返回NaN,因爲它不能執行迴歸。在我所有的x矩陣中有零列,但它們並不總是出現在相同的列號中。由於我的x-矩陣中的每列代表一個現實世界變量,我不能簡單地刪除零列並運行迴歸。我需要刪除零,記住哪些列已被刪除,運行迴歸,然後將0值合併到b向量結果中適當的位置。這樣,我的所有結果都表示相同順序的相同數量的變量,其中特定變量未包含在迴歸中的位置爲零。我用一小組測試數據手動完成了這項工作,但現在我需要運行它以獲得大約800個迴歸對,所以我需要一些方法來自動搜索和替換零列。爲regstats函數刪除零列

回答

1
IZEROS = find(all(M==0)); 

IZEROS將是具有全部爲零的列的索引列表。

1
allzero = all(x == 0, 1); 
goodcols = find(~allzero); 

b = zeros(m,1); 
b(goodcols) = % solution to problem, taking into account only goodcols