Следующий код был представлен нашим учителем на практическом занятии. У меня есть вопросы по поводу последней строки кода на этапе оптимизации с использованием функции optim()
, но я добавляю другие строки для пояснения работы.
population <- read.csv("data.csv", header=FALSE, sep=';', dec=',')
и данные выглядят следующим образом:
1 8.29
2 5.37
3 10.61
4 5.92
5 14.99
6 9.74
7 15.47
.
.
.
Мы выбираем 100 элементов из совокупности как
Sampled_Data <- sample(population$V1, 100)
, а затем пишем функцию для вычисления вероятности "логарифмического нормального распределения" для выбранных элементов как
MyFunc <- function(Myparameters,data){
Firstparameter <- Myparameters[1]
Secondparameter <- Myparameters[2]
n <- length(data)
Mydistribution <- -n/2*log(2*pi*(Secondparameter^2)) - sum(log(data)) - (1/(2*Secondparameter^2))*sum((log(data)-Firstparameter)^2)
return(Mydistribution)
}
Наконец, мы используем функцию optim()
для оценки двух параметров распределения, используя функцию максимума правдоподобия
optimisation <- optim(c(1,1),MyFunc,data=Sampled_Data)
в функции optim()
, я не понимаю, почему он добавил вектор c(1,1)
пока из документации мы должны его заполнить начальными значениями параметров? он предполагает, что начальные значения 1 и 1? если так, то исходя из того, что мы принимаем за начальные значения.
Кроме того, почему он добавил data=Sampled_Data
, тогда как в документации нет ничего подобного? Из документации, после добавления функции, мы должны добавить другие вещи, такие как градиент, метод и границы! но не данные, которые у нас есть!
Наконец, если я хочу указать нижнюю и верхнюю границы, мне не ясно, какие значения использовать в моем случае с нормальным распределением журнала.
Я был потерян, где разместить вопрос, здесь или в перекрестной проверке, но я видел подобные вопросы здесь. В любом случае, если это не подходящее место, я удалю вопрос.