配列の平均をそのままに分散だけ小さくするアルゴリズム
たとえば
500,500,1000,2000,6000
という配列があったとします。
仮にこの配列の分散を100と仮定します。
この配列を平均化したもの
2000,2000,2000,2000,2000
の分散を0と仮定します。
そこで質問です。
この配列のここでいう分散50の配列の算出方法はありませんでしょうか?
イメージとしては税金の再分配で例えると
分散0は完全な共産主義、分散100は税金なし、
分散50はその中間をとった感じです。
できれば、500が1000になるのと6000が5500になるのでは
同じ500の増減でも価値が違う感じも残しつつだとうれしいです。
すごくわかりづらい説明で、
自分でも質問の内容に無理があるとは感じているのですが、
もし、そのようなアルゴリズムがあれば教えていただきたいです。
以上、よろしくお願いします。
No.4ベストアンサー
- 回答日時:
なるほど。
差分をルート2倍する方法は平均のみを基準にした場合ですが、あなたの欲しがっている変換はゼロを基準にしているようですね。共産主義云々のくだりからすると、100も基準にするのでしょうか。
対数を取る時点で学問的な根拠はないですから、最後に数倍することをためらう理由もないかと思います。あくまで変換なので、それでまずまず直観に合っていると思われるならそれに従うのが良いでしょう。
真面目に統計学に従わせようと思ったら、そのたびに方程式を解かなきゃいけないような気がします。「分散を半分にする」という変換自体が比較的怪しい操作ですから、あんまり生真面目にならないほうが良いですよ。
もし 0 と 100 を基準にしてきちんとした比率を保ちたいのであれば、平均と0,または平均と100との間にゴムでデータが張ってあるようなモデルを考えるとよさそうです。
引っ張る力を強くすると平均に近づいて、弱くすると0や100に近づきます。この例だと最大と最小からの変化の割合が一定に保たれるだけで平均はずれそうですが、感覚的にはこれに近そうに聞こえました。
No.3
- 回答日時:
差をルート2で割る、というのは、価値の違いを含めた方法のつもりだったんですけどね。
6000と1000を、4800と1300くらいに変換するのは、統計学的な意味で分散を半分にするには妥当なところでしょう。
> できれば、500が1000になるのと6000が5500になるのでは
> 同じ500の増減でも価値が違う感じも残しつつだとうれしいです。
それとも、比率は同じにしておきたいということですか??
6000が0.8倍になったなら、1000も0.8倍になる、とか、
6000と平均との差が0.8倍になったなら、他の差も0.8倍になる、とか?
(上のほうの例は平均がずれるので明らかに無理ですけどね)
何はともあれ、
> 「500 が 1000 になるのと 6000 が 5500 になるのとでは『どのくらい』価値が違うの?
> 500 が 1000 になるのと『同じ』価値なのは, 6000 がいくらになったとき?」とか
> 「そもそも最初の例でどうなっていれば『できれば』も入ったことになるの?」
これに答えていただくのが良いかと思います。
ご回答ありがとうございます。
>差をルート2で割る、というのは、価値の違いを含めた方法のつもりだったんですけどね。
>6000と1000を、4800と1300くらいに変換するのは、統計学的な意味で分散を半分にするには妥当なところでしょう。
上記に関してなんですが、たとえば下記の配列の場合
1
2000
2000
2000
3999
平均との差をルート2で割ると
586.4935444
2000
2000
2000
3413.506456
のようになるんですが、1つ目は1→586で500倍になってるにも関わらず、
5つ目は3999→3413で少し減っただけなので、
漠然とですが、少し不公平な気がします。
> 「500 が 1000 になるのと 6000 が 5500 になるのとでは『どのくらい』価値が違うの?
> 500 が 1000 になるのと『同じ』価値なのは, 6000 がいくらになったとき?」とか
> 「そもそも最初の例でどうなっていれば『できれば』も入ったことになるの?」
上記をよく考えてみたのですが、
自分の考えている妥当な値は対数に直した後に
平均との差分をルート2で割り、
合計が減っているのでつじつまを合わせるために数倍した
下記の配列になる気がします。
826.9079814
826.9079814
1349.94954
2203.828963
4792.405534
ただし、やはりこのやり方では
最後の「つじつまを合わせるために数倍する」根拠が全くないので
変な感じがするのですが。
No.2
- 回答日時:
「できれば」を無視すれば #1 の通りなので簡単.
「できれば」を組込もうとすると「500 が 1000 になるのと 6000 が 5500 になるのとでは『どのくらい』価値が違うの? 500 が 1000 になるのと『同じ』価値なのは, 6000 がいくらになったとき?」とか「そもそも最初の例でどうなっていれば『できれば』も入ったことになるの?」とか, いろいろな疑問に答えてもらわないといかんかな.
回答ありがとうございます。
自分の質問に明らかに説明というか情報が足りていないのは分かっているんですが、
ただ漠然と、直感的に変にならない感じの結果がでてくるアルゴリズムがあれば
教えていただきたいんですが、
やっぱり無茶でしょうか。
イメージとしては、
その分散の0~100までの数値で共産主義度合いがあらわせるような感じなのですが。
自分としてはおそらく対数を使用すればいいんじゃないかくらいにしか
考えが及びません。
No.1
- 回答日時:
アルゴリズムというか、ふつうに計算するだけですね。
統計学での「分散」の定義はご存知ですか?
一個一個の平均からの差をルート2で割れば、分散は半分になるんじゃないですかね。
回答ありがとうございます。
おっしゃった方法でやってみました。
(500)939.3398282
(500)939.3398282
(1000)1292.893219
(2000)2000
(6000)4828.427125
ですが、これだと下の部分が反映できていないかと感じましたので
>できれば、500が1000になるのと6000が5500になるのでは
>同じ500の増減でも価値が違う感じも残しつつだとうれしいです。
各値の対数をとって、その平均との差をルート2で割ってみたのですが、
653.2640586
653.2640586
1066.471161
1741.042879
3786.039511
となり合計が
7900.081669
なりました。
これでは都合が悪いので平均を合わせるために
全部に10000/7900.081669
をかけてみたら下みたいな感じになりました。
(500)826.9079814
(500)826.9079814
(1000)1349.94954
(2000)2203.828963
(6000)4792.405534
対数でやってみると平均が少なくなりつじつまを合わせるために無理やり
全体を増やしたのと、2000の部分が平均より増えていて気持ち悪いので
いいアルゴリズムとは思えないんですが、
なにかこう、直感的にいい感じできれいな方法など
他にあれば教えてほしいです。
わかりずづらく、あいまいで申し訳ございません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
配列数式の解除
-
2つ以上の変数を比較して最大数...
-
配列変数の添字が範囲外ですと...
-
配列を任意の数値で埋める方法
-
subの配列引数をoptionalで使う...
-
ListViewで、非表示列って作れ...
-
linest関数に配列を渡す
-
VB6 配列を初期化したい
-
配列に同じ値を入れる方法
-
ヤマ括弧でくくられたテキスト...
-
配列の内容に重複をなくすには...
-
【VBA】配列とWorksheetFunctio...
-
Excel-VBAで内臓のMINVERSE,MM...
-
Excel VBA配列をFunctionに渡す
-
モンテカルロ法を用いた積分計...
-
特定のセル範囲で4文字以上入力...
-
VBA 1次元配列を2次元に追加する
-
Excel-VBAの配列「Public Const...
-
エクセルで最小値から0を除く方法
-
Excel・Word リサーチ機能を無...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
配列数式の解除
-
2つ以上の変数を比較して最大数...
-
配列変数の添字が範囲外ですと...
-
特定のセル範囲で4文字以上入力...
-
VBA 1次元配列を2次元に追加する
-
ListViewで、非表示列って作れ...
-
subの配列引数をoptionalで使う...
-
for each の現在の配列ポインタ...
-
VB6 配列を初期化したい
-
エクセルで最小値から0を除く方法
-
2次元動的配列の第一引数のみを...
-
VBのFunctionで、配列を引数...
-
配列を任意の数値で埋める方法
-
Dim は何の略ですか?
-
Excel-VBAの配列「Public Const...
-
配列内の内容を全て表示する方法
-
Excel VBA配列をFunctionに渡す
-
[VB.net] StringからByte配列へ...
-
《エクセル2000》A列・B列の商...
-
ヤマ括弧でくくられたテキスト...
おすすめ情報