2017-05-03 4 views
2

私はたくさんのベータ版を計算しようとしています。残念ながら、いくつかの列はすべてNAです。ここでおもちゃの例です:lmがNAの列を無視する方法

x = structure(c(0.946032318625641, -0.472255854964591, -0.570914946839299, -0.624246840976067, -0.484359645048786, 0.888922481497905, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), .Dim = c(6L, 3L), .Dimnames = list(c("AAPL", "AXP", "BA", "CAT", "CSCO", "CVX"), c("TV", "HG", "PT"))) 
y = structure(c(0.0519592742218189, 0.0148741387994269, 0.0646644308305699, 0.0406382502886822, 0.0454770268265812, 0.0403287646059043), .Names = c("AAPL", "AXP", "BA", "CAT", "CSCO", "CVX")) 
b = lm(y ~ x)$coefficients 

私はそれらを無視するlmを伝えることができますどのように?ベータ版の一部がNAとして戻ってきても構いません。

+0

'のLM(na.action = na.omit)' @Sathishあなたは 'B = LM(Y〜X、na.action = na.omit)$のcoefficients'を意味するか – Sathish

+0

?それはどちらもうまくいかないようです。 – lebelinoz

+0

@lebelinozはい、しかしZheyuan Liの提案を見てください。私はそれをテストしていない。 'na.action'の関数のリストを取得するには、'?na.fail'を読んでください。 – Sathish

答えて

3

私はあなたの主な問題は、素敵なアライメントを達成する方法をあると思います。あなたはループを持つ数多くの線形モデルをフィッティングしているように見えます。設計行列の次元は固定されたままであるが、異なる列が突然消滅する、すなわち異なる反復でNAになることがある。最終的には、素敵な係数行列が必要です。

簡単な解決策は、ゼロの列を持つこれらのNA列を交換することです。このように、設計行列は階数が不足しており、これらのゼロ列の係数はNAになります。

+1

ありがとうございます。 x(、i)== 0))x [、i] = 0'の場合には、 'for(i in 1:ncol(x)私の 'b ='行の前で動作するようです。 NAと0が混在している列も、問題を引き起こしていたのでゼロにすることに注意してください。 – lebelinoz

関連する問題