6

次の R コードを考えてみましょう (最終的に Fortran を呼び出すと思います)。

X <- 1:1000
Y <- rep(1,1000)
summary(lm(Y~X))

summary によって値が返されるのはなぜですか? Y には分散がないため、このモデルは当てはまらないのではないでしょうか? さらに重要なのは、なぜモデルが R^2 ~= .5 なのですか?

編集

コードを lm から lm.fit まで追跡したところ、次の呼び出しが表示されました。

z <- .Fortran("dqrls", qr = x, n = n, p = p, y = y, ny = ny,
   tol = as.double(tol), coefficients = mat.or.vec(p, ny), residuals = y,
   effects = y, rank = integer(1L), pivot = 1L:p, qraux = double(p),
   work = double(2 * p), PACKAGE = "base")

それが実際の適合が起こるように見えるところです。http://svn.r-project.org/R/trunk/src/appl/dqrls.f )を見ても、何が起こっているのか理解できませんでした。なぜなら、私は fortran を知らないからです。

4

3 に答える 3

5

統計的に言えば、何を予測する必要がありますか (「期待する」と言いたいのですが、それは非常に具体的な用語です ;-))? 係数は、「適合しない」のではなく、(0,1) である必要があります。(X,Y) の共分散は、X の分散に比例すると仮定されますが、その逆ではありません。X の分散はゼロではないため、問題はありません。共分散が 0 であるため、X の推定係数は 0 になるはずです。したがって、マシンの許容範囲内で、これが得られる答えです。

ここには統計的な異常はありません。統計上の誤解があるかもしれません。機械の許容誤差の問題もありますが、予測変数と応答値のスケールを考えると、1E-19 程度の係数は無視できる程度です。

更新 1: 単純な線形回帰の簡単なレビューは、このウィキペディアのページにあります。注意すべき重要なことVar(x)は、分母、分子にあるということCov(x,y)です。この場合、分子は 0 で、分母は非ゼロであるため、 aNaNまたはを期待する理由はありませんNA。ただし、なぜxaの結果の係数が でないのかと尋ねる人がいるかもしれません。これ0は、QR 分解の数値精度の問題に関係しています。

于 2012-02-12T01:44:08.890 に答える
2

これは単純に、QR 分解が浮動小数点演算で実装されているためだと思います。

このsingular.okパラメーターは、実際には計画行列 (つまり、X のみ) を参照します。試す

lm.fit(cbind(X, X), Y)

対。

lm.fit(cbind(X, X), Y, singular.ok=F)
于 2012-02-12T00:26:18.663 に答える
2

問題が浮動小数点にある可能性があることに同意します。しかし、私は特異点ではないと思います。

solve(t(x1)%*%x1)%*%(t(x1)%*%Y)QRの代わりに使用してチェックすると、(t(x1)%*%x1)特異ではありません

切片が含まれているx1 = cbind(rep(1,1000,X)ため使用します。lm(Y~X)

于 2012-02-12T01:33:44.263 に答える