Давайте начнем с построения данных и посмотрим на них. Это очень ограниченный объем данных, поэтому он будет несколько случайным с большим количеством предположений.
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")
Итак, вот данные, красные точки обозначают гнилые фрукты:
Вы правы, полагая, что есть два вида фруктов. Я делаю следующие предположения:
- Диаметр делит фрукты на две группы
- Плоды диаметром более 10 находятся в одной группе, другие в меньшей группе.
- В большой фруктовой группе есть только один гнилые фрукты. Давайте предположим, что если фрукт находится в большой группе, то гниение не влияет на вес. Это важно, поскольку в этой группе у нас есть только одна точка данных.
- Если плод маленький, то гниение влияет на массу.
- Предположим, что переменные diam и mass нормально распределены.
Поскольку считается, что сумма диаметров составляет 64,2 см, то, скорее всего, два плода большие, а четыре маленькие. Теперь есть 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,5183г . Я думаю, что вы должны сделать большинство допущений, которые я сделал, чтобы прийти к выводу, но я думаю, что было бы возможно сделать это более разумным способом. Также я пробую эмпирически, чтобы получить вероятность количества гнилых маленьких плодов, то есть просто лень и это можно сделать «аналитически».