これを聞いて申し訳ありません...それは確かにFAQであり、ちょっとばかげた質問ですが、私を悩ませています. 次のような、データフレーム内のすべての数値列の分散を取得したいとします。
df <- data.frame(x=1:5,y=seq(1,50,10))
当然、私は試します
var(df)
私が望んでいたものを私に与える代わりに、それは次のようなものになります
x y
2.5 250
私はこれを取得します
x y
x 2.5 25
y 25.0 250
対角線に分散があり、他の場所に共分散があります。help(var) を検索して、「var は cov への別のインターフェイスにすぎない」と読むと、これは理にかなっています。もちろん、分散は変数とそれ自体の間の共分散です。出力は少し紛らわしいですが、対角線に沿って読み取るか、 diag(var(df))
、sapply(df, var)
、またはを使用するか、とを繰り返しlapply(df, var)
呼び出すことで分散のみを生成できます。var
df$x
df$y
しかし、なぜ?分散は、日常的で基本的な記述統計量であり、意味に次ぐものです。それをデータフレームの列に適用するのは完全に簡単ではないでしょうか? 分散のみを求めたのに、なぜ共分散を教えてくれるのですか? ちょっと興味があるんだけど。これに関するコメントをありがとう。