自分は米国民間コンサル会社でずっと働いています。
コンサルというと色々ありますよね。皆さんが良く聞くのは、ビジネス系のコンサルだと思いますが、自分がやっているのは、社会福祉系、教育系、政策系のコンサルです。
自分はシカゴ大学で社会学の博士号をとりましたが、まわりの同僚も、だいたい社会科学系、教育学系のPHDかMAが多いです。だから、サンフランシスコ付近に生息しておられるIT系の日本人のかたがたがやっているのと少し違う業界です。
だいたい、クライアントは州政府か連邦政府で、教育プログラムの評価が多いのですが、今、やっているあるプロジェクトは、コンサルっぽさが半端ないので、ちょっと説明してみますね。
ある州政府が、ある青少年の育成を助けるプログラムを運営していますが、その運営において、評価という視点が大切です。一体目的が達成されているの?やるって言っていることがちゃんとできてる?という視点です。
そこで今回のタスクは、データシステムで集めていることが、実際に使われているのか?そして、使われているデータ項目は役に立っているの?という視点からデータを見ることでした。
まず、データからアウトプットされるデータが私のPCにあります。これはエクセルでもらいました。そして、それを普段はSASで読み込んで、色々な指数を出してレポートを作成します。
今回はRで読みこんでみました。
Rじゃないとだめなわけではありません。が、最近まで仕事がスローで苦労していて、転職しないといけないなら、RとかPythonとかでデータ分析できないといけないなと思っていて、数年、Rをできるだけ使うようにしているのです。
仕事は1か月ぐらい前から普通になりましたので別に転職をする必要はなくなりました。でも、あせってRを勉強してきて、今年ぐらいから、普通に使えるようになりました。
Rに読み込んで、それぞれのデータ項目(変数)に本当にデータが入っているかを確認します。100%入力されている場合は、ちゃんとデータが集められているということですが、20%しか入力されてなかったりすると、本当にこの項目必要なの?ということになりますね。
ちなみに、私の業界では、データを収集する会社は別にいて、そこからデータをもらってくるがために、必ずしも、データの内容が簡単に分かるわけではありません。さらに、よく、どかんとデータをくれるのはいいんですが、内容は意味不明だったりするんです。だから、ちゃんと見て理解します。
(データ収集の会社と分析の会社が違うのはよくあります。)
今回は、そのデータを入力するシステムにLOG INしまして、そこで問われている項目と、実際のデータ(エクセル内にある)を照らし合わせて、あ、聞いていることはここにあるな、この変数名だな、、というのを確認します。
問われていないのに、データがあったりすることもありますが、これは例えば5年前には、収集していたが、今は集めていないということだったりです。これは経験で気づくことができます。
とても具体的になりますが、Rだと、以下のようにして読み込みます。データはエクセルからSASデータに変換したものを使っています。細かいですが、これはSASで変換したのではなくてSPSSで変換しました。SPSSのほうが、変数名が短くなるので、自分はSPSSで変換しています。
REF <- read_sas("Referral_info.sas7bdat")
そして、この中にある日にちを表す変数を分かりやすいように、カレンダー変数に変更します。このときに、originを指定しますが、そもそもこのやりかたも、直前にぐぐりました。
REF$A_Date <- as.Date(REF$A_Date, origin = "1899-12-30")
そして、これでちゃんとカレンダー変数になったかどうかは、オリジナルの日にちと、Rデータの中の日にちが同じだったら、正しく処理できたということになります。
経験で、ExcelからSASに、あるいは他のソフトウェアに読むと、日にちがずれるというのを知っているので、慎重になります。
自分は英文科卒業なのですけど、上のように、確認しながらプログラミングができるので、文系でもデータ分析はできると思います。合ってるかどうかが、確認できるのです。
ただし、ぐぐるのは苦痛です。ぐぐらなくても、できるようになれば楽しくなってきますが、ぐぐっているうちは、面倒くさいです。
もう一つ。文系だった自分がなぜデータ分析や統計分析ができているのかですが、上のようなやりかたを一回使ったら、それをメモしておくんです。そして再利用します。メモする場所は私の統計関連のウェブサイトです。ここに置きます。
このサイトがないと仕事になりません。サイトなので、家からでも会社からでも日本からでもアクセスできます。
ぐぐるのは苦痛ですが、自分がすでに使ったものを再利用するのは、楽しいです。
さて、データを読み込んだ後で、とりあえず最近のものを1年分だけ見ることにしました。昔のは見てもしょうがないからです。クライアントにとっては。
これもぐぐりました。2019年の8月26日からの後のものをデータとする、、と指定します。
REF2<-filter(REF, A_Date >= as.Date("2019-08-26"), A_Date <= as.Date("2021-12-31"))
これも、別にプログラミングが専門じゃなくても、結果が正しければ、正しいことをしたことになるのです。
ちなみに、本当は、2019年の8月26日から後のものと指定したかったのですが、やり方が分からなかったので、とりあえず、その時点から、今年の年末までと指定しました。
もし、このプログラムを来年も使うとしたら、気を付けないといけませんね。
そして、以下は、以前、使ったものを関数を再利用したものです。ある変数にデータがどれだけつまっているかというのを計算します。10人分のデータがあって、5人分しかデータが入力されていなかったら50%と出ます。
kaz_macro<-function(var2,var1){
var1_d <-deparse(substitute(var1))
x1<-sum(is.na(var2[[var1_d]]))
x2<-sum(!is.na(var2[[var1_d]]))
x3<-"-"
x4<-"~"
x5<-"`"
available=100*(round((x2/(x1+x2)),digit=3))
y <- paste(var1_d,x3,x1,x4,x2,x5,available)
return(y)
}
こういうのも、結果を確認して、正しければ正しいので、合ったらOKで進んでいきます。ちなみにこの関数は、最初は、やり方が良く分からなかったので、ネット上で調べたり同僚に聞いたり、ネットで知り合った専門のかた、あいさくさん( https://twitter.com/IsaacNakamura )に聞いたりしてやっと書けました。
一度こういうのが書けたら、再利用します。
ただ再利用も少し苦痛なんですけどね。SASだと再利用しなくても、頭の中で考えることをそのまま表現できるので楽なんですけど、Rだとまだそこまで行っていません。でもSASよりRのほうが楽しくなってきました。
大学は日本で英文科だったのに、なぜ、今、データ分析をしてるの?できてるの?というのが不思議ですが、やってみて、合ってたら、合ってる。何か間違ってたら、結果が変、、ということですので、できるようになりました。
さてこの関数を、現在、データのシステムで集めている変数全てを評価します。
すると、どの質問項目が良く使われているかが分かります。
そして、クライアントに、この項目はあまり使われているので、もういらないんじゃない?とか提案できるのです。
さて、機械的な作業ですけど、頭を使うのは概念的に、こういうデータも集めたほうがいいんじゃないか?とクライアントに提案する作業です。そのクライアントが運営しているプログラムの目的をしっかりと理解していないと、できませんね。
さて、これらの作業に関して、やり方が教科書に書いてあるわけではないですけど、なぜかできるようになりました。
教科書に統計モデルの説明はありますが、その他の、データの読み方、その後の処理のしかたなどは、教科書に書いてありませんので、経験で自分のやりかたを発展させてきました。
教科書にないことがたくさんあるんです。
あとクライアントとよく話をして、クライアントが何を求めているかを察知したりしないといけません。
コンサル業界というのは、製造業などと違って、情報をもらってきて、その情報からクライアントにとって有益な情報を導き出して、役立ててもらうということです。
ま、こんな仕事をしていますという一例でした。