まずデータをプロットして、それを見てみましょう。これは非常に限られた量のデータであるため、これは多くの前提条件を備えたややアドホックです。
rotten <- c(0,1,1,0,0,0,1,1,1,1,0,0,0)
rotten <- as.factor(rotten)
mass <- c(139.08,
91.48,
74.23,
129.8,
169.22,
123.43,
104.93,
103.27,
169.01,
83.29,
157.57,
117.72,
128.63)
diam <- c(17.28,
6.57,
7.12,
16.52,
14.58,
6.99,
6.63,
6.75,
15.38,
7.45,
13.06,
6.61,
7.19)
plot(mass,diam,col=rotten,lwd=2)
title("Fruits")
これがデータです。赤い点は腐った果物を表しています。
実は2種類あるそうです。私の仮定は次のとおりです。
- 直径は果物を2つのグループに分けます
- 直径が10を超える果実は1つのグループに属し、他のグループは小さいグループに属します。
- 大きな果物グループには腐った果物が1つしかありません。果物が大きなグループにある場合、腐敗しても体重に影響がないと仮定しましょう。そのグループにはデータポイントが1つしかないため、これは不可欠です。
- 果物が小さな果物である場合、腐っていることが塊に影響します。
- 変数diamとmassが正規分布していると仮定しましょう。
直径の合計が64.2 cmであることが示されているため、2つの果物が大きく、4つの果物が小さい可能性が最も高いです。これで、重量の3つのケースがあります。腐った小さな果実が2、3、または4つあります(腐った大きな果実は、仮定によって質量に影響しません)。したがって、これらの値を計算することにより、質量の境界を取得できます。
腐った小さな果物の数の確率を経験的に推定できます。腐った果物の数に応じて、質量の推定値に重みを付けるために確率を使用します。
samps <- 100000
stored_vals <- matrix(0,samps,2)
for(i in 1:samps){
numF <- 0 # Number of small rotten
numR <- 0 # Total number of rotten
# Pick 4 small fruits
for(j in 1:4){
if(runif(1) < (5/8)){ # Empirical proportion of small rotten
numF <- numF + 1
numR <- numR + 1
}
}
# Pick 2 large fruits
for(j in 1:2){
if(runif(1) < 1/5){# Empirical proportion of large rotten
numR <- numR + 1
}
}
stored_vals[i,] <- c(numF,numR)
}
# Pick out samples that had 4 rotten
fourRotten <- stored_vals[stored_vals[,2] == 4,1]
hist(fourRotten)
table(fourRotten)
# Proportions
props <- table(fourRotten)/length(fourRotten)
massBig <- mean(mass[diam>10])
massSmRot <- mean(mass[diam<10 & rotten == 1])
massSmOk <- mean(mass[diam<10 & rotten == 0])
weights <- 2*massBig + c(2*massSmOk+2*massSmRot,1*massSmOk+3*massSmRot,4*massSmRot)
Est_Mass <- sum(props*weights)
691.5183gの最終見積もりをください。私が結論を出すには、ほとんどの仮定を行う必要があると思いますが、もっと賢い方法でこれを行うことが可能かもしれないと思います。また、腐った小さな果物の数の確率を取得するために、経験的にサンプリングします。