液晶全とっかえする財力が欲しい・・・

消費税アップ前に、駆け込みでEIZOの27インチ4Kを1枚ついに買った。

1回使い始めると、4K以外の環境に戻れなくなる。

2560x1440のときは、画質が少し荒く感じてて、まあ何となく見にくいから便利とも言い難いなとか感じてたわけです。ところが4Kになると全くそういうのがなくなる。

ここのとこ、作業の求められるレベルが上がってきた割には、縦解像度1080で作業してきてた。しかし、久々に縦あるので作業すると、やっぱ縦1080はないなという気分。

27インチ4Kに不満はないが、問題は、デュアルでの相手ディスプレイ。4K側を150%にしている関係で、下の領域でしか2枚目のディスプレイへアプリが移動できないこと。となるともう1枚買いたくて仕方がない。

さらに実家で24インチの縦1200で作業してても27インチ4Kが欲しくなる中毒ぶり。

32インチ4K買ってもそうなるのかな・・・

データの取得でフォルダを読み込むときに相対パスを使おうとしてはまる

Rあたりだと,複数のExcelファイルを一括で読み込まして結合するぐらいなんてことはない。パッケージがある。ところがExcelだとそれが面倒。

Excelしか使わない職場でそんなん必要なのか?なんだけど,同一ファイルの同一シートに複数の人間に入力させると見通しが悪くなるので,複数ファイルに分割させて入力させたいという要望がある。

自分一人で作業するなら,CSVで入力をしておいてPowerShellを開いて

*.csv > filename

としてファイルをくっつけて,後からソートでヘッダを消すという強引なことをやるのだが,他人様が絡むとそうはいかない。あと,CSVExcelで使ってると警告がいちいちうるさいのでできればそれを黙らせたいのでExcelてやりたい。

最近,世間にはPowerQueryという便利なものがあるらしいということを知った。これを使ってみたところ,やりたかったことができて問題はなくなった。ただ,まだ他人様に渡せない。この機能,フォルダを指定すると絶対パスで指定されるため,他のマシンに持っていくと使えないのである。自分が使う分には,ソースの変更でフォルダを再指定してやれば済むのだが,他人様にそれをお願いするわけにはいかない。

ということで,相対パスで使えないかと調べたものの,私の日本語能力では探しきれなかった。

結局,ぐぐってでてきたのは,なんかわけのわからない横文字で色々書かれているものだった。

https://techcommunity.microsoft.com/t5/Excel/Power-Query-Source-from-Relative-Paths/td-p/206150

これを参考に動かしたところ動いたのて記録を残しておく。(気が向けばスクリーンショットとか貼ってわかりやすくする)

書かれてた解決法

まず,これを適当なセルに打ち込んで,

=LEFT(CELL("filename",$A$1),FIND("[",CELL("filename",$A$1),1)-1)

それにFilePathという名前を打ち込んでから,

    FilePath = Excel.CurrentWorkbook(){[Name="FilePath"]}[Content]{0}[Column1],

としろと書いてある。

要は

  1. 読み込ませたい絶対パスをどっかのセルに作る
  2. その部分をテーブルにして名前をつける
  3. PowerQueryで読み込む

とのことらしい。まあ,そうだろうと貼り付けれる性格ならそれで問題ないのだが?本当か?とはまった。以下は適当に調べて理解したことを書きつらねたもの。

適当な解説

1.絶対パスの作成

適当なセルに

=Cell("filename",$A$1)

とすると,ファイルのフルパスが生成される。ただし,これだとファイル名まで入ってしまうので除去してしまう必要がある。この関数,ファイル名が"[]"で囲まれて帰ってくるらしい。それを利用して,

FIND ("[",CELL("filename",$A$1),1)

と[の位置を探して,Left関数で("["の1文字手前までで切り出すので式に-1が入ってる)パスの部分だけを切り出している。

このフォーラムでのシチュエーションは同一のフォルダにあるブックを読み込むというシチュエーションなのでこれで仕事は終わり。

私の場合は,その直下に作った集約用のディレクトリのファイルを全部読み込みたいという要望なので,ここで文字列を&で結合するなどして,読みたいパスを生成すれば良いということがわかった。

2.その部分をテーブルにして名前をつける

テーブルでないものはPowerQueryから読み込めないので,テーブルに変換する。何もしなければ,列名が日本語で「列1」とついてくる。あとは,テーブル名をわかりやすくするためにFilePathと変更している。

3. PowerQueryで読み込む

Letの後に

    FilePath = Excel.CurrentWorkbook(){[Name="FilePath"]}[Content]{0}[列1],

として読み込む。後は,クエリの絶対パスがあるとこをFiePathに帰ればOK。

マイクロソフト様のありがたい仕様書を読んでみたが・・・

Excel.CurrentWorkbookまではわかる

Excel.CurrentWorkbookまでは元のリファレンスを追って,手元で動かしてみればなんとなくわかる。

Excel.CurrnetWorkbookはテーブル名とコンテンツのペアのテーブルを返すらしい。

大量のかっこの規則性がまったくわかんない

https://docs.microsoft.com/en-us/powerquery-m/operators:embed

によるとはRecord lookup operatorで

Access the fields of a record by name.

で,名前でアクセスできることになってて,{}はList indexer operatorで,

{} Access an item in a list by its zero-based numeric index.

で,indexでアクセスできることになっているらしい。

Excel.CurrentWorkbookはテーブルを返す。そっから先がわからない。{}はindexによるアクセスなので,で該当するインデックスをひっぱってきてると考えるのが自然。ただ,ExcelCurrentWorkbookの直後の部分がひっかかる。{}の中にを書いたとき,がインデックスを返すと明確に書かれてる部分が自分には見つけられない。

まあ,仮に{[Name="FilePath"]}の部分を受け入れるとすると,

  1. ExcelCurrentWorkbookでテーブルの一覧を返し
  2. {[Name="FilePath"]}でテーブル名FilePathのNameとContentのペアになったリストが帰し
  3. 2.から[Content]をを抜き出して(だから名前アクセス)
  4. 3.から0行目を抜き出して({}だからindexのアクセス)
  5. 4.から列1という名前の列のものを抜き出す([]だから名前アクセス)

と思われるのだが。今のとここういう適当な理解。

某実験本にあったお下品なコード(1)

最近、とある分野の実験統計の本が出てたので購入した(タイトルでの検索を避けるためにあいまいな書き方をしてる)。

まあ、この分野は例のごとくデファクトがStataだからStataで書かれてるのは仕方がない。しかし、この本の後半はStataのパッケージを使うのではなくStataの行列言語で手でいろいろやろうということになってる。

で、Stataが悪いのか著者の腕が悪いのか、こんなコードがでてくる

gen y0 = y == 0
gen y1 = y == 5
...
gen y16 = y == 80

下品極まりない。でもStataのリファレンスは読みたくないし、となるとこういうコードを生成することになる。こういうとき、さっとirbとかpryを立ち上げて

(0..16).each{|i| print "y#{i} = y == #{5*i} \n"}

と書いて実行して、doファイルに貼り付けて、ああめんどくさいことが終わったとやるのって普通?プログラマとしてはだめなんだろうけど。

この本のStataのコード見てるとそんなのばっか。なので、

  • なんかの言語のテンプレートエンジン使ってdoファイル作る
  • doファイル生成とdoファイル実行をmakefileとか書いて実行させる

みたいな感じにしないと、普通はやってられないと思うんだけどな。

もちろん、Stataのちゃんとした文法調べれば良いんだけど、Stataのスキルって転用不可能だから、そこにリソース割くのは得策じゃないしね。

このやり方を洗練させる方法を調査しても良いが、今の私はStataが手に入るご身分ではないのでできなんですよね。。。ということで、全部RとPythonでやっつける以外の選択肢はないんだけど。

なお、こういう下品なコードにいらついている人が私の周囲にはいなかったのも悲しかったな。。。。なお、このシリーズ、たぶんゆるゆると続いていくのでとりあえず(1)にしてる。

著作権の年数を聞く無意味な問題があったな・・・

昔、人が作った定期試験で、著作権の年数が死後何年有効かを答えさせる問題があった。

良くある問題なんだけど、その問題の?となったとこは「映画を除く」とか書いてなかったこと、かつ、選択肢に50と70の両方があったこと。馬鹿らしすぎて指摘しなかったけどね。

だいたい、そういう出題をする人自体の見識を疑ってたし。50と70の違いを暗記させて何になるんだろうね?と。

教科書は、前後の文脈があるからそこで一意に意味が決まるけど、試験で切り出すときはそうならないことがある。だから、慎重に作らないといけないんだけどね。

私が授業したときは、「そんなものどうせコロコロ変わるに決まってる。とりあえず、死後数十年とだけ知ってれば十分。必要なら検索して調べれば良いだけ。」と言い放ってた。要は「死んでからカウント」「数十年のオーダー」ということだけわかってればOKと。(ぐらいの選択問題は私も作ったことはある)

情報の定期試験って、けっこう思い込みが見過ごされやすいんだよな。わかっている人が2人いない(すなわちチェックしてくれる人がいない)ということはざらにあるし。。。。そして生徒も適当にスルーと。

CBTで統計検定を受けてきた(自分の対策と適当な感想)

自分の場合は、範囲の一部は、ここ3年ぐらい何かの形で授業をしたり試験に出題したりしているところである。また、単位を取るためにも何回か一夜漬けもしている範囲である。よって、抜けてるとこを確認するとこが中心なので、対策記事は書けない。

まあ、自分はこんなひどいレベルですからね。。。。

  • (1年に1回解く数Bの問題で) 1.96 \times \sqrt{p(1-p)/n} の式が思い出せずに慌てる。(手元ではきれいに数式でないことがあるけどもういい・・・困るな)
  • カイ二乗の統計検定量を作る時、各項を元の度数で割るのか期待度数で割るのかを良く忘れる。
  • 分散分析について書かれている部分をともに読んだことがない。 (経済だと回帰分析中心ですからね)
  • 自由度どうすれば良かったんだったっけ?
  • 数表、何それ?数表覚える前にRを覚えてしまったので・・・

など。

使った本は悪評高い本

使った本は、石井さんの書いた「大学の統計学」。最近出た本で、図表がひどいからとディスられていた本。ただ、便利なものは便利なので使った。

基本的には過去問を解いて、わかってないとことか間違ったとこを中心に読んだり解いたりするような使い方をした。なので、別にその図表の部分がどうこうや著者の主張の信頼性とかは全く関係ない使い方。

暗記を式変形で代替する人に合っていた本

この本は、わりかしいろんな導出を丁寧に書いてくれている。自分の場合、式変形はそこそこできるけど暗記は苦手という状況。よって、勉強は暗記を式変形で代替する方法を検討することが中心になる。

例えば、母比率の検定の中に[:tex p(1-p)]の項が入ってくるのは、二項分布の分散の式の名残なんだから当たり前。nをかけるか割るか迷うけど、その場で導出できるなら覚えなくてよさそうだ。そして、手を動かして確認してここは導けば良いので暗記不要、とかして暗記量を減らしていくスタイルである。

あとは、nが大きくなったら信頼区間は狭まらないといけないはずだから、狭くなる方向のほうにnがつくとかで確認すれば良いとか確認したりとか。

そして、逆説的だが、こことここはこうつながってるから導き方だけ覚えれば十分、の検討をしている過程の中で、自然に暗記も終わってしまうスタイルでもある。

こういう勉強をするときに、普通の数学の本を使うと、式変形を考えるのに時間を取られてしまうので困る。かといって、全部暗記の本だとそれはそれで式変形がまったくないので暗記できない。この本は、その中間どころなのでうまくはまった。

ハイパーできる人とものすごくできない人の中間の本はなかなかない

この手の統計本は、偏差値50前後(全部暗記)と偏差値65以上(事実を厳密に書いておけばあとは全部自分で埋める)には良い本が色々あるが、その中間の本がないんですよね・・・・

他の候補としては、大屋先生の書いた統計学入門もある。自分は、これを使っていたこともあった。スキャンしてる本をもう一度書い直すのも腹がたつのと、もう少し難易度の高い本があれば良い、ということで今回は使わなかった。純粋な初学者ならこれを勧めると思う。(若い頃に、この本を使って試験当日に2時間ぐらいで詰め込んだことがある。あまりの使いやすさに感動した記憶がある。)

どうでも良い雑感

全部真面目に対策しようとしない

図表の読み取りなんて、この検定オリジナルの問題である。いじわるひっかけの親戚もあったりする。

まず、この手の問題は、テキスト何十回読んでも意味がない。強いていうなら過去問をやりこむぐらい。それで取れなければ、打つ手はない。センスがないということで仕方がない。

そして、たいていの人は、この部分をほぼ無対策でいって0になることはない。逆に0になる人は対策時間をかけることが必要だが。

あとは、高校1年のレベル(数A)の確率の問題も対策してもあまり意味がない。解ける人はほとんど対策せずに解ける。逆に解けない人は少々やっても解けない。特に、少しひねった問題が出たら(そして出やすい)対策は水の泡である。

高校レベルの確率の問題が解けるかは、大学受験のときに培ったものに依存する。その蓄積がない人が、今皿やり直すのはコスパが悪い。この手の確率は(コンピュータソフトで統計をやる分には)後にもつながらないですかね。。。。

出題が予想される全範囲はきちんとやる必要がある

この検定の2級、分野ごとの問題の難易度が安定しないイメージがある。よって、「この分野で点を取る」という目算はできない。

ここ2回〜3回は、ほとんどが素直な問題になっているが、それより前は、え?頭使わせるわけ?って問題がいくつかある。

もし「ここだけで点を取る」と決めていた分野が、その面倒な問題にあたったらどうしようもない。面倒な分野が一定ならいいが、ランダムに感じる。なので、事前には手のうちようがない。

条件付き確率の問題はスパッとハマると取りやすい。

単純にベイズの定理を使う類の問題は、対策の有無で相当に解く時間がわかれる。ただし、素直な問題が出た場合に限るが。

この手の問題を解くコツは、ベイズの定理など知らないと言い切ってしまうことがある。

苦手な人用の解法は、全体を1000とか適当に仮定して、期待値をばらばらと計算してから、期待値の比率を取るという方法が第一候補。マークであること、確率は少数で与えられることが多いことからこれが有効。

普通に解くとしても、小数の入った式など書く必要はない。確率をもっとも簡単な比にしておいてから式を作ってさっさと計算である。比率によっては式すらなく解ける。

(という授業を、昔したこともある。。。)

変わった出題がしにくいのは後半の部分

検定の部分は、ほぼ各種教科書通りに出すしかないところである。

ただし、暗記ゲーなので、暗記していなかったらそれまでである。「真面目に対策して」受かりたい人は、ここをきちんとやるべきである。

ただし、往々にして「真面目に対策して」の人は、「式を覚えて手順通りに実行(あるいは正しい式を選ぶ)」こと自体が苦痛だと思われる。「真面目に対策」する人は数学力が低いことが多いと考えられるからである。

しかし、覚えるのがつらいからといっても、数学力がない以上、図表や確率のダメさを根治するのはコスパが悪い。あきらめて暗記ゲーに勤しむしかない。

なお、検定と回帰の部分の配点は合わせて半分ぐらいと思われる(スコアレポートから推測)。

単に資格を取るだけか長期モードで残そうとするのか

資格を取るだけなら、詰め込みが有効である。1週間ぐらいは他に何もいれずに詰め込めば良い。ただ、それだと忘れる。

なお、たとえ、長期間勉強するモードであったとしても、塗る回数を増やして暗記するモードは「資格試験をとるため」とほぼ同等とみなせる。そういう勉強も忘れやすい。

どういうスタンスでやるかで使うテキストや勉強法も変わってきそう。なので、この検定の勉強法の情報をあさる時も、これ個人差が大きいよな、感じながら、いろんな対策エントリを読んでた。

知らないこともいろいろ触れられて良かった

コレログラムとかは使ったことなかったので、へーっと思ったり、色々と発見はあった。

なんだかんだいって、試験自体は良くできてる試験じゃないのかなとは思う。

CBTで統計検定2級を受けきてみた(事務手続きなどで感じたこと)

統計検定の2級を暇つぶしに受けてきた。(いちおうは受かってきた。もう少し点数はほしかったが。。。)

まあ、自分の経歴を見る人が見たら、2級を受けてきて何になるの?なんだけど。しかし、文系じゃんと見る人もいる。よって、理系っぽく見せるためのアクセサリーは一つでも増やしておこうということで受けてきた。

本当は、準1級とか1級でないと意味がないが、

  • 近いうち(年度末)になにがしかのかが必要になったときに備えて
  • 試験の締め切りを切らないと基本の部分の復習をしない(準1級の準備をしない)

ということもあり、CBTで受けてきた。

事務的にひっかかった部分とか

注意しておきたいことをいくつか列挙しておく。

  1. PBTは5000円であるがCBTは7000円(2000円高い)
  2. 受付は各試験会場。よって、受付のシステムのクォリティーが微妙 (専用のシステムが作られていない会場がほとんどかと)
  3. 今日申し込んで、明日受けられるわけではない会場が多い。
  4. 開催日がかなり限られている会場もある。
  5. 試験会場・試験日の検索システムはものすごく使いにくい
  6. 試験会場が便利なとこにあるとは限らない(私の住んでる地方の場合)
  7. 持参物に注意。電卓は貸し出しではなく持ち込み。
  8. 合格証にCBTの合格と明記されるらしい(これをどう見られるかは知らない)。

試験のオペレーションなどは、守秘義務とかにひっかかると嫌だから書かないけど、あまり整っている印象はなかった。私のイメージでは。 ここは、かなり会場に依存すると思う。

PBTを受けるほうが得だとは思うが

次のような場合を除いてはPBTのほうが得だと思う。

  1. PBTの会場までが遠い(統計検定は大都市でしか開催されない)
  2. 貴重な試験機会を2級ごときで使いたくない(これは1.とも関連するが)
  3. PBTを受けて落ちて、次の半年までひきずるのが面倒なのでさっさと片付けたい。

CBTはPBTよりやりにくいのも事実

計算用紙は一応渡される(どこまで書いて良いかわからないので詳細は書かないが)。しかし、PBTほど潤沢なスペースがあるわけではない。

私がコンピュータで困ったのは次の2点。

  • 図表や数値の横に書き込みができないので、概算であたりをつけるなどの、省エネ解法がやりにくい。
  • 消去法がやりにくい。

3級・ギリギリで受かろうとする人・ワーキングメモリが少ない人はCBTはやめておきましょう

紙だったらざっざと書いてばさっと解いていけば良いとこを、画面上だったら指差し確認して指を折って数えていくとかしないとならない。よって、CBTでやる人は書き込みせずに解く練習をしておいたほうが良い。

自分のように図表の読み取り問題を何問か落としても、別に落ちるわけないと思って受けに行ってる場合は困らない。しかし、ボーダーギリギリで受かろうとしている場合、こういう予備知識や計算なしで取れる問題をとりこぼしたくないという感覚で受ける人もいると思う。この場合、CBTは危ない。

また、普通に解いたら紙と比べて時間もかかる。

なので見出しに書いた通り

  • 図表読み取り問題の多そうな3級
  • ギリギリで受かろうとする人
  • ワーキングメモリが少ない人

はPBTで受けておいたほうが良い。逆に、PBTで受けてギリギリ落ちて、忘却が始まる前に受けてしまうという使い方はありである。

応用情報の体験談はかなり人依存であることを意識しましょう

この記事の続きである。

かなり昔に応用情報を受験した

微かな経験一覧

前の記事で無勉で未経験の文系で応用情報は通ったと書いた。しかし、経験とカウントできない微かな経験は持っていたのである。以下、列挙してみる。

コンピュータ

  • 簡単なHTML + CSSを使って日記を書いていた。
  • tdiaryレンタルサーバに設置して日記を書いてた。
  • 固定IPが与えられて、PCとプリンタを言われた通りに設定してた。 (この経験は、午後問の読解にかなり効いてくる。)
  • 簡単なLinuxの使い方の実習2単位 + Linuxサーバを立ち上げてごにょごにょする実習2単位を経験してた (ただし、ゆるふわ系の実習。)
  • IT mediaとか@itとかインプレスのニュースサイト(PC watch, Akiba PC Hotline)とかT先生の自宅日記とかその他もろもろのITに関連するサイトをRSSに入れておいて、暇つぶしに読みまくっていた。
  • PCを自作してたこともある。Linuxをメインマシンにして使ってたこともある。
  • RubyとRで簡単なスクリプトを書くことはできる。
  • センター数学のBASICは勉強していた。

数学

  • 高校数学はそこそこできる。数3だけは少し怪しい。
  • 学部理系の教養レベルの確率・統計はなんとなくはわかってる。

ストラテジ・マネジメント

隠される経験と能力

多くの体験記は、自分の本当の下地を隠して書かれている。

隠される経験

上で書かれているような、コンピュータについての些細な経験は、隠されがちである。

隠される理由と推測されるものを列挙してみるとこんな感じ。

  • この程度は日常生活を送ってれば誰でも経験することだと思ってしまう
  • 人様に対して経験と言える経験ではない
  • ある無形の経験が試験を解く上で効いている、ということを意識化できてない。

隠される能力

能力もまた隠されがちな要素である。

例えば、理系の筆記学力も、かなり試験対策に対して効くファクターである。理系の筆記で得た知識そのものが効くわけではなく、その筆記を解く能力を開発することで得た能力が効いてくるのである。

個人の体験記はあくまで個人のスペック依存です

以上をふまえると、悪意なく「少し参考書を勉強して過去問をやれば応用情報はいける」という記事が量産されるのを仕方がない気がする。

検索して体験記を読んでると、こういうのはごろごろある。よって、読み手としては防衛本能を持って読むしかない。

注意すべき書き手1 : それなりの理系能力を持つ若い人

こういう人たちは大学に普通に通ってるだけでそれなりにコンピュータに触れられているし。また、筆記学力も既に身につけられている。

注意すべき書き手2: そこそこ賢い文系の人

「(バカな or 普通の)自分でもできたから人にもできる理論」を書きがちなので要注意である。

なぜこうなるかというと、こういう人たちは自分の経験や能力をメタに見れるレベルの賢さまではないからである。あるいは、それができたとしても、めんどいのでえいっと書いちゃう傾向もありそう。

余談 : 今は筆者は少しはまともな知識レベルです

当時の知識レベルのまま、こういう記事は書けません。

一応、この後で高度3つ(NW, DB, SC)を取り、その勉強の過程で知識は補完した。だからこそ、いかに無謀な状態で受けに行ったかをこうやって振り返れるわけです。