允许 MLE 中的估计参数因国家/地区年而异

Allowing an estimated parameter in MLE to vary per country-year

我试图从论文中复制一个公式:

Layard, R.、Nickell, S. 和 Mayraz, G.(2008 年)。收入的边际效用。 Public 经济学杂志,92(8–9),1846–1857。 https://doi.org/10.1016/j.jpubeco.2008.01.007

我要估价的部分如下:

我是这样开始的:

#################################################################################################
# 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                                                                            # 
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 因国家/地区而异。

我应该如何将其应用到等式中?

我无法重现代码,所以我不能给你一个有效的例子,但是,无论如何,你将不得不估计大量的其他参数,无论它是在添加到 α 或代替它。 Country 需要虚拟化,每个虚拟化(基本类别除外)都需要作为一个术语包含在内,每个术语都需要自己的系数,代表该国家/地区的 α(如果省略 α)或数量该国的 α 偏离基数 α 的程度,无论是作为附加差异还是作为基数 α 本身的系数。自然地,对于任何给定的观察,除 1 之外的所有这些国家/地区项(如果是基准国家/地区,则为所有这些国家/地区项)都将乘以虚拟值 0,因此会被剔除。

这更不用说当年了。实际上,该理论未明确说明。因此,措辞是:“[α] 可以因国家或地区或不同时间点而异。”请注意,它不是 "and/or"。这 意味着 国家和年份方差不会相互影响,在这种情况下,我们不需要将国家虚拟变量乘以年份或年份的某种变换。但即便如此,我们应该测试或至少考虑一下 α 和年份之间的什么关系?线性加法?还是我们每年都必须虚拟?如果我们做后者,并且国家和时间的影响 do 相互作用,那么,现在我们必须将每个国家每年的影响作为单独的估计参数包括在内。那将是很多傻瓜。所以,根据我的解释,这里有非常广泛的可估计模型,理论的冗长不足以将它与其中一个结合起来。它的等式 6 肯定 与后面的废话不符。

不过,如果您真的要编写出更完整模型的某个版本,我推荐使用 nls 包,也许 recipes 可以完成所有虚拟化和交互。显然,手动编码每个术语是不切实际的。

最后一个想法:当且仅当您可以确定关于给定国家应该如何解释国家级差异的理论时,您才能避免所有国家虚拟化。如果 α 因国家/地区而异,例如,阳光度不同,则测量阳光度并将其参数化,如果您可以将其视为连续的,这将更容易做到。但是,当然,社会理论中有一种流行病,承认社会间的差异但没有解释,所以我们坚持使用基本上说 "the Frenchiness of France leads to an x-point difference in the effect on happiness."

的模型