9. 1.参加者ごとに最尤推定 (1/1)
M <- 1:n
SD <- M
for (i in 1:n){
di <- data.frame(
x = seq(50,150,10), #比較刺激の幅
Rate = Rates[i] #比較刺激の選択率データのベクトル
)
fit <- glm(formula = di$Rate ~ di$x, family = binomial(probit)) #glm()で最尤推定
c1 <- coefficients((fit))
p1 <- c(-c1[1]/c1[2],1/c1[2])
M[i] <- p1[1]
SD[i] <- p1[2]
}
M #参加者ごとの平均値(等価点)ベクトル
SD #参加者ごとの標準偏差ベクトル
Rコード
09/23
10. 2.参加者ごとにベイズ推定 (1/2)
data {
int N; #全部で何試行か。今回は2200 (= 88試行 × 25人)。
int NP; #参加者の数。今回は25。
real Length[N]; #比較刺激の水準 (単位は%) = {50, 60, …, 140, 150}
int P[N]; #参加者番号 = {1, 2, …, 24, 25}
int <lower=0, upper=1> SelectC[N]; #比較刺激を選んだか否かのベクトル = {0, 1, 1, …}
}
parameters{
real<lower=0, upper=200> mu[NP]; #参加者一人ひとりの平均
real<lower=0, upper=50> sigma[NP]; #参加者一人ひとりの標準偏差
}
transformed parameters{
real<lower=0, upper=1> p[N];
for (n in 1:N){
p[n] = normal_cdf(Length[n], mu[P[n]], sigma[P[n]]); #累積正規分布の確率を取得
}
}
Stanコード (1/2)
母数の範囲を指定しないと
うまく収束しないよ!
10/23