Я попытался повторить формулу из статьи:
Лейард Р., Никелл С. и Майраз Г. (2008). Предельная полезность дохода. Журнал общественной экономики, 92 (8–9), 1846–1857. https://doi.org/10.1016/j.jpubeco.2008.01.007
Часть, которую я хочу оценить, перечислена ниже:
Iначалось следующим образом:
#################################################################################################
# Data
#################################################################################################
library(data.table)
library(bbmle)
library(dummies)
set.seed(1)
TDT <- data.table(panelID = sample(50,50), # Creates a panel ID
yct = c(rep("Albania",30),rep("Belarus",50), rep("Chilipepper",20)),
some_NA = sample(0:5, 6),
some_NA_factor = sample(0:5, 6),
Group = c(rep(1,20),rep(2,20),rep(3,20),rep(4,20),rep(5,20)),
Time = rep(seq(as.Date("2010-01-03"), length=20, by="1 month") - 1,5),
norm = round(runif(100)/10,2),
Income = round(rnorm(10,-5,5),2),
Happiness = sample(10,10),
Sex = round(rnorm(10,0.75,0.3),2),
Age = sample(100,100),
Educ = round(rnorm(10,0.75,0.3),2))
TDT[, yi:= .I] #
TDT[TDT == 0] <- NA # https://stackoverflow.com/questions/11036989/replace-all-0-values-to-na
TDT $some_NA_factor <- factor(TDT$some_NA_factor)
TDT$yct <- as.factor(TDT$yct)
TDT <- cbind(TDT, dummy(TDT$yct, sep = "_"))
#################################################################################################
# MLE
#################################################################################################
start_rho <- c(1,1.2,1.4,1.6,1.8,2)
mu_Happiness <- mean(TDT$Happiness, na.rm=TRUE)
sd_Happiness <- sd(TDT$Happiness, na.rm=TRUE)
LL4 <- function(p, a, mu, sigma) {
-sum(dnorm(TDT$Happiness - a*((TDT$Income^(1-p)-1)/(1-p)) + TDT$Educ + TDT$TDT_Albania + TDT$TDT_Belarus+ TDT$TDT_Chillipepper, mu, sigma, log=TRUE))
}
mle = list()
mle_sum = list()
for (i in 1:length(start_rho)) {
tryCatch({
mle[[i]] <- mle2(LL4, start = list(p = start_rho[[i]], sigma=sd_Happiness, mu=mu_Happiness, a=1) , fixed = NULL, method = "BFGS") # fixed = list(mu = 6.6)
mle_sum[[i]] <- summary(mle[[i]])
print(i)
print(start_rho[[i]])
print (mle_sum[[i]])
if (i==1000) stop("N is to large")
}, error=function(e){})
}
Однако, согласно документу, я должен допустить, что расчетный параметр alpha
будет варьироваться в зависимости от страны-года.
Как мне реализовать это вуравнение?