No.05588 難解な、SDの計算  【R初心者】 2008/01/30(Wed) 10:55

難解な,SDの計算
年齢階級別有病率のデータがあるとします。糖尿病の有病率のデータです。
        40-44      45-49      50-54      55-59      60-64      65-69
Mid-Age 42.5 47.5 52.5 57.5 62.5 67.5
2000 0.006745 0.012142 0.019475 0.030178 0.044361 0.053689
2005 0.006024 0.011503 0.020014 0.029343 0.045386 0.053348
2000SD 0.000128 0.000198 0.00026 0.000412 0.000532 0.00068
2005SD 0.000114 0.000184 0.0003 0.000381 0.000635 0.000694
以上のデータの,平均年齢は
m=Σ(Mid-Age*ri)/Σ(ri)で求まります。
1.SDについて,単純に各年齢階級で,正規分布でデータを発生させて,上記計算値を出して,mとSDを出すことは,理論上可能です。しかし,何とか式で求まらないか?,今後この計算が,なされることはあるのか?
2.上記の1.の「SDについて,単純に各年齢階級で,正規分布でデータを発生させて」は,本当は,年齢階級でChainになっていると思うので,年齢階級ごとに,独立して発生させて検討するのは,間違いではないか,方法はあるのか
といったことです。
独立した分散の加法はありますが,割り算は,研究の最中と聞いています。ましてや上の式は,分子と分母が,式こそ違えても,同じ集団です。

No.05589 Re: 難解な,SDの計算  【青木繁伸】 2008/01/30(Wed) 12:59

出てくる記号の説明がなかったりして,質問がわかりにくいのですが,

> 平均年齢は m=Σ(Mid-Age*ri)/Σ(ri)で求まります。

ri は何ですか?各年齢階級のデータ数(今の場合だと年齢階級別人口)ですか?
でも,平均年齢を求めたいのではないのではないですか?
年齢階級をプールした(全体の)有病率を求めたいのではないのですか?

求めたい SD は何の標準偏差ですか?年齢の標準偏差なんですか?
違いますよね。
これも,年齢階級をプールした(全体の)有病率のSDを求めたいのではないですか?
表で2000SDとか2005SDと書いてある行は,有病率のSDなんでしょう?
しかし,有病率のSDってどうやって計算したのですか?

> 単純に各年齢階級で,正規分布でデータを発生させて

何のデータを発生させるのですか?
年齢階級別の集団では,年齢も,有病率も正規分布はしませんよね?

すべてが,よくわかりません。

以下のようなことでしょうか?違うんでしょうけどね。

グループがいくつかあって,それぞれのグループの,サンプルサイズ,平均値,標準偏差が以下のようになっているとき,全体の平均値,標準偏差を計算するにはどうしたらよいか

たとえば,グループが3つあって
サンプルサイズ   平均値   標準偏差
10 12.3 1.5
13 11.5 1.2
19 12.8 1.6

No.05596 Re: 難解な,SDの計算  【R初心者】 2008/01/30(Wed) 14:12

riはi歳階級の出現率(有病率)で,データは2000,2005とありますが,2005だけで考えていただいてよろしいです。
平 均年齢はΣ(Mid-Age * ri)/Σ(ri)でもとまります。riはそれぞれの年齢階級で,患者調査でSEが求まっています。このriのSEiと でもいうもので,平均年齢のSEが,計算できないものか,という問いです。分子だけなら,分散の加法でSEが求まりますが,分母も確率変数で,独立でない ので,分散の商はできません。独立の2変数の分散の商は式がありますが,研究段階と聞いています。各年齢階級の率とそのSEがあるのだから,計算機を用い て,数値的に求めることは可能だと思いますが,他に方法がないか?
Mid-age/Σ(ri)を定数と考えて,加法性が使えないか?

No.05598 Re: 難解な,SDの計算  【R初心者】 2008/01/30(Wed) 14:23

追加ですが,患者の率のデータの各年齢階級の人口がNで一定とすると,
平均年齢=Σ(Mid-Age*ri)/Σ(ri)=Σ(Mid-Age*ri*N)/Σ(ri*N)=患者の年齢データの総和/患者総数 で理解されると思います。

No.05599 Re: 難解な,SDの計算  【青木繁伸】 2008/01/30(Wed) 14:23

どうも話が通じにくいです

> Σ(Mid-Age * ri)/Σ(ri)

2000年のデータで,この計算をしたら,答えはいくつになりましたか?
私が計算したら,以下のように,60.13356 になっちゃいました。
> Mid.Age <- c(42.5, 47.5, 52.5, 57.5, 62.5, 67.5)
> ri <- c(0.006745, 0.012142, 0.019475, 0.030178, 0.044361, 0.053689)
> sum(Mid.Age * ri)/sum(ri)
[1] 60.13356
糖尿病有病者の年齢の平均値ということですかね

ということは,求めたいSDというのは,糖尿病有病者の年齢の標準偏差ですか?
(最初からそう言ってるだろうといわれそうですが)

No.05602 Re: 難解な,SDの計算  【青木繁伸】 2008/01/30(Wed) 15:22

> 患者の率のデータの各年齢階級の人口がNで一定とすると

その前提が誤っているので,あなたの推定値は不適切です
(そういう仮定は,想定外でした。思い及びませんでした)

例を挙げて説明しましょうか
年齢     15     25     35     合計
有病率 0.3 0.4 0.35 ----
有病数 30 60 70 160
人口 100 150 200 450
R初心者さんの定義による「平均年齢」
(15*0.3+25*0.4+35*0.35) / (0.3+0.4+0.35) = 25.47619 … (1)
定義による平均年齢
(30*15+60*25+70*35) / (30+60+70) = 27.5 … (2)
重み付け平均という観点から
重み = 有病数 / 有病数合計 = (0.1875, 0.3750, 0.4375)
平均年齢 = 15*0.1875 + 25* 0.3750 + 35* 0.4375 = 27.5
(1)で使われた重み = (0.3, 0.4, 0.35) / (0.3+0.4+0.35)
= (0.28571, 0.38095, 0.33333)
(1) も (2) も,重み付け平均という点では同じである。
(1)は有病率という,誤った重みを使っている。
(2)は有病数を重みに使っている。
有病率を重みにしたときに正しい答えが出るのは各群の人口が同じときのみ(その場合にのみ,有病率と基づく重みと有病数に基づく重みが同じになる)

有病者の年齢の平均値を求めるには,例に挙げられたようなデータ構造の場合には,各年齢群の人口数が必要です。(一定であるという仮定をしても構いませんが,妥当性は問われるでしょう)

有病者の年齢の標準偏差を求めるには,年齢階級別の有病率の標準偏差は必要ではありません(何の関係もありません)。有病者数(せめて年齢階級別人口数)がわかっていればよいだけです。
No. 5589 で述べたのは,「各年齢階級の有病者の年齢の標準偏差がわかっているときには」ということですので,これとも違います。

もっと,もっと,単純なのです。

上に上げた例だと,単に「年齢15が30人,25が60人,35が70人」というデータだけで平均値も,標準偏差も計算できるということに過ぎません。有病率の標準偏差は無関係です。

No.05603 Re: 難解な,SDの計算  【青木繁伸】 2008/01/30(Wed) 15:36

年齢階級人口が一定であるという仮定をするなら,有病者の年齢の標準偏差(不偏分散の平方根ではなく,分散の平方根の方)は以下のようになるでしょう
> Mid.Age <- c(42.5, 47.5, 52.5, 57.5, 62.5, 67.5)
> ri <- c(0.006745, 0.012142, 0.019475, 0.030178, 0.044361, 0.053689)
> ( mean <- sum(Mid.Age * ri)/sum(ri) )
[1] 60.13356
> ( sd <- sqrt(sum(ri*(Mid.Age-mean)^2)/sum(ri)) ) # これで求まるでしょう
[1] 7.160369

No.05604 Re: 難解な,SDの計算  【R初心者】 2008/01/30(Wed) 16:33

実際のデータは,年齢階級別人口が一定ではありません。
多くの人口が存在するところが,患者の平均年齢を引っ張ります。
年齢階級別人口/年齢階級別人口の総和の逆数で,加重平均をすると,患者の平均年齢は上の式になります。
先生のSDの式は,検討します。

● 「統計学関連なんでもあり」の過去ログ--- 041 の目次へジャンプ
● 「統計学関連なんでもあり」の目次へジャンプ
● 直前のページへ戻る