• 検索結果がありません。

記述統計を見る

ドキュメント内 mathnote Recent site activity Jun Oshiro (ページ 47-51)

x[[2,3]] = 0 とする.

上のようにして割り当て直すとx自体が書き換えられるが,xはそのままにして別の新 しいリストを生成したい場合,ReplacePartを使う.たとえば行列x の(2,3)要素を0 に置き換えたものをyとする場合,

y = ReplacePart[x, {2,3} -> 0]

と書く.

書き換えたい位置を探すにはPositionを使うとよい.負の値,虚数,Indeterminate, など置き換えたいものがある場合はそれぞれどこにあるのかパターンマッチングで探す.

たとえばxの要素のうちどこに負の値や不定量があるかを知りたいなら

Position[x, _?(# < 0 &)] (* positions where is a negative value *) Position[x, Indeterminate] (* positions where is Indeterminate *)

などとする.複素数Complexesは当然ながら実数も含んでしまうので,虚数を探すとき は逆に実数の位置をPosition[x, _?(Element[#, Reals] &)]などで探す.虚部がゼ ロじゃない,という条件で以下のように探すこともできる:

Position[x, _?(Im[#] != 0 &)] (* positions where is an imaginary value *) ただしこれらのコードは∞−∞などが含まれていると思い通りに行かないこともあ るので注意.

置き換えるのではなく,行を新たにどこかに挿入したい,という場合は Insert や Append, Prependを使う.列を挿入するなら,Transposeと組み合わせつつInsert を 使えば良い.

ついでにデータ・クリーニングにおける初歩的な注意しておくと,欠損値を恣意的に何 かに置き換えることは慎重であるべきだ.たとえば年収のデータが欠けているとき,0を 代入し年収ゼロとみなすのはおかしい.

<< HypothesisTesting‘

<< StatisticalPlots‘

これで,統計学の入門書に載っているような基本的な分析はすぐできるようになる.その 他,分散分析にはANOVA‘,多変量解析にはMultivariateStatistics‘,といったパッ ケージが利用可能である.後者は地理的中間地点(spatial median)を計算することもで きるが,経済学で使う機会はあまりないかも.

5.2.1 箱ひげ図

行 列 を 用 意 し て ,BoxWhiskerChart を 使 お う .ラ ベ ル は ChartLabel オ プ シ ョ ン で つ け る こ と が で き る .や た ら 横 に 長 く ,グ ラ フ が か っ こ わ る い と き は , BarOrigin -> Left, ImageSize -> Largeなどのオプションをつければよい.

5.2.2 ヒストグラム

ヒストグラムを作る関数はHistogramである.カーネル密度関数を重ねてプロットし たい場合,

kernel = SmoothKernelDistribution[x];

Show[

Histogram[x, Automatic, "PDF"],

Plot[PDF[kernel, x], {x, Min[x], Max[x]}]

]

のようにすればよい.デフォルトでは,Silvermanのbandwidthを使ったGaussianカー ネルで推定される.カーネルはEpanechnikov, Biweight, Triweightなども選択可能だ.

何らかの分布の密度関数を見せたい場合も,PDFを使えば簡単だ.

norm = NormalDistribution[0, 1]

tdist = StudentTDistribution[1]

Plot[{PDF[norm, x], PDF[tdist, x]}, {x, -5, 5}, Filling -> Axis, PlotLegends -> {"N(0,1)", "t(1)"}]

5.2.3 qqplot

残差の正規性を目視確認するときなどに使うqqplotは,QuantilePlotを使えばよい.

-4 -2 2 4 0.1

0.2 0.3 0.4

N(0,1) t(1)

5.2.4 記述統計の表を作る

ベクトルx, yの記述統計を並べて眺めたいときには,次のようにTableFormを使って 表にまとめると見やすくなる.

TableForm[

Transpose@(Through[{Mean, Median, StandardDeviation, Max, Min}[#]] /@ {x, y}), TableHeadings -> {{"Mean", "Median", "SD", "Max", "Min"}, {"ekkusu", "wai"}}]

もちろん,変数・記述統計は増減させることもできる.たとえば四分位点を加えたい場 合,Quantileを加えれば良い.数値を丸めたい場合はRoundを組み合わせる.なお,標 準偏差StandardDeviationはn−1で割った標本標準偏差が出力される.もちろん,R のsummary()やPythonのdescribe()のほうが楽である.

相関係数行列を作るときも,変数が多ければTableFormを使って見やすく表にすると よい.

5.2.5 地図を作る

空間情報ソフトに不慣れな人でも,Mathematicaは簡単にデータを地図にしてくれる.

適当なEntityを作り,GeoRegionValuePlotを使って図示すればよい.

たとえば,ベクトルxに,プロットしたい日本の都道府県レベルのデータが入っており,

prefLabelにあらかじめ県名を格納しているとする(prefLabel={"Hokkaido", "Aomori",

· · · "Okinawa"}).ネットにつながっている状態で次のコードを走らせると,日本地図が 出てくる:

Flatten@Table[{Entity[

"AdministrativeDivision", {pref, "Japan"}] -> x[[i]]} /.

pref -> prefLabel[[i]], {i, iI}] /. "Gunma" -> "Gumma";

GeoRegionValuePlot[%]

県名は,Hokkaido, Aomori, のように「県」は不要である.群馬のつづりは”Gunma”

ではなく”Gumma”でなければ認めてくれないので,3行目で置き換えている次第である

(本来必要ない).Mathematicaは都道府県レベル以外の空間単位も扱える.

自分で Shapeファイルを用意したり座標系を設定したりしなくてよい,という簡便性

はありがたいが,あまりカスタマイズできないようなので実用性は低い.

私自身の研究では次のような地図が出てきた.色がついていないところは欠損値で ある.

Out[208]=

10.0 10.5 11.0 11.5

5.3 回帰分析

Mathematica はOLS 用のコマンドも搭載している.私はそれを知らない頃,β =

(XX)−1XY, を直接計算していた…

重回帰をするときは,変数のリストを作り,LinaerModelFitにモデルを書き,結果を 考察する,という流れになる.変数は,{説明変数1,説明変数2, 説明変数3, . . .,被説明 変数}, の順番に並べる.たとえば,ベクトルyを3つの説明変数ベクトルx1, x2, logx3 に回帰させたいときは,

variable1 = Transpose@{x1, x2, Log@x3, y};

ols1 = LinearModelFit[variable1, {X1,X2,lnX3}, {X1,X2,lnX3}];

としてOLSを回す.LinearModelFitの中身には,変数そのものではない適当なラベル を使うことに注意.そのうえで,

ols1["ParameterTable"]

ols1["AdjustedRSquared"]

ols1["StandardizedResiduals"]

ols1["ANOVATable"]

などのプロパティを確認する.ここでは三番目の変数x3 だけ対数を取っている例を挙げ たが,もっとフレキシブルな分析はもちろん可能.少し工夫すればTSLSなども推定でき る(実装例がネット上に転がっているが,自分ではとてもじゃないが書く気にならないボ リューム感である).LinearModelFitはいろいろできる関数なので,ヘルプを読むこと.

信頼区間を作りたい場合,ConfidenceLevelを使う.手動で何らかの仮説検定をする 場合,NormalPValue, ChiSquarePValue, StudentTPValueなどの関数が有用だ.ただ し,ロバスト標準誤差を計算する,となると手作業が必要となる.

ドキュメント内 mathnote Recent site activity Jun Oshiro (ページ 47-51)

関連したドキュメント