#author("2024-03-08T01:11:15+00:00","","") #author("2024-03-08T01:11:28+00:00","","") [[引き継ぎ(中島)]] 目次 #contents ---- *目標 [#he736473] データ数を2つ集め併せて計4つほど程度増やしてRF6.2で出力を得て不要な変数が消せて必要な変数がどれかわかる結果を得る. *データの収集 [#tf106502] 統計で見る日本というサイトで,2020年の外国人数と小学校数(可住地面積100km2当たり)の csvファイルをダウンロードする. #ref(0229_02.png,,30%) #ref(0229_03.png,,30%) #ref(0229_04.png,,30%) #ref(0229_05.png,,35%) #ref(0229_06.png,,30%) *使ったプログラムとデータ [#j6630b36] #ref(RF6_real_experiment100.py,,RF6_real_experiment100.py) #ref(data-city_num.csv,,data-city_num.csv) #ref(open-data-20240220T010622Z-001.zip,,open-data-20240220T010622Z-001.zip) #ref(data-20240220T010624Z-001.zip,,data-20240220T010624Z-001.zip) #ref(LPA.R,,LPA.R) #ref(k-means_0205_3.py,,k-means_0205_3.py) *データの整理 [#r984c834] ダウンロードしたopen-data-20240220T010622Z-001の中にあるopen-data_2020.csvに集めた2つのデータを元あるデータの右に貼り付ける. その際に,1741のデータから651のデータを抜き取ること.どのデータを入れるかはdata-city_num.csvを見て行う.(市町村コードが対応するデータを取る.) #ref(0229_07.png,,30%) #ref(0229_08.png,,30%) *RとRstudioの導入 [#eed2f795] 実験に必要なRとRstudioの導入は下記のサイトを参考にして行った.~ https://www.tku.ac.jp/iss/guide/classroom/soft/rrstudio-desktop.html *潜在クラス分析(LPA) [#q4de3b9d] ①パッケージのインストール&br; これはLPA.Rを先ほどダウンロードしたRstudio上で行う.~ プログラムを実行する前に,パッケージのインストールを行う.~ 右下のPackagesの所から行う.~ #ref(0229_014.png,,30%) 左上のInstallを押すと,好きなPackagesをインストールすることが出来る.(今回はdepmix4) #ref(0229_015.png,,30%) ライブラリのインストールの確認は以下のコードをconsoleに打つことで行える.~ >library() インストールしたパッケージが完了していることが分かる. #ref(0229_016.png,,30%) ②プログラムの変更部分&br; ・12行目:~ lca <- read.csv("C:/Users/towa/Labo2/数値実験結果/オープンデータを用いたLPA/2020/data_2020/LPA_0209/open-data_2020.csv") ファイルパスを自分のものに変更.~ ・27行目: cont_data <- dplyr::select(lca, x_1:y) #連続変数のみ (lca, x_1:y)のx_1:yをx_1:x_13に変更(データが13個あるため).~ ・36行目 mod <- mix(list(x_1~1, x_2~1, x_3~1, x_4~1, x_5~1, x_6~1, x_7~1, x_8~1, x_9~1, x_10~1, y~1), y~1を消して,x_11~1,x_12~1,x_13~1を追加.(これもデータが13個あるため).~ ・39行目 nstates=5, # the number of latent classes 5から4に変更.(今回は4つのクラスに分けたいから). ・40行目 family=list(gaussian(),gaussian(),gaussian(),gaussian(),gaussian(),gaussian(),gaussian(),gaussian(),gaussian(),gaussian(),gaussian()), gaussian()の数を13個に増やす.~ ・42行目 respstart=runif(110)) 110から104に変更.(今回は104個の潜在クラスのどれに所属するかの初期確率) ・59行目 write.csv(posterior.states, "C:/Users/towa/Labo2/数値実験結果/オープンデータを用いたLPA/2020/data_2020/LPA_0209/open-data_2020_LPA_result.csv") データを入れたい場所を自分のものに指定. #ref(0229_017.png,,30%) ③プログラムの実行&br; Rstudioで実行を行う場合,実行したい範囲を選択して右上のRunをクリックするとできる.~ 今回はパラメータ数にペナルティを設けることでモデルの自由度に対して制限をかける指標であるBICを表示するところまで行った. #ref(0229_09.png,,30%) console上の結果は下記のようになる. #ref(0229_010.png,,30%) グラフはplots上に表示される. #ref(0229_011.png,,30%) 次にモデルのフィット結果から得られる各対象が各潜在クラスに所属する確率(事後確率)を計算.これにより,各対象がどのクラスに属するかの推定が得られる.~ そして,その結果を表示し,csvファイルに保存する. #ref(0229_012.png,,30%) console部分で最初の6つの観測に対して小数点以下4桁を四捨五入して表示され,指定したcsvファイルに保存されていることが分かる. #ref(0229_013.png,,30%) その結果,4つのqに分けられた. #ref(0229_024.png,,30%) *RF6の実装 [#ueb83669] 実装は,RF6_real_experiment100.pyのプログラムを用いて行った.~ ①実装を行う前の準備&br; 集めたデータの正規化を行う. 説明関数であるx_1からx_12については,すべての値を最大値で割り,値の範囲を0~1に抑える.~ #ref(0229_025.png,,30%) 目的関数x_13については,z-scoreに変換する.~ 変換の仕方は,https://statorials.org/ja/z%e3%82%b9%e3%82%b3%e3%82%a2%e3%82%a8%e3%82%af%e3%82%bb%e3%83%ab/~ 上のサイトを見て行った. #ref(0229_026.png,,40%) ②プログラムのプログラムのプログラムの変更部分&br; ・169行目: ファイルパスを自分で収集したデータが入ったcsvファイルのパスに変更する.~ #ref(0229_020.png,,45%) ・175行目: num_qの値を先ほど出した4に変更する. #ref(0229_023.png,,60%) ・359行目: num_Rの値を5に変更する. #ref(0229_021.png,,60%) ・640行目: if R==1:から下の部分をコメントアウトする.~ これと同様に,J=3,4,5も同じ操作を行う. #ref(0229_022.png,,40%) csvファイルの出力場所を指定する. #ref(0229_027.png,,40%) ③出力結果&br; csvファイルは,指定したフォルダに格納される. #ref(0229_028.png,,40%) #ref(0229_028.png,,30%) *k-meansクラスタリング [#ha5a2e3d] *式の出力 [#g1b4a88f]