r - 允许 MLE 中的估计参数因国家/地区而异
问题描述
我试图从论文中复制一个公式:
Layard, R.、Nickell, S. 和 Mayraz, G. (2008)。收入的边际效用。公共经济学杂志,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 # 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
因国家/地区而异。
我应该如何将其实现到等式中?
解决方案
我无法重现代码,所以我不能给你一个可行的例子,但是,不管怎样,你将不得不估计大量的其他参数,无论是除了 α 还是在它的地方。Country
需要弄出哑元,每个哑元(基类除外)都需要作为一个项包含在内,并且每个项都需要有自己的系数,代表该国家的α(如果省略α)或该国家的α的数量偏离基数 α,无论是作为加性差异还是作为基数 α 本身的系数。自然,对于任何给定的观察,除 1 之外的所有这些国家/地区项(或所有这些国家/地区,如果它是基础国家/地区)将乘以虚拟值 0,从而退出。
这更不用说今年了。实际上,该理论未得到充分说明。因此,措辞是:“[α] 可能因国家/地区或不同时间点而异。” 请注意,它不是“和/或”。这意味着国家和年份的差异不会相互影响,在这种情况下,我们不需要将国家虚拟变量乘以年份或年份的某些转换。但即便如此,我们应该测试或至少娱乐一下 α 和年份之间的什么关系?线性加法?还是我们必须每年都假装出来?如果我们做后者,国家和时间的影响互动,好吧,现在我们必须将每个国家每年的影响作为单独的估计参数包括在内。这将是很多假人。因此,根据我的解释,这里有非常广泛的可估计模型,而理论的冗长不足以将其与其中一个结合起来。它的方程 6肯定不符合下面的措辞。
但是,如果您确实编写了该更完整模型的某个版本,我推荐该nls
软件包,并且可能recipes
用于进行所有这些模拟和交互。显然,手动编码每个术语是不切实际的。
最后一个想法:当且仅当您可以确定某个国家应该如何解释国家层面差异的理论时,您可以避免所有那个国家的模拟。如果 α 因国家/地区而异,因为国家/地区因日照度而异,则测量日照度并将其参数化,如果您可以将其视为连续的,这将更容易做到。但是,当然,在社会理论中存在一种流行病,即承认社会间的差异但没有解释,因此我们被困在基本上说“法国的法国性导致x
对幸福的影响存在一个点差异的模型”中。 "
推荐阅读
- javascript - Vuetify 自动完成,接受列表之外的值
- java - 自定义 Java 生产者中的 Kafka SSL 握手失败
- sql-server - SQL Server:连接表,包括空值
- python - CMake:自动找出激活python虚拟环境的命令
- java - 我应该如何用 JUNIT 和 Mockito 测试这个方法
- wpf - (已解决)禁用还原、最小化、最大化 WPF VB.NET
- regex - Perl:用户输入一个字符串,以及将用于搜索所述字符串的某个正则表达式
- scala - 从数据框 Scala 中选择列后,列值的顺序会发生变化
- java - examples.Anagram.main(Anagram.java:20) 中的线程“主”java.lang.NullPointerException 中的异常
- node.js - npm call_and_retry_last