統計教育のためのランダムウオークアプレットにつ...
TRANSCRIPT
〔研究ノート〕 弘前大学経済研究第21号 November 1998
統計教育のためのランダムウオークアプレットについて 1)
船 木 洋
1 .はじめに
統計教育のための HTMLファイルを使った教材作りをしています。 HTMLファイルを使用した
学習の特徴は,そのインターラクティプ性,あるいはインターラクティブな可能性にあります。それ
は,学習が通信を介して行われるか, CD-ROMなどによって提供される形で行われるかにかかわ
りません。
HTMLファイルで,インターラクティプ性を実現する方法として, Java言語によるアプレットが
あります。このアプレットが,統計教育には特に有用と思われます〔4' 154-160p〕。たとえば,統
計グラフの動的な描画です。いろいろな条件に対する,学習者の入力を受け,それに答える形で図形
を描きます。統計学では,さまざまな数表を使います。それは, t分布.F分布など確率分布の表を引
くという形をとることが多いのですが,その数表を引く変わりに,分布を描かせ数値を出してもらい
ます。それで,その名前のついた分布の特徴がヴィジュアルにわかり,また数値を量で捉える事がで
きます。
さらに,乱数を使用したシミュレーションがあります。コンビュータなしではシミュレーションは
考えられません。 HTMLファイルによる教育はコンビュータを使用した教育ですので,その特徴を
生かして,シミュレーションを入れます。シミュレーションをし,その経過や結果をグラフで表しま
す。これは HTMLファイル上ではアプレットによらなければ不可能です。また Java言語は決して
数学を表現するのに不適な言語でもありません〔9〕。通信を介しているときにはロードが遅くなると
いうことも有りますが,アプレットを使用したHTMLファイルにはそれを上回る利点があります。本
稿では後者の例に属しますが,統計教育用として作ったランダムウオークアプレットについて述べま
す。
2. このテーマを HTMLファイルに入れる目的と理由
このアプレットのある HTMLファイルの表題は,「ランダムウオークシミュレーションJです。
教科書による教育では,乱数表を使用するなどシミュレーションを行うことは時間と手間がかかりま
す。統計学の応用として,あるいはその理解のためにシミュレーションは大切なテーマで、すが容易に
できません。これに対して, HTMLファイルによる教育=コンビュータを使用しての教育ですので
擬似乱数を用いることにより,容易にでき,これが HTMLファイルによる統計教育の利点になりま
1 )この研究は.科学研究補助金基礎研究(C)(2)課題番号09680307の補助を受けています。
-181 -
す。
ランダムウオークは確率過程で学習するテーマで,文系学部の統計学の内容には,入りません〔10〕。
しかし,近年,金融への統計学の応用が意識され 〔1〕(2〕〔7〕,その基である確率過程の簡単な導
入は,あったほうがよいと思われます。実際現場でもシミュレーションが用いられていることもあり,
HTMLファイノレによる教育の特色が出せるところです。ランダムウオークの図は面白く,学習者の
注意を引くものと思われます。こことの関係で言えば,正規分布の派生として,対数正規分布と,正
規ランダムウオークを,月ljページの HTMLファイノレに舎きます。
ここのシミュレーションのランダムウオークも正規分布によるランダムウオークです。ランダムウ
オークと正規分布の関係と,株の値動きのモデルとしてのランダムウオークとを理解できるように,
ということを意図しました。ぱらぱらでなく相互補完的に理解できるように意図しました。たとえば,
正規分布の学習では,そのような応用もあることがわかります。それで一つのアプレットで,標準正
規乱数の発生と結果の図示,算術ブラウン運動の図示,幾何ブラワン運動の図示を行い,これらの学
習が関連を持ってできるようになっています。以下アプレットの3場面の意図と説明です。
3. 標準正規乱数の発生
- ~ ' . |奇守二九内,ー,;" '''却と 園田園|
量
.Qommunlc説。r 出副p
ヨ f栓 a. 歯 d riS ;~ Reio副 _ t:io旦a S~ar~h N号副都_ Print Se凶 rlty ・t()jJ
重·aoo<m剖恒星-~怠I!!虫どと盟主笠金1旦笠旦法判R•担当E耐性~!,1111_In草間tMess噌 s !;jィントネフトニ3検索 d情報
(J~霊場します.
対数をと勺たこの確率過穏の動き(J算術7_ラウン運動にfJ.ります.
le 41由•iEIAU F ラ:ノFムウ対』タ F 樟!5の動~モデ}~
盟国盟国
司ザ「
平均百一一揖撞鑑差~
左のアブfットで(J標準正~~減、算術ブラウン漫動の綬散化したランダムウr夕、議何ブラウン連動を厳鍛{ iこシミュレーションの動ぎを貝ドるこがてきます.
o~下のボoil ンを押すことζより何度でもやれます.
01.tとoの値は直銭入力できます.スライダーで入力もできます.
・ll(J-1と1の範囲で、 0o;!Oから2までです.
・算ブラウン運動でll=O o=Iとお〈と標準ブラウン運動の動きポ耳ちれます.
-幾何ブラウン連安"I/)ところでσ=Oとしたグラフ11.Y, •九(1 + ,.-)’の指数曲線むこなります.
O乱数によるヒストグラムと,密度関数の比較。
O 平均と標準備差の計算
0発生した乱数の時系列表示
-182-
統計教育のためのランダムウオークアプレッ トについて
平均O,標準偏差1の正規乱数を発生させ,その乱数のヒストグラムを作り,標準正規分布の密度関
数と比較しています。コンピュータで発生させる乱数は擬似乱数であるため,本格的な使用では,日今
味を必要とします。このことは,文章のほうで学習者に説明します。最近でも最も統計的に良い性質
を持っと思われてきた乱数によるシミュレーションが正しい値に収束しない例が研究されています
〔10〕。ここでは教育的使用なので, Java言語のランダムクラスの nextGaussian()メ ソッドを用いて
正規乱数を発生させています 〔6' 378p〕。 ヒストグラムの級の数は多すぎても少なすぎてもいけま
せん。スタージスの指針も有りますが, ここでは試行錯誤の結果,分布の特徴がよくわかると思われ
た10にしています〔5, 39p〕。ヒストグラムと,密度関数
ル)=士的(一千)叫 n ~
を重なるように図示しています。何度でも実験を行えば, 乱数発生メカニズムが標準正規分布に従う
としても,実現したデータによってはとてもそのように思えない結果が出ることもある,ということ
をヴィジュアノレに理解でらきます。確率の理解が深まります。「確率でモデル化される撹乱の理解Jで
す。各サンプルの平均値と標準偏差値も表示しでありますので,数値でも,違いとサンプルごとの変
動の様子が理解できます。図の下部で,発生順に標準正規乱数の大きさを表示し, 次の場面のランダ
ムウオークとの繋がりを暗示させるように配慮しました。なお,簡単な拡張として乱数の発生回数を
指示できるようにできます。
4. 算術ブラウン運動
|ξ ー\・ 跡 周囲図|
ζ
~ヨ
重量左のアブレフトでほ標準正3婚し数、i,ブラウン辺質問厳激化'viζランダムウ君ーク、幾何ブラウン運動を舵劇t1,....たシミュレ}ションの動ぎを見るこができます.
0左京のボ担ンを符すことLこより何度でもやれます.
01-1とoの{直は直後入力できます.スライダーで入力もできます.
・lllJ・1と1の震回で. 。はOから2までです.
・算:ブラウン運動でll=O.. o=1とおくと標耳障ブラウン運動の動きが見ちれます
-幾何ブラウン運重加也ころでσ=Oとしたグラフは.Y, • Y0 (1 +ノザ)’ の 数曲線Lこなります.
亡話芸こコ μ:IC'.:プC三三三三店三三三コσrr:-GE三三三三三百
当証-~忌 _.ll ち4
ノ.A-tr10角7
-183 -
0 算術ブラウン運動をシミュレー トしたランダムウオークの表示
。標準正規乱数の時系列表示
0 乱数のサンプルの平均と標準偏差の表示
算術ブラウン運動
dY(t)=μdt+o dW(t)
を離散化し
Y1 + .a1 = Yt + μt:.t + oz ./XI
として, {y~t } の時系列を描きます 〔2, 70-76p〕。 y~t =苅叩です。
zは標準正規確率変数で,μ とoは定数です。 tは時間です。 t:.tは時間の刻み幅で0.25に指定して
あります。これは縦軸とのスケールの兼ね合いでグラフが平均的に見栄えがよくなるように設定しま
した。時間間隔を指定させることもできました。しかし,動きの特徴ををヴィジュアノレに捉える,と
言うところに学習の力点置いたので固定しました。 μとuは学習者が指定します。μは-1と1の間
で0.1刻みで変化させることができます。 oは0と2の間で0.1$BJみで変化させることができます。ス
ライダーで数値を選択できるよ うにしました。 マウスから手を離さなくても,入力ができるようにす
るためと,学習者の興味を誘うためです。μがOのときは正規ランダムウオークで,。がOのときは
直線のグラフですが,文章のほうでそのことを説明し, 学習者の注意を促します。μとoの値を変
えてやってみる事により f算術ブラワン運動の動きが,直線で表される傾向線と撹乱が合わさったも
のであるJことが,グィジュアノレに理解できます。図の下部に標I修正規乱数zを時系列表示すること
品邑fi.l
3弘曲 ~:> ~ '1~ 盟
μ庶主叫 C三三三三E三三ヨσ「で: GE三三三主主E
·] ~.r糊et'.sR自国
tfl:致点1::騨白甥滋滋塩酸突きr.}ンョンの鑑定を見るこ 1できます.
0左下のボ担ンを押すことLこより何度でもやれます.
Ouとoの僅l;f直銭入力できます.スライターで入力もできます.
• ul;t-1と1の範閣で.σほ0かも2までです.
・算ブラウン運iでu=O,σ=1とおくと惇慾ブラウン運動の動きカ兎られます.
-幾何ブラウン逮賓m.とーでσ=Oとしたグラフ':I.g掛旨数臨時車Lこなります.Y, •Y0(1 +ρ’)' u相同国四
-184ー
ノA•怠 10.57
統計教育のためのランダムウオークアプレットについて
により, lの項での標準正規分布との繋がりを感じてもらえるようにしました。ブラウン運動の波形
の図が描画エリアに収まるように μの値により,出だしの縦軸の位置が変動するようにしました。
同時に目盛もつけかえられています。
5. 幾何ブラウン運動
0 幾何ブラウン運動をシミュレートした図の表示
0 算術ブラウン運動をシミュレートしたランダムウオーク表示
。シミュレーションに用いた式
幾何ブラウン運動
dS(t) = μS(t)dt +σS(t)dW(t)
を離散化したモデル
St+ "1t = St+ μS1Llt + aStz Ff
の数列{ s~t } の時系列を描きます〔2〕。 S~t =So+山 としていますo a= 0のとき,これは指数
関数 Soeμtの離散化した
So (1 +μflt) n
の幾何級数のグラフですが,そのことを文章のほうでも説明します。 μ とoの値を変えてやってみ
る事により「幾何ブラウン運動は,指数曲線で表される傾向線と撹乱が合わさったものである」こと
がヴ、ィジュアルに理解されます。元の微分方程式で, a=Oのとき.算術ブラウン運動の傾向線が直
線であることをわかることは容易でも,幾何ブラウン運動の傾向線が,指数曲線であることをわかる
ことは容易ではありません。図で容易に理解できます。
またこの幾何ブラウン運動に対応した
L(t) = logS(t)
の離散化した,モデル
。2 ~ Lt+ "1t = L1 + (μ一万一) Llt + az ~Llt
の数列 {L.:1~ }も描きます〔乙剛〔7,228p〕。数列{L .:1~ }は算術ブラウン運動の離散化したモデル
になっています。同時にグラフに書くことにより,算術ブラウン運動と幾何ブラウン運動の比較がで
きます。またここで表示される算術ブラウン運動と前の場面の算術ブラウン運動との違いがヴィジュ
アルに理解され.自然に,直線傾向線の違い,すなわち
。2
2
分の違いに気づかれることを意図しています。
式が複雑なので, μの値やσの値との関係を理解してもらうため,離散化した式も表示します。この
式の表示はないほうが良し、かもしれません。このモデルも解析的に解けます〔5. 228p〕。この点も
-185-
文章のほうにはコメントします。
6. おわりに
コンビュータあるいはインターネットによる教育は考えなければならない点もありますが,かなり
有効であるように思われます。本稿の場合には,比較的難しい内容が,アプレットによりヴィジュア
ルに理解されます。単純なドリル・チュートリアル型ではありません。この部分は上位の後半部分の
ページになります。そこでは,正規ランダムウオーク,算術ブラウン運動,幾何ブラウン運動のコン
パクトな説明をします。確率微分方程式を,どこと結びつけて説明するか,このページ以前にそれを
どこかで学習できるようにするか,どのような形で降りて説明するか,などが課題です。
アプレットのソースを以下にのせます。また,暫定的ですが
http: //human. hirosaki-u. ac. jp/keizai/funa3/shoukai2. htm
からこのアップレットがみられます。アップレットはシマンティックの visualcafeを用いて作りま
した。
参考文献
〔1〕刈屋武昭:金融工学と統計科学と日本統計学会 日本統計学会会報, 97(1998) 10-13
〔2〕小暮厚之:ファイナンスの計量分析(朝倉書店, 1996)
〔3〕森平爽一郎,小島裕:コンピュテーショナル・ファイナンス(朝倉書店, 1887)
〔4〕溝口文雄,大和田勇人:入れたて Java(共立出版, 1996)
〔5〕宮川|公男:基本統計学[新版](有斐閣, 1991)
〔6〕MikeCohn: Teach Yourself VおualCafe 2 in 21 Days (Sams. net Publishing, 1997)
〔7〕JohnC. H叫l:印tions,Futures, and Other Derivatives, Third Edition (Prentice Hall, 1997)
〔8〕ScottRobert Ladd: Java Algorithms (McGraw-Hill, 1997)
〔9〕SheldonM. Ross: Applied Probabil£かModelswith 仰timizationApplications (Holden-Day, 1970)
〔10〕Ak廿aTajima, Syoiti Ninomiya and Shu Ttezuka:“Analysis of the Anomaly of ranl() Generator in
Monte Carlo Pricing of Financial Derivatives.”]ounzal of印erationsResearch of japan, 41 (1998)
387-397
ランダムウオークアプレット
*/
im凹rtjava.awt. *;
出po此 java.applet.*;
impo此 java.util.*;
impo氏 symantec.itools.awt.Labe!Button;
im伊d symantec.itools.awt.HorizontalSlider;
回開rtsymant配 .itools.awt品 ape.Verti回ILine;
import symant民 .itools.a帆油ape.HorizontalLine;
public class Randomwalk extends Applet
{
public void init()
symant配 .itoolsJang.Context.setApplet(出is);
//{ {INIT CONTROLS
-186ー
統計教育のためのランダムウオークアプレットについて
setLayout(null);
setSize(426,382);
setBackground(new Color(l6777215));
開nel1 =new java.awt.Panel();
岡田11.setLayout(null);
panel l.setBounds(24,276,378, 102);
add(問nell);
同nel2=new java.awt.Panel();
開nel2.setLayout(null);
開nel2.se由ounds(0,0,372,48);
同nel2.setBackground(newColor(l6762880));
開nell.add(開nel2);
Groupl =new CheckboxGroup();
normalButton=new java.awt.Ch配 kbox(”傑準正規乱数’', Groupl, false);
normal Bu tton.setBounds(2, 10,96,24 );
panel2.add(norma1Button);
randomwalkButton =new java.awt.Checkbox(”ランダムウオーク・・, Groupl, true);
randomwalkButton.se由ounds(l10,10,120,24);
同nel2.add(randomwalkButton);
bondButton =new java.awt.Checkbox(”線価の動きそデル”, Groupl,false);
bondButton.setBounds(236, l 0, 120,24);
開nel2.add(bondButton);
labelButtonl =new symantec.itools.awt.Labe!Button();
住y{
labeIButtonl.setText("Welcome !”);
回 tchGava.beans.PropertyVetoExceptione) { }
紅y{
labeIButton l .setBorderColor(new java.awt.Color(8421504));
catchGava.beans.PropertyVetoException e) { }
try {
labe!Buttonl.setButtonColor(new java.awt.Color(l6762880));
catchGava.beans.PropertyVetoException e) { }
label Button l.setBounds(6,54, 118,29);
岡田11.add(labeIBu tton 1 );
muSiider = new symantec.itools.awt.Horizonta!Slider();
町y {
muSlider.setMin Value(・10);
国 tchGava.beans.PropertyVetoExceptione) { }
muSlider.se由ounds(246,54,118, 12);
muSlider.setForeground(new Color(8421504));
muSlider.setBackground(new Color(16762880));
問nell.add(m uSI id er);
sigumaSlider=new symantec.itools.awt.HorizontaISlider();
try {
sigumaSiider.setMaxValue(20);
団 tchGava.b田ns.Pro開rtyVetoExceptione) { }
町γ{
sigumaSlider.setMin Value(O);
回 tchGava.beans.PropertyVetoExceptione) { }
位y{
sigumaSlider.setValue(l);
回 tchGava.b回 ns.PropertyVetoExceptione) { }
sigumaSlider .setBounds(246,η,118,12); sigumaSlider.setForeground(new Color(8421504));
-187-
sigumaSlider.setBackground(new Color(16762槌0));
問nell.add(sigumaSlidぽ);
la bell= new java.awt.Label(”μ:”,Label.RI GHTI; label 1.setBounds( 168,54,24, 12); panel l.addOabell);
label2=new java.a帆 .Label(”。:”,Label.悶GHT);label2.se由ounds(l38,72,56,12); 同nel1.add0abe12);
muText=new java.awt.TextFieldO; muText.setText(”O°');
muT回 t.se由ounds(198,54,35,15);
muText.setBackground(new Color(16777215)); 開nell.add(muT回 t);
sigumaText=new java.awt.TextFieldO; sigumaT田 t.setTextCl・-);sigumaText.setBounds( 198, 72,35, 15 );
sigumaText.setBackground(new Col or( 16777215) ); 開nell.add(sigumaText);
グ}}
randomCanvas=new RandomCanvas(); randomCanvas.setBounds(6,6,4 l 4,26η; randomCanvas.setBackground(new Color(65535)); add(randomCanvas);
グ{{REGISTERLISTENERS SymMouse aSymMouse=new SymMouse(); normaIButton.addMouseListener(aSymMouse); randomwalkButtonぷldMouseListenぽ(aSymMouse);bondButton.addMouseListener(aSymMouse); labelBu tton 1.addMouseLi stener(aSymMouse); SymAction ISymAction=new SymActionO; muSlider.addActionListenerOSymAction);
sigumaSlider.addActionListener(ISymAction);
グ}}
RandomCanvas randomCanvas; グ{{DECLARECO灯 ROLSjava.awt.Panel凹nell;java.awt.Panel panel2;
java.awt.Checkbox nonna!Button; CheckboxGroup Groupl; java.awt.Ch似 boxrandomwalkButton; java.awt.Checkbox bondButton; symantec.itools.awt.LabelButton labelButtonl; symantec.itools.awt.HorizontalSlider muSlider; symantec.itools.awt.HorizontalSlider sigumaSlider; java.awt.Label labell; java.awt.Label label2; java.awt.TextField muText; java.awt.TextField sigumaText; //}}
class SymMouse extends java.awt.event.MouseAdapter
public void mouseClickedGava.awt.event.MouseEvent event)
Object object= event.getSourceO; if (object= =nonnalButton)
histButton MouseClicked(event);
else if (object= =randomwalkButton) randomwalkButton MouseClicked(event);
else if (obj配 t==bondButton) bondButton MouseClicked(event);
-188-
統計教育のためのランダムウオークアプレットについて
else if (object= =labeIButtonl)
labeIButtonl mouseC!icked(event);
void histButton _ MouseClickedfjava.awt.event.MouseEvent event)
//{{CONNECTION
uγ {
label Button 1.setB uttonColor( Color .orョnge);
labe!Buttonl.setText(”標準正規乱数”);
catch(Exception e) { }
muT回 t.setText(”O”);muSlider.setVisible(false);
labell.setText(”平均”);
sigumaText.setText(”1”);
sigumaSlider.setVisible(false);
label2.setText(”標準偏差”);
muText.setEditable(false);
sigumaText.setEditable(false);
グ}}
void randomwalkButton _ MouseC!ickedfjava.awt.event.MouseEvent event)
グ{{CONNECTION
町y{
labelButtonl.setButtonColor(Color.orange);
labeIButtonl.setText(”算術ブラウン運動”);
臼 tch(Exceptione) { }
muSlider .set Visible( true);
sigumaSlider.setVisible(true);
label l.setText(”μ”);
label2.setText(”a");
muText.setEditable(汀ue);
si忠imaT ext.setEdi table( true);
グ}}
void bondButton _ MouseClickedfjava.awt.event.MouseEvent event)
//{{CONNECTION
try {
label Button l .setButtonColor( Color .orange);
labelButtonl.setText(”幾何ブラウン運動”);
catch(Exception e) { }
muSlider.setVisible(true);
sigumaS!ider.setVisible(true);
label I.set Text(”μ”) ;
label2.setT邸 t(”
muT位 t.se也d凶ble(位ue) ; sigumaText.se也ditable(true);
muText.setText(”0.3”);
sigumaText.setTextC l ");
グ}}
-189ー
void JabelButtonl _ mouseCiicked(java.awt.event.MouseEvent event)
//{{CONNECTION
set();
町y{
labeIButtonl.setButtonColor(Color.red);
labeIButton 1.setText(”トライ&トライ&トライ”);
αtch(Exception e) { }
の}
class SymAction implements java.awt.event.ActionListener
public void actionPerlormed(java.awt.event.ActionEvent event)
Object object= even t.getSource();
江(object==muSiider)
muSlider actionPerlormed(event);
else if (obj配 t==sigumaSJider)
sigumaSiider _ actionPerformed(event);
void muSiidぽ_actionPerlormedfjava.awt.event.ActionEvent event)
//{{CONNECTION
muText.setText(S凶ng.valueOf((double)muSiider.getValue()/10.0));
//}}
void sigumaSJider _ actionPerformedfjava.awt.event.ActionEvent event)
//{{CONNECTION
sigumaText.setText(S甘ing.val ueOf( ( double)sigumaSlider.get Value(ν10.0));
//}}
int flagsd=2;
double musd=0.2;
double sigumasd=0.5;
public void set(){
if(normaIButton.getState()= =true)flagsd= 1;
if(randomwalkButton.getState() = = true)flagsd = 2;
if(bondButton.getState()= =町田)flag叫=4;
if(flagsd> 1){
musd=Double.valueOf(muText.getText()).doubleValue();
if(musd> 1){
musd=l.O;
muText.setText(" 1.0"');
ぜ(musd<・1){
musd=・1.0;
muText.setText(”-1.0”};
sigumasd= Double.valueOf(sigumaText.getText() ).double Value();
if(sigumasd>2){
sigumasd=2.0;
sigumaT田t.setT回 t(”2”);
} if(sigumasd < O){
sigumasd = 0.0;
sigumaT回 t.setText(”0");
-190-
統計教育のためのランダムウオークアプレットについて
else{
musd=O;
sigumasd= 1;
}
randomCanvas.set(flagsd,musd,sigumasd);
IIランダムウオーク
class RandomCanvas extends Canvas{
int flag=2;
double mu=02; double siguma=0.5;
public RandomCanvas(){
}
public void set(int flag,double mu,double siguma){
this.flag=flag;
this.mu=mu;
this.siguma = siguma;
re凹int();
II乱数部分の描画
public void paint(Graphics g){
int width=size().wid出;
int height=size().height;
int counter,i,nn,m,xO,yOO,xl,xorigin,yorigin,xw,yh;
int xrO,”。0,xrl;double x,y,f,yO,yl,ylO,yll,yrO,yrl,dx,dyO,dyl,tふm回 n,s伺 le,STP;
double els託ntr[]=newdouble[30];
double clssO=new double[30];
Date date=new Date();
Random random;
m=lOOO;
nn=lO;
江(m > width) m = width;
random= new Random(date.getTime());
clss[O]=ー3.5;
clsscntr[0]=0.0;
clss[nn] = 3.5;
也=7.0/(double)nn;
xw=(int)((double)wid山/2.0d/(double)nn);
yh = (int)(((double)heightワ.倒/4.0d-10.0)’Math.sqrt(2.0d’Ma此Pl));
for(i = l;i < =nn・1;++i) clss[i]=clss[i.1]+dx;
counter=l;
s=0.0;
mean=O.O;
xO=lO;
t=0.25;
民ale=l;
グif(flag==4)scale= 1;
STP = (double)heigh凶3.0*8.0*3.5*sαle);
dyO= 1.0;
yO=(double)height*7.0cV8.0d;
yOO=(int)yO;
yrO=yrl =(double)height*O.S*(mu + 1.0)・10.0*mu;
yrOO=(int)(戸O+dyO・STP);dx = (double)width/(double)m;
y!O=yll =(double)yrOO+ Math.log(dyO)刊eighν(3.0*8.0・3.5*scale);if(flag> 1){
g.setColor(Color .red);
g.drawLine(8,yr00,12,yr00);
-191 -
g.drawS凶ng(”O”,I,戸。。);
g.drawS出ng(”25",l,戸00-25*(int)(STP));
g.drawS凶ng(”50”,l,yrOO・50・(int)(STP));
g.企awS出ng(”-50",l♂00+50・(int}(STP)};
g.合awS凶ng(”-25”,l,戸。。+25傘(int)(STP));
g.setColor(Color.gray);
g.世awLine(xO,(int)yO,width,(int)yO);
g.drawLine(xO,height,x0,0);
if(flag<3) g.的 wLine(xO,戸∞,叩d出♂∞);
i=l;
while(yrOO-i> =O 11 戸OO+i<=height){
x=i%10;
i=l;
y=i%25;
江(x==O){
}
g.setColor(Color.white);
江(y==O)g.setColor(Color.lightGray);
g.drawLine(x0-1,yrOO-i,wid山,戸00-i);
g.drawLine(x0-1,yrOO+i,width,yrOO+i);
i=i+l;
while(i< =width){
x=i%10;
y=i%25;
if(x==O){
}
g.setColor(Color.white);
if(y = = O)g.setColor( Color.light Gray);
g.drawLine(xO+i,height-1,xO+i,0);
i=i+l;
江(flag<2){
g.setColor(Color.gray);
g.drawLine(xO,(int)yO,width,(int)yO);
g.drawLine(xO,height,xO,(int)((double)height勺.0/4.0));
g.drawLine(xO,(int)((double)height*3.0/4.0)・10,xOρ);
g.setColor(Color.black);
g.drawS凶ng(”回数は”+S凶ng.valueOf(width)+”, ..1t=0.25です。”,wid出/2+20,40);
while(counter< =m) {
江(flag>1) x=random.nextGaussian();
else x = random.nextGaussianO句iguma+mu;
s+=x・x;ロ1ean+=x;xl =xO+(int)dx;
江(flag>I){
yl =(double)yOO-x*STP;
if(flag>2){
dyl=dyO+mu・dyO事t+ siguma•x•Ma出.s午t(t)・dyO;
yrl = (double)yrOO-dy 1’STP; if(yrl >height)
yrl =(double)height + 1.0;
江(yrl<0)
yrl=・1.0;
dyO=dyl;
if(flag= =4){
dyl=(mu-0.S*si思1ma*siguma)汽+siguma*x*Math.sqrt(t);
yl 1 =ylO-dyl *STP;
g.setColor(Color .magenta);
-192-
統計教育のためのランダムウオークアプレットについて
g.drawLine(xO,(int)ylO,xl,(int)yll);
ylO=yll;
else yrl=yrO・(mt』町+siguma*x*Math.sqrt(t))汚TP;
else yl = (double)yOO-(x・mu)汚TP;
if(flag> 1) g.setColor(Color.blue);
else g.setColor(Color.gray);
if(flag> l){
g.drawLine(xO,(int)yrO,xl,(int)yrl);
yrO=yrl;
if(flag<3){
g.世司wLine(xO,(int)yO,xl,(int)yl);
yO=yl;
xO=xl;
if(x<clss[l])clsscntr[l] + = l;
for(i = l;i < = nn・2;++i){
江((clss[i)<=x) && (x<clss[i + 1))) clsscntr[i + l] + = 1;
if(x> =clss[nn-l])clss印 tr[nn]+=l;
counter+= 1;
m回n/=(double)m;
s/=(doubleXm・l);
s-=((double)ロl/(double)(m-1))・mean’mean;s=Math.sqrt(s);
xO=xorigin = 10;
yO = (double)height *3.0d/4.0d-10.0;
yorigin=(int)yO;
if (flag<2){
for(i=l;i<=nn;++i) {
clsscntr[i:V=(double)m;
g.setColor( Color .grョy);g.合CIWRect(xO,(int)(yO-clsscntr[i )*yh),xw ,(int)(clsscntr[i]・(double)yh));
xO+=xw;
//標準正規密度関数
f= 1.倒/Math.sqrt(2*Ma出.Pl);
xw*=nn;
也=xwn.o;xO=xorigin= 10;
yO=(double)yorigin;
for (xl=-xw/2;xl< =xw/2;+ +xl){
x=(double)xνdx;
y= (double)yorigin-yh *f*Ma山.exp(-x*x/2.0d)ホ(7.0/nn);
g.setColor(Color.gr可);
g.drawLine(xO,(int)yO,xl +xw/2+ 10,(int)y);
xO=xl +xw/2+ 10;
yO=y;
g.setColor(Color.black);
if (flag<2){
g.drawS凶ng(”平均:”+S凶ng.valueOf(m回 n),20,20);
g.drawS凶ng(”標準備差:”+S凶ng.valueOf(s),20,35);
else{
江(flag==2){
-193ー
g.drawS凶ng(”平均:”+String.valueOf(mean),ll,height-10);g.drawS凶ng(”標準偏差:”+S凶ng.valueOf(s)川id出/2,height-10);
else{ g.setColor(Color.blue); g.drawS凶ng(”So::;l,S(t+L1t):::;St+μ・St・L1t +o・z・St・(.{L1t)”川d山/2・加,55);g.setColor(Color.magenta); g.drョwS凶ng(’'Lo:::;O,L(t+L1t):::;Lt+い.ν2・o・o).::lt+o・z・(.{L1t)”,wid出/2・80,70);
-194ー