2008年02月21日

よく分からないものは使うべきじゃない

先日研究成果をみんなで見せ合うような集まりがあったんだけど、 なんだか周りの人間の統計に対する扱いがあまりにあんまりなんでがっかりした。使えないなら無理して使わなければいいのに。 誰かに頼めばいいのに。無理に使うから事故起こすのに。

例えば自動車というのは運転の仕方を知らなくても、いつでも使える運転手が身近に居るなら有効なツールとなる。運転手が居なくて、 運転するのに必要な知識が無かったらそれはただの金属の塊であって役に立たない。その代わり害も及ぼさないだろう。 怖いのは中途半端に知識がある場合で、中途半端な知識でもって運転をしようものなら大変なことになりそうなことは誰でも予想する。

分からないなら使わない。使いたいなら使えるようになるまで訓練するか、使える人間を捕まえるかしないといけない。

もうなんかあまりにもアレなんでここでコッソリ突っ込んでおく。

Turkeyの方法

なんですかそれは。トルコ的な方法ですか。それとも七面鳥的な方法ですか。と誰かに質問して欲しかった。

まあ、「多分」だが、多重比較法を作り、FFTを作り、bitという言葉を作り、箱ヒゲ図を作ったジョン・ テューキー先生のことだろう。なんとなくそんな気がするだけですが。誰が作ったかもわからない方法を使ってるんだろうか。 綴りが分からないんならカタカナで綴ればいいのに。スライドだけのミスかと思ったけど論文も「ターキー」だった。誰もチェックしてないのか?

同じアルファベット間には危険率5%で差がない

「○○と××の間には△△の差がある」という帰無仮説を全て棄却したとでも言いたいのか。 その仮説って無限個存在してないか。差が0の付近で無限個のサンプル必要にならないか。いや、棄却検定を使っていないというのなら、 「差がない」ということをポジティブに言える方法を採用しているというのならいいんだけど。スライドにも論文にも書いてなかったから、 その可能性が無いと言い切れないのが残念。

危険率5%でこの変数の間には相関があると判定されました。 ですので○○と××の間には有意な関係があるといえます。

一見何の問題もなさそうな発言だけれども、グラフの中に「R=0.5」とかいう数字が見えるんですよ。 決定係数にしたら0.3にも満たない。それに回帰直線もほとんど傾いてない。この世の中に「全く関連のない」 2変数なんてそう存在しないだろう。ましてや実験の中で得られたデータなんだから、 その2変数の間に直接と呼べる関係が存在していなくたってサンプル数増やせば傾向は現れるだろう。多分「危険率5%で」言えているのは 「傾きが0である」という帰無仮説を棄却したという事実だけなんじゃないのか? なるほど確かに傾きが存在するなら関係があると言っていいだろう。でもその説明変数は目的変数に対してちっとも支配的に見えない。

細かいことを言い出したらきりがないのでもう止めるけど、でも細かくない間違いがちょっと多すぎたように思う。

誰も指導してないんだろうか。指導しないという指導方針もあるだろうけど、 適切な指導することで能力を発揮する人間のほうが多数派じゃないだろうか。ふるいに掛けるつもりなら別にかまわないけど、 そうじゃないなら誰か止めてやれよ。あまりに可哀想すぎる。

posted by Rion778 at 13:06 | Comment(0) | TrackBack(0) | diary | このブログの読者になる | 更新情報をチェックする
2008年02月05日

修正の規模と修正に要する労力が反比例する

「うーん。経過日数にも単位があったほうがいいんじゃないか。分かるといえば分かるけど、細かいことを言う人もいるかもしれないし。 あとこの単位も…。それと…」

え゛?

眠気も最高潮の午後3時過ぎ,私は30個近いグラフの修正作業に入ったのであった.

10個くらい修正し終わったそのとき,俺様にすばらしいアイデアが訪れた.

「そうだ!一発で全部のグラフを描いてくれるようなスクリプトをかけばいい!」

かくして,行数1100,35キロバイトのテキストファイルが出来上がった次第.

HDDガタガタ言わせながらRで処理すると一度に30個のepsファイルが吐き出された.素晴らしい.

素晴らしいが,結局5時間は無駄に使った.

最初から修正を見越してスクリプトは一つのファイルにコピーしておくべきだったんだ. テキストファイルを分散保存することに何の利点があろうか!○ordの使いすぎで悪い癖が付いてしまったようだ.

posted by Rion778 at 22:27 | Comment(0) | TrackBack(0) | diary | このブログの読者になる | 更新情報をチェックする

jsbookで章番号のあとに改行を入れない[LaTeX]

こーゆー細かい注文が一番困るんだ!

でもとりあえず出来たのでメモ.プリアンブルに,

\makeatletter
\def\@makechapterhead#1{
\vspace*{2\Cvs}
{\parindent \z@ \raggedright \normalfont
\Huge\headfont
\ifnum \c@secnumdepth >\m@ne
\if@mainmatter
\@chapapp\thechapter\@chappos
\hskip1zw
\fi
\fi
#1\par\nobreak
\vskip 3\Cvs}}
\makeatother

(参考:TeXでレポート作成[jsbookからjsreportへ]

\makeatletter〜\makeatother間に書いてあれば良いので,さっきメモった「文献の参照番号を上付きに[LaTeX]」 とまとめて書いてもおk.

もっとスマートにやりたい人は上で参考にさせてもらったWebページを見てjsreport.styを作ってしまうといいでしょー.

posted by Rion778 at 00:04 | Comment(0) | TrackBack(0) | PC関連。HTMLとか,Linuxとか,Rとか | このブログの読者になる | 更新情報をチェックする
2008年02月04日

文献の参照番号を上付きに[LaTeX]

直せといわれて若干困ったので忘れないうちにメモ.

上付き数字&右括弧にし「こんなかんじ1)」,文献ページの数字も変える方法.

プリアンブルで

\makeatletter
 \DeclareRobustCommand\cite{\unskip
\@ifnextchar[{\@tempswatrue\@citex}{\@tempswafalse\@citex[]}}
 \def\@cite#1#2{$^{\hbox{\scriptsize{#1\if@tempswa , #2\fi})}}$}
 \def\@biblabel#1{#1)}
\makeatother

(参考:奥村晴彦「LaTeX2e 美文書作成入門 改訂第4版」)

LaTeXは標準だと[1]というような形の参照番号が振られるので気をつけないといけない. 投稿規定で上付きを指定してくるところもあるので.

指定が無ければどっちでもいいと思うけどなあ. まあ直せと言われたものは大人しく従っておく.こんな些細なところで労力を使いたくない.

しかし一般的には上付きだって? でも何の苦も無く上付き文字が使えるようになったのなんてここ数十年の話じゃないのか. そもそもLaTeXのデフォルトが[1]という書き方なんだし,それなりに広く使われている形式だと思ってたけど, そうじゃないんだろうか.いや, 新しいものを積極的に取り入れようという姿勢は結構なことだけど.

それと,文献参照の形式として番号を振らずに(奥村 2006) などとする流儀があるが, これについては

この流儀の最大の利点は, 文献の加除があっても参照番号を振り直す必要がないことでしたが, 現在ではLaTeXなどのシステムが自動的に参照番号を振ってくれますので,この理由づけは意味がなくなりました. 番号だけより情報量が多く,文献が参照しやすいという利点もありますが,参照文献が多いと逆にうるさく感じます.
奥村晴彦「LaTeX2e 美文書作成入門 改訂第4版」

という意見がある.名前が書いてあると情報が増えて理解しやすくなるという話を聞いたけど,文献ページめくればすぐに分かるんだから紙面を「うるさく」 してまでこの流儀を採用すべきだろうか.雑誌に投稿するような場合はいいかもしれない. でも多少長くなるテキストなら機に応じて適当なものを選択していくほうが良いように思う. 名前を示すことで理解が深まるということが予想されるのなら「○○によれば…である[1].」という形式にすればいい. 僕の場合は数年以内の論文に混じって四半世紀前の他分野の論文や半世紀前の建築学の本なんかも引用しているので, 何でもかんでも名前を出せば理解が深まるということは期待できない(いずれもその分野では著名な先生ではあるのだけれど).

あーあ,投稿規定でもあればこんなこと悩まなくていいんだけど.

過去の例は少なくとも体裁においては全く参考にならないので前に習えするわけにはいかない.横に習えができるかと言えばそれも微妙.

といって遠くから例を持ってくるとこういう厄介なことになってしまう.

もっと世の中は単純な構造にすべきだと思うよ.

posted by Rion778 at 23:13 | Comment(0) | TrackBack(0) | PC関連。HTMLとか,Linuxとか,Rとか | このブログの読者になる | 更新情報をチェックする
2008年02月03日

対数の平均値について

数学には、雄大なる構想もあるが、その雄大は粗大ではない。極微の末梢においても、寸毫の齟齬を許さない。
高木貞治「数学小景」

値の対数の平均値を計算し、真数に戻す操作を行った場合その値は幾何平均と呼ばれる。

対して、値の総和をデータ数で除した値を算術平均、または単に平均と呼ぶ。

これらの値の間にどれだけの差が生じうるだろうか?Rを使って確認してみよう。

まずは一様乱数について。0が含まれると都合が悪いので0〜1の一様乱数に10を足したものを母集団としている。

x.mean <- numeric(0)
x.geomean <- numeric(0)
for(i in 1:2000){
 x <- runif(10)+10
 x.mean[i] <- mean(x)
 x.geomean[i] <- exp(mean(log(x)))
 }

平均値と幾何 平均のヒストグラムを描くと

Rplot003 

値も分布の仕方もさほどかわらない。図は示さないが、 一様分布に限らず歪でない分布が母集団である場合両者の間に大きな差は観察されなかった。

歪でない、ならば歪な分布ならばどうなのか。例えば次の関数によって生成される乱数

10000^runif(1000)

の分布は次のように極めて偏った分布を示す。x軸を対数軸としたい感じだ。

Rplot2

そして、この分布から採取されるサンプリングデータの幾何平均と算術平均は次のように分布する。

 Rplot001

分布が偏っている場合、両者の値は大きく異なる。

また、対数に対して分散を定義しようとする場合、 対数値の分散を計算する場合と真数の分散の対数を計算する場合とでは計算する場合で値が大きく異なる。 真数の分散の対数はスケールにより負の値もとりうる。そのため対数の分散は前者で計算しなければならないが、その値が意味を持つのは 「対数値のばらつき」に意義がある場合のみである。それは真数のばらつきを示してはくれない。

算術平均と幾何平均のいずれを採用すべきか、あるいは別の平均を採用すべきなのかは状況に応じて適切に判断しなければならない。 状況によっては選択のミスがもたらす誤差は小さいだろうが、致命的な誤差をもたらす場合もあるということを忘れてはいけない。そしてまた、 もたらされた誤差が小さいとしても、選択が誤っていればその値に本質的な意味は存在し得ないということも忘れてはいけない。

posted by Rion778 at 15:37 | Comment(0) | TrackBack(0) | 勉強ノート | このブログの読者になる | 更新情報をチェックする
2008年02月02日

AICを使って回帰モデル選択[R]

AIC(Akaike's Information Criterion, 赤池情報量基準)という値を計算すると, 回帰モデルの当てはめのよさを測ることができる.

Rではモデル選択のためにstepという関数がある. 例えばyという目的変数に対しa,b,c,d,eという5つの説明変数が合った場合, 次のようにすると一つずつ説明変数を減らしながらAICを最小にするモデルを選択してくれる(AICは小さいほど当てはめがよい).

result <- lm(y ~ a+b+c+d+e)  #重回帰分析の結果をresultへ代入
result2 <- step(result)      #AICを用いたモデル最適化,結果をresult2へ代入
summary(result2)             #結果の表示

AICは尤度と説明変数の数により決まり,尤度が高く,かつ説明変数の少ないものが選ばれる (ただし関数stepは全ての組み合わせを調べるわけではないので注意).なお,最初の重回帰分析を

result <- lm(y ~ (a+b+c+d+e)^2)

などとすれば二次の交互作用まで含めてモデルの最適化を行ってくれる.

ところで,減らすと大きくAICが上昇してしまうような説明変数は回帰分析を行っても有意となることが多い.でも, 回帰分析を行って有意だからといってその説明変数を減らすとAICが大きく上昇するとは限らない.これは一体どういうことなんだろう? データと説明変数の間に強い相関はあるけれど,その説明変数によって値が大きく変化しているわけではないということなんだろうか?

うーん.本を読んでもイマイチ分からない.

AICはそんなに増えないけど,回帰分析では有意なんだからこの説明変数は重要なんだ!という主張は可能なんだろうか.

面倒そうだからパスしてたけど尤度関数というものを一度しっかり確認しないとだめかな.

posted by Rion778 at 17:57 | Comment(0) | TrackBack(0) | PC関連。HTMLとか,Linuxとか,Rとか | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は1年以上新しい記事の投稿がないブログに表示されております。