ぎょーむ日誌 2007-06-11
2007 年 06 月 11 日 (月)
-
0810 起床.
コーヒー.
朝飯.
0925 自宅発.
晴.
0940 研究室着.
-
またアリデータにとりくむ.
昨日の脱ゑくせるデータさるべいじ作業,
文字コードがらみで一ヶ所まちがいある,
とわかった.
修正.
「逆襲データ除去しました」
表示をちゃんとやらねば,
と表示させててきづいた.
ケガれ言語 Perl まわりの
use encoding ...;
と
use Encode;
もぢりぢりと挙動が理解できてきた.
$ make
./conv.pl allinone.txt > data.csv
# reading keys.txt ...
# NOTICE: removing COUNTER ATTACK item !!! (in line 189)
# (DATA) 9 a "a , b→星置(7sec)" a a a
# -----> 9 a "a a a a
(R を起動)
> d <- read.csv("data.csv")
> summary(as.factor(apply(d[,7:ncol(d)], 1, sum))) # とうぜん昨日とはちがう……
1 2 3
1598 51 1
R
を使った「表の集計」ってのはじつにお手軽なんだけど
……
まだ慣れてないヒトたちには下のような
apply 系関数
(sapply(), apply(), tapply()
)
の連発わざはちょっとイヤなかんぢかもしれない
(dataframe d
の構造は今のところ
こうなってる).
> v.key <- apply(d, 1, function(x) paste(x["tr30m"], x["colony"], x["home"]))
> st <- sapply(7:ncol(d), function(i) tapply(d[, i], v.key, sum))
> colnames(st) <- colnames(d)[7:ncol(d)]
> st
aggdisplay allogrooming antennation biting ignorance others trophallaxis
0 hoshioki atsuta 1 0 71 23 51 5 0
0 hoshioki hoshioki 0 0 53 0 95 2 1
0 hoshioki ishikari 2 0 93 4 49 6 1
0 hoshioki jozankei 2 1 101 20 31 0 0
0 hoshioki oshoro 1 0 107 23 17 5 0
0 hoshioki shinkawa 0 0 90 3 57 5 0
0 hoshioki tarukawa 2 0 79 7 60 10 1
1 atsuta atsuta 0 0 91 4 57 1 0
1 hoshioki hoshioki 0 0 83 1 66 1 0
1 jozankei jozankei 1 0 92 35 40 0 0
1 oshoro oshoro 0 0 91 2 53 6 0
「処理のタグ」である v.key
をもうちょっとひねくって書きなおすと,
こうなる.
やっぱり,
ゑくせる上で「目と手で」集計された値とはびみょーに数が異なります,
と.
aggd allg antn btng ignr othr trph
0_0_0_hoshioki_hoshioki 0 0 53 0 95 2 1
0_1_0_hoshioki_ishikari 2 0 93 4 49 6 1
0_1_0_hoshioki_shinkawa 0 0 90 3 57 5 0
0_1_0_hoshioki_tarukawa 2 0 79 7 60 10 1
0_1_1_hoshioki_atsuta 1 0 71 23 51 5 0
0_1_1_hoshioki_jozankei 2 1 101 20 31 0 0
0_1_1_hoshioki_oshoro 1 0 107 23 17 5 0
1_0_0_hoshioki_hoshioki 0 0 83 1 66 1 0
1_0_1_atsuta_atsuta 0 0 91 4 57 1 0
1_0_1_jozankei_jozankei 1 0 92 35 40 0 0
1_0_1_oshoro_oshoro 0 0 91 2 53 6 0
上の列名 (colnames(d)
) を
「自動圧縮」しているのは
関数 abbreviate()
である.
> abbreviate(colnames(d)[7:ncol(d)])
aggdisplay allogrooming antennation biting
"aggd" "allg" "antn" "btng"
ignorance others trophallaxis
"ignr" "othr" "trph"
行動を「まとめる」ってのはちょっとイヤなんだけど
……
たとえばこうしてみたらどうだろうか?
# grouping behavior types ...
d$attack <- d$aggdisplay + d$biting
d$nonhostile <- d$allogrooming + d$others + d$trophallaxis
v.behavior <- c("nonhostile", "ignorance", "antennation", "attack")
-
d$attack
:
威嚇される・噛みつかれる,
summary(as.factor(d$attack))
で調べると 330 個体 (1650 回の観察) の全行動みると,
攻撃されたのは 129 回で,
そのうち「威嚇されて噛みつかれた」は 2 回
-
d$nonhostile
:
「毛づくろい」される・何か食べものわたされる
(d$trophallaxis
)
・わたされてるみたいだけど良く見えなかった
(d$others
),
summary(as.factor(d$nonhostile))
でこれは 45 回で重複行動ナシ
-
「敵対性」は
v.behavior
内の順序のごとく上がっているのか? :
ignorance
には「触角で拉致られアリが触られたんだけど,
すぐにチェック終了」
だけでなく
「触られた瞬間に拉致られアリが全力で逃げ出した」
も含まれ,
antennation
は触角でしつこくチェックされてる状況
そして一回の観察で複数の行動が観察されることもあるから,
合計は 1650 回よりちょっと多くなってしまう (+ 53 回),
と.
> sapply(v.behavior, function(k) sum(d[, k]))
nonhostile ignorance antennation attack
45 576 951 131
> sum(d[, v.behavior])
[1] 1703
行動の重複はどうなってるのか,
これを二重 sapply() わざで調べてみると,
> sapply(v.behavior, function(i)
+ sapply(v.behavior, function(j) sum((d[,i] > 0) * (d[,j] > 0))))
nonhostile ignorance antennation attack
nonhostile 45 0 21 0
ignorance 0 576 0 0
antennation 21 0 951 30
attack 0 0 30 129
antennation
されたあげくに仲良くされてる事例が 21,
などと解釈してよいのかしらん?
ともあれこういう grouping やってしまうと
antennation
だけが他の行動
(nonhostile, attack
)
とかぶってるわけで
……
とするとですよ,
ここで「行動連鎖」
みたいなものがあると考えたほうが説明しやすいのではないかな?
まず最初に地元アリが拉致られアリを「触角でチェックしてみる」
という行動があって
(そういう接触があった場合のみを観察・記録しているから,
拉致られ → 地元も含む?),
-
瞬間的に判断をくだす
(699 回)
→ ……
-
nonhostile
: すぐに仲良しになる
(24 回)
-
ignorance
: すぐに放置,
ただし拉致られアリのすばやい逃走も含む
(576 回)
-
attack
:
「こいつは敵だ!」
といきなり攻撃
(99 回)
-
antennation
:
時間をかけたしつこいチェック
(951 回)
→ ……
-
antennation + nonhostile
: やっぱり仲良しになる
(21 回)
-
antennation
のみ:
まあ OK でしょうと放置,
あるいは拉致られアリがスキをみて逃げだす
(900 回)
-
antennation + attack
:
「やはり敵だったか!」
とおもむろに攻撃
(30 回)
このように整理してよいのであれば,
モデリングはより簡単になりそうだな.
地元アリが拉致られアリに対して
antennation
なんかをやると「攻撃していいのかな? ダメかな?」
と猜疑にとりつかれたような状況になってしまって,
攻撃する確率が減る,
ということなのかしらん?
ちなみに「攻撃しちゃいかん相手
(拉致られアリが同巣出身の場合)
でも攻撃した回数」
は「瞬間的な判断」やると 99 回中の 22 回で,
「しつこくチェック」後には 30 回中の 21 回,
と.
わけわからんね.
アリは時間かけて考えるのが苦手なのか?
> dsub <- d[d$identical.colony == 1,]
> tapply(dsub$attack, dsub$antennation, sum)
0 1
22 21
というか,
上の st
なる dataframe みればわかるように,
この 43 回の friendly fire のうちじつに 35 回は,
「孤立したコロニー」ってことになってる
定山渓 (正確には八剣山?)
vs 定山渓 (巣穴から 30 m 離れたところで採取) の場合になってるね.
まわりが敵ばかりだとアリも神経質・凶暴になるのかしらん?
昼飯とるべくいったん帰宅.
1310 研究室発.
暑い.
1400 研究室もどる.
例のよって,
「全データを見ることのできる図」
を作ってみる.
ある処理のタテ軸は 30 個体ぶん,
横軸はその個体の 5 回の「接触」.
「見やすい順」
に order()
するワザをつかっているので,
処理ごとにどういうパターンで攻撃されているかわかる.
外国旅行に伴う航空運賃のクラスについて
平成19年4月の旅費規則・規程の改正に伴い,外国旅行で利用できる航空
運賃のクラスが変更となっていますので,旅券の手配等に留意願います。
1.エコノミークラスで購入しなければならない地域(役員除く)
本邦と次の地域との間の航空旅行
インドネシア,ベトナム,カンボジア,北朝鮮,シンガポール,タイ,大韓民国,
台湾,中華人民共和国,東チモール,フィリピン,ブルネイ,マレイシア,ミャン
マー,モンゴル, ラオス,ハワイ諸島,グアム,ウラジオストク,ハバロフスク
及びユジノサハリンスク
*改正前は,助教授相当以上がビジネスクラスを利用できましたが,改正後
はエコノミークラスに変更になりました。
2.ビジネスクラスを利用できる地域(役員除く)
(1)上記の地域以外の場合において,一の旅行区間における所要航空時
間が8 時間以上の航空旅行(中近東・欧州・北米等)
(2)上記の地域を経由して,目的地までの所要航空時間が8 時間以上の航
空旅行(成田→マレイシア経由→イタリア 等)
3.その他
エコノミークラスしか利用できない外国旅行で,ビジネスクラスを利用し
た場合は,差額分がわかる書類を添付願います。
[今日の運動]
[今日の食卓]
- 朝 (0830):
米麦 0.7 合.
ネギ・卵の炒めもの.
コマツナのゴマあえ.
キャベツ・ニンジン・キュウリのサラダ.
- 昼 (1330):
米麦 0.7 合.
ピーマン・卵炒飯.
キャベツ・ニンジン・キュウリのサラダ.
- 晩 (2030):
ごはんやデンスケ.
日替わり弁当,
塩サバ.