アプリ版:「スタンプのみでお礼する」機能のリリースについて

こんにちは。3名の英語のテスト 71、80、89の平均と標準偏差と分散を求めたのですが、私がRで計算して出た答えが正解として載っている回答と違うんです。どちらが正しいのでしょうか?また、なぜ私のRの答えが違ってしまうのかの理由が分かる方、何が間違っているか、教えていただけましたら助かります。よろしくお願いいたします。

正解
平均:80
標準偏差:7.35
分散:54

私のRの答え      
平均:80
標準偏差(sd):9
分散(var):81

ちなみに計算したのは
> x<-c(71, 80, 89)
> mean(x)
[1] 80
> var(x)
[1] 81
> sd(x)
[1] 9

A 回答 (6件)

#2です。



Excelには、いわゆる昔風の「標本(全数の)」標準偏差を求める関数として、stdev.pなどがあります。pが付きます。pは「ポピュレーション:全数の」の意味です。
pが付かないstdevは不偏分散から求めた「母」標準偏差です。「母」は「推定の」という意味があるのは既に述べた通りです。

Rには、(n-1)で割ったものしかありません。「不偏」だけです。nで割ったpが付いた関数を探すだけ無駄です。

前の投稿で、標準正規乱数を使ったシミュレーションより「不偏」を使わないと、推定がおかしいことを1万回のテストで示しました。一部のサンプルから「母」を推定するときは「不偏」を使いましょう。

ですが、「そのサンプル集団で」の外れ値を見つけたいときにマハラノビスの汎距離を求めるというケースがありますが、このとき「不偏」でない「標本の(全数の)」分散共分散行列を引数にすることが必要です。このようなケースでは、
*(n-1)/n
を付けるのが定石となっています。

Rは、多くの統計家が使用するソフトで、企業でも用いています。使いこなすことができれば強力な武器になります。
    • good
    • 0
この回答へのお礼

再度詳しいご説明ありがとうございます。Excel、Rについても教えて頂いて本当に助かりました。なるほど、pをつけなくてはですね。分散分析など丁度これからなので、*(n-1)/n、覚えておきます。マハラノビスの汎距離、調べておきます。

先ほど教えて頂いたスクリプト早速Rでやってみました。
> mean(sig)
[1] 0.8452755
> hist(sig)
>   
答えとヒストグラム、出ました。あれだと、1から中心がずれて正規分布ではない、ってことを表しているのですよね?
(あっていると良いのですが。。笑)

kamiyasiro様の足元にも及ばないレベルでも私には十分だと思うので、そこまで行ける様、Rを使いこなせる様頑張ります。夏休みに総復習、おかげさまでよいスタートが切れました。本当にありがとうございました。大変勉強になりました。

お礼日時:2019/08/12 18:19

#2です。



コメントありがとうございました。

> テキストの、不偏分散は「標本分散と異なるのは、偏差の2乗和をnではなく(n-1)で割っているところです。」とあります。これで正しいですよね?

はい。正しいです。ただし、このテキストで「標本分散」は昔風の「全数の」の意味で使われています。新JISには沿っていません。

> 問題はRのようです。Rの授業で使っているテキストのvar(x) やsd(x)の記述の但し書で「分散(不偏分散)は、個々の値とデータの平均値との差を2乗したものを全て足し合わせて、データの個数から1を引いた値で割ったものです。また、標準偏差は、分散の平方根を取った値です。」とありました。この通りであれば、 kamiyasiro様がおっしゃっていることと同じで正解と同じ結果がでるはずですよね?なのに、先述の結果がでてしまっています。

ご質問に書いてある

> x <- c(71, 80, 89)
> mean(x)
[1] 80
> var(x) # この値は次の説明です。
[1] 81
> sd(x)
[1] 9
> sqrt(var(x)) # 分散の平方根は標準偏差になる
[1] 9

のとおり何の間違いもバグはありません。不偏分散としては正解です。偏差平方和は、

> x <- c(71, 80, 89)
> t(x-mean(x)) %*% (x-mean(x)) # これは偏差平方和(行列計算を使用)
[,1]
[1,] 162

偏差平方和はこのとおり162なので、これを(n-1)=2で割れば81です。
Rが与えた分散は、偏差平方和を2で割った値なので、不偏分散です。
なんら間違いはありません。

Rが出した81に、81×2÷3という操作をすると、昔風に言う標本分散54になります。

> なんとRをMacで使うと、バグなのか、よく変な結果になるのですが、

そんなことはありませんよ。
    • good
    • 0
この回答へのお礼

再度補足ありがとうございます!大変助かります。私も、今見直して、あれ、言った通りになってる、、と気づき、コメントしようと思ったところでした。今回は、私の勘違いでしたが、RをMacで使うとわりと頻繁に問題が起きるんです。その為、今回もかと疑ってしまいました。失礼致しました。標本分散をRで出す方法はないのか探してみます。Ecxcelでできることを教えて頂いたので、Excelを使えばよいとも思いますが、後期の授業はRで多変量解析をやるので、今しばらくRを使ってみようと思っています。
大変勉強になりました。本当にありがとうございます。また質問を投稿することがあるかと思います。その際には、ぜひまたよろしくお願い致します。

お礼日時:2019/08/12 13:24

#2です。



お恥ずかしながら、#2の回答の最後を間違えてしまいました。n=11でやってみるところの、*2/3が間違いです。

n=11のケースでは、*10/11にしないといけませんね。var(x)は、(n-1)で割ってあるので、それを掛けて再度nで割る、すると不偏で無い「分散」(昔風にいうと標本分散(標本そのものの性質である分散))になります。

すみませんでした。
    • good
    • 0
この回答へのお礼

補足ありがとうございます。大変助かります。なるほど。。それでは*10/11でやってみます。

お礼日時:2019/08/12 12:32

#2です。



私は敢えて使わなかったけど、「標本」、「標本」分散、「標本」標準偏差について。

Wikiで見ると、標本分散はnで割った分散です。「Sample Variance」で調べてみて下さい。ところが、#1さんは(n-1)で割る方を「標本」と言ってみえます。

かつて(私が統計を学んだ数十年前)は、標本分散というとnで割る「全データの分散」のことだったのですが、Z 8101-1:2015 (ISO 3534-1:2006) 統計用語で、(n-1)で割る「サンプルの分散」(不偏分散)に変わったのです。これはJISというよりISOの暴挙なのです。

#1さんは、新時代(2015年)の言葉で書いてみえますが(最後に断りも書かれていますが)、ご質問者はこのような背景があることは知っておいて下さい。大学へ行くと、全データの意味で「標本」を使う生きた化石のような先生方が多数おられます。

なお、母・・・というのは、「全データの」とはちょっと異なり、「推定上の」というような意味を持ちます。

私なんかは年齢が年齢だけに、「標本(そのサンプルのみの性質を知る)」「不偏(サンプルから母集団を推定する)」で分けた方が分かりやすいのですが・・・。
    • good
    • 0
この回答へのお礼

追記ありがとうございます。お礼を書いた後でこちらの追記に気がつきました。早速、現在授業で使用しているテキストを確認してみました。普遍分散のセクションの中で、「標本分散と異なるのは、偏差の2乗和をnではなく(n-1)で割っているところです。」とあります。これで正しいですよね?
問題はRのようです。Rの授業で使っているテキストのvar(x) やsd(x)の記述の但し書で「分散(不偏分散)は、個々の値とデータの平均値との差を2乗したものを全て足し合わせて、データの個数から1を引いた値で割ったものです。また、標準偏差は、分散の平方根を取った値です。」とありました。この通りであれば、 kamiyasiro様がおっしゃっていることと同じで正解と同じ結果がでるはずですよね?なのに、先述の結果がでてしまっています。なんと。RをMacで使うと、バグなのか、よく変な結果になるのですが、これもそれかもしれません。後ほど、Windowsで試してみます。
詳しい補足をありがとうございます。大変助かりました。「大学へ行くと、」どころか、院生でこの様子でございます。お恥ずかしい限りです。笑。でもがんばります。

お礼日時:2019/08/12 12:11

企業でSQCを推進する立場の者です。

博士(工学)です。

Rは不偏分散を計算しています。ご質問者は初心者のようなのでもう少し説明しますと、(n-1)で割った分散を計算しています。これでピンと来なければ最初から勉強し直しです。中学校高校では不偏分散を教えていないかもしれません。その場合はご容赦ください。

Rで求めた分散81に(n-1)を掛けてnで割り直せば、「正解」とやらに一致します。

で、企業人の立場から見れば、どちらも「正解」ではありません。
そもそも問題が悪いです。問題を作った人も初心者です。n=5以下のケースで偏差平方和から標準偏差を求めさせるなんて無謀です。せめてn=11以上でないと・・・。

このような少数サンプルのケースでは、R(レンジ)/d2、で求めます。d2の詳細説明は避けますが、管理図の説明に出てきますのでご興味があればどうぞ。

この現象を実際に確認してみましょう。
Rが使えるのであれば、次のスクリプトを実施してみて下さい。平均0、分散1(標準偏差1)の標準正規分布からn=3を採取し、「不偏分散」でなく「分散」から標準偏差を1万回計算し、その平均を調べています。本来は1になるハズですが・・・。

k <- 0
sig <- NULL
while(k < 10000){
sig <- append(sig,sqrt(var(rnorm(3,0,1))*2/3))
k <- k + 1
}
mean(sig)
hist(sig)

Rが与える「不偏分散から標準偏差を求める」方法であれば、*2/3を取り除いて下さい。より1に近づきます。ですが、それでもなお少数サンプルによる影響が強いです。

つまり、n=10以下のときは、分散から標準偏差を求めても、おかしな数値になっているということです。n=11で確認してみましょう。rnorm(3,0,1)の3を11にしてみて下さい。平均は1に近づくハズです。

k <- 0
sig <- NULL
while(k < 10000){
sig <- append(sig,sqrt(var(rnorm(11,0,1))))
k <- k + 1
}
mean(sig)
hist(sig)

それでも、上のように*2/3を入れると、1にはなりません。ですから不偏分散が必要なのです。このケースではRの結果(不偏分散)に軍配が上がります!
    • good
    • 0
この回答へのお礼

詳しいご説明をくださり大変ありがとうございます!ご専門の方はさすがに凄いですね。感謝です。そうなんです、私は応用言語学で修士課程在籍中で、全くの初心者で統計学をやっております。(泣いております。笑)でも、研究に必須なので習得しなくてはと尽力中です。笑 
なるほど。。Rのは普遍分散なのですね。他の関数にすべきなのかもしれません。Rのt-test などはサンプルが多い場合向きなのでサンプル数が少なければu-testをということ等は教わっていましたが、むしろそれ以前の問題で、統計学の概念や計算法の知識が抜けており、夏休みにそこから復習だと、kamiyasiroさまのご説明をお聞きして、改めて感じました。教えていただいたスクリプト、まだ完璧には理解できていないながらも、さっそくRでやってみます。ありがとうございました!

お礼日時:2019/08/12 11:21

テストを受けた人数は3名なのかもっと多い(たとえば、クラス全員)のか、それにより正解が変わります。


そもそも3名しか受けていない場合、標準偏差7.35が正。
クラス全員が受けて、そのうち3名の結果から「クラス全体の標準偏差」を推定するなら、標準偏差9.00が正。
クラス全員が受けて、そのうち「3名の結果だけの標準偏差」なら、7.35のほうが正。
標準偏差7.35のほうが母集団標準偏差(データの全数を使ったもの)で、EXCELのSTDEVP
標準偏差9.00のほうが標本標準偏差(=データの1部を使い全体を推定したもの)で、EXCELのSTDEV
Rは使ったことない(見たことも無い)けれど、母集団標準偏差と標本標準偏差のどちらも求められるよう、関数が2つあると思いますが。。。。
両者の関係は、標本標準偏差=母集団標準偏差*√(N/(N-1))、Nはサンプル数。

なお、Wikipadia/標準偏差 によると、標本標準偏差は、上記と別定義になっている教科書もある、とのこと。
    • good
    • 0
この回答へのお礼

詳しいご説明をくださり大変ありがとうございます!とてもわかりやすくて助かりました。感謝です。なるほど。。Rで出たのは標本標準偏差、出さなくてはいけないのは、母集団標準偏差なのですね。Rでも同じように違う関数を使うのかもしれません。調べてみます。
今はRを使う授業のみで、EXCELで統計やったことないのですが、ぜひmasa2211様に教えて頂いた関数試してみます。ありがとうございました!

お礼日時:2019/08/12 11:21

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!