ぎょーむ日誌 2004-04-27 
 
	 
 2004 年 04 月 27 日 (火) 
 
	- 
		0830 起床.
		朝飯.
		コーヒー.
		0920 自宅発.
		曇.
		0930 研究室着.
	
 
	- 
		まーたまた釧路大会雑用.
		きりなし感あるんだけど,
		1040 きりあげる.
		いつまでもこんなことやってられん.
		とはいえ,
		いろいろなメイルがぽつぽつくるわけだが.
	
 
	- 
		苫小牧直径成長モデリング.
		R
		の
		
optim()
		を使った最尤推定やろーとしてるわけだが
		……
		とうとう,
		というべきか
		R の不可解計算コストを無視できない問題を発見してしまった.
		コマンドラインなどから
		optim()
		を直接よべばまあまあの速度で計算するのに,
		ある関数内で
		optim()
		を使うと計算進捗がえらく遅くなってしまう,
		というものだ.
		この計算速度低下の原因は関数間で生じてしまった
		大量データコピーである可能性が高い.
		しかしながら,
		現時点では対策はおろかどこで大量コピーが生じているのかもわからない.
		ふーむ
		……
	 
	- 
		1320-1350 北大構内走.
		曇天.
		昼飯.
	
 
	- 
		午前中に発覚した計算のろのろ問題にとりくむ.
		いろいろぢたばたしてみたんだが
		……
		たとえば,
		
			
new.env()
		
		わざなどは,
		この場合は有用ではない.
		今回の計算ではそもそもデータは .GlobalEnv
		に入ってるからだ.
	 
	- 
		いろいろと試行錯誤.
		どういう場合に速くなり,
		どういう状況では遅くなるのか
		……
		で,
		よーやくにしてわかった.
		
data.frame
		からある条件をみたす行をとりだす.
		これは print()
		などするとあたかも vector
		であるかのように見える.
		しかしながらこれはいぜんとして
		data.frame
		なのである.
		で,
		R 内部の機構はわからないんだけど,
		これを関数間でやりとりするとコストの高いコピーが発生して,
		計算が遅くなる.
		これが原因だった.
	 
	- 
		対策は
		……
		いんちきな方法を考案した.
		つまり
		
data.frame
		をやりとりするのが問題であるなら,
		「解毒」
		すればよろしかろー,
		ということで
		sapply()
		にほうりこんで vector
		化してしまった.
		あまり抜本的ではない.
	 
	- 
		で,
		計算は 5-6 倍速くなったわけだが,
		それでもなお遅い.
		ひとつ収束させるのに 2-3 秒かかる.
		すると,
		ひとつの気象値セットの最尤推定値を得るのに
		1 分以上かかる,
		ということで.
		気象値セットが数千個あるってことは
		……
	
 
	- 
		ともかくこれを A801 の dell 機 (Pentium4 2.4GHz)
		にもっていて数百とーりの場合について計算させてみる.
		さーて,
		どうなることやら.
		明朝までに終るかな.
	
 
	- 
		なぜかしら東北大の河田さんからややこしー統計学質問が.
		しかも苫小牧直径成長モデリングで使ってる
		負の二項分布に関するもの.
		
glm.nb()
		の control
		オプションで glm.control(trace = 3)
		などと指定すると theta の推定値が変化していく様子がわかる.
		で,
		このデータの場合は収束しない,
		と.
	 
	- 
		ひとくぎりついたんで
		2050 研究室発.
		2110 帰宅.
		体重 73.4kg.
		晩飯.
	
 
	- 
		[今日の運動]
		
			- 
				北大構内走 1320-1350.
				ストレッチング.
			
 
			- 
				腹筋運動 30 ×
				3 回.
				腕立ふせ 3 ×
				3 回.
			
 
		
	 
	- 
		[今日の食卓]
		
			-  朝 (0850):
				米麦 0.8 合.
				コマツナ.
			
 
			-  昼 (1400):
				弁当.
				研究室お茶部屋.
				米麦 0.8 合.
				コマツナ.
			
 
			-  晩 (2230):
				米麦 0.8 合.
				チンゲンサイ・ピーマン・ホタテの炒めもの.