メモ

  • こちらで、種の諸々の特徴はパレート最適化されているとみなして、フェノタイプの評価を空間配置としてとらえてみよう、という勉強をした
  • パレート最適化(日本語Wiki,英語Wiki)
  • 関連事項としてMulti object optimization
  • ここでもちらりと出てきていました
  • こんなのを扱うのに、トレイト、仕事、仕事の全体としての生きる力、という3階層を一般化線形モデルで作ってみよう
    • 評価軸が十分な数だけ取られていると、きれいに『パレート面』が引き出せるが、真の空間の次元より評価軸数が少ないと、ごちゃごちゃする様子とかのイメージをつかもう
    • また、1次線形なら、単純に階層間の関係は行列にできるが、少しいじってやることもまあまあ、できる(ソースでは、1次をt斉次にしてあるだけだけれども
# Traitsの数(足の形、歯の本数、・・・)
tn <- 3
# Traitsを使い合わせて実施する仕事の数
jn <- 4
# 仕事を併せて達成される、「生きる力」の評価尺度の数
fn <- 2

# 仕事をTraitsの一般化線形関数にするための係数行列
coef.t2j <- matrix(rnorm(jn*(tn+1)),nrow=jn,ncol=tn+1)
# 生きる力を仕事の一般化線形関数にするための係数行列
coef.j2f <- matrix(rnorm(fn*(jn+1)),nrow=fn,ncol=jn+1)
# 生物種の数
n.sp <- 10000

#T <- matrix(rnorm(n.sp*tn),nrow=n.sp,ncol=tn)
library(MCMCpack)
# Traitsは0から1の値を取ることにする
# その範囲で一様分布を発生させる
T <- rdirichlet(n.sp,rep(1,tn))
# 切片の項を考慮
T <- cbind(T,rep(1,n.sp))

# k <- 1 なら1次線形回帰
k <- 1
k <- 2
k <- 0.1
k <- -0.001
A <- coef.t2j %*% t(T^(k))

dim(A)

A <- rbind(A,rep(1,n.sp))

# k2 <- 1 なら1次線形回帰
k2 <- 1
k2 <- 2
k2 <- 0.1
#k2 <- -0.001

B <- t(coef.j2f %*% A^2)

dim(B)

library(rgl)
plot3d(T[,1],T[,2],B[,1])