我试图将时间固定效果(使用model.matrix生成的多年的假人)包含在R中的PPML回归中。
没有时间固定效果,回归是:
public class CargarDatos extends AsyncTask<String, Void, String> {
protected String doInBackground(String... urls) {
////////////////-------------
String correo = campo_correo.getText().toString().trim();
String nombre = campo_nombre.getText().toString().trim();
String apellido= campo_apellido.getText().toString().trim();
String telefono= campo_telefono.getText().toString().trim();
String categoria= customspinner.getSelectedItem().toString().trim();
String titulo = campo_titulo.getText().toString().trim();
String descripcion = campo_descripcion.getText().toString().trim();
String latitud = Double.toString(latitudeeeee);
String longitud = Double.toString(longitudeeee);
String s = (campo_publico.isChecked() ? "1" : "0");
String r = (campo_terminos.isChecked() ? "1" : "0");
//getting the actual path of the image
String path = getPath(filePath);
//Uploading code
try {
String uploadId = UUID.randomUUID().toString();
//Creating a multi part request
new MultipartUploadRequest(TerminosYC.this.getActivity(), uploadId, Constants.UPLOAD_URL)
.addFileToUpload(path, "image") //Adding file
.addParameter("name",correo) //Adding text parameter to the request
.addParameter("nombre",nombre)
.addParameter("apellido",apellido)
.addParameter("telefono", telefono)
.addParameter("categoria", categoria)
.addParameter("titulo", titulo)
.addParameter("descripcion", descripcion)
.addParameter("publico", s)
.addParameter("terminos", r)
.addParameter("latitud",latitud)
.addParameter("longitud",longitud)
.setNotificationConfig(new UploadNotificationConfig())
.setMaxRetries(2)
.startUpload(); //Starting the upload
} catch (Exception exc) {
Toast.makeText(TerminosYC.this.getActivity(), exc.getMessage(), Toast.LENGTH_SHORT).show();
}
// params comes from the execute() call: params[0] is the url.
try {
return downloadUrl(urls[0]);
} catch (IOException e) {
return "Unable to retrieve web page. URL may be invalid.";
}
}
我试图在PPML函数中添加命令require(gravity)
my_model <- PPML(y="v", dist="dist",
x=c("land","contig","comlang_ethno",
"smctry","tech","exrate"),
vce_robust=T, data=database)
,但它不起作用。
我很感激任何帮助。
答案 0 :(得分:2)
我会评论之前的答案,但没有足够的声誉。 PPML命令中的引力模型指定 v = dist ×exp( land + contig + comlang_ethno + smctry + tech + exrate + TimeFE )= exp(log( dist) )+ land + contig + comlang_ethno + smctry + tech + exrate + TimeFE )。
glm
内部的公式应该将指数中的变量作为其RHS,因为它表示链接函数生成的线性预测变量(泊松默认值为自然对数)。总而言之,你的命令应该是
glm(v ~ log(dist) + land + contig + comlang_ethno + smctry + tech + exrate + factor(year),
family='quasipoisson')
特别是,您需要在RHS的日志中保持距离(与之前的答案不同)。
答案 1 :(得分:0)
确保year
是一个因素,而不仅仅是使用简单glm
- 函数
glm(y ~ dist + year, family = "quasipoisson")
以year
作为假人/固定效果给你结果。然后用
lmtest::coeftest(EstimationResults.PPML, vcov=sandwich::vcovHC(model.PPML, "HC1"))
PPML
函数不做什么,它只是不太灵活。
答案 2 :(得分:0)
除了PPML
和glm
之外,您还可以使用函数femlm
(来自软件包FENmlm
)解决问题,该函数处理固定效应估计以最大程度地提高可能性楷模。
函数femlm
的两个主要优点是:
您可以根据需要添加任意数量的固定效果,并且分别处理它们会导致计算时间,而无需与glm进行比较(特别是当固定效果包含许多类别时)
标准错误可以通过直观的命令进行聚类
这是一个有关您的问题的示例(只有两个变量,并且年份固定不变):
library(FENmlm)
# (default family is Poisson, 'pipe' separates variables from fixed-effects)
res = femlm(v ~ log(dist) + land | year, base)
summary(res, se = "cluster")
此代码估算具有固定变量log(dist)
的变量land
和year
的系数;然后显示两个变量的聚类标准误差(w.r.t. year
)的系数表。
超越最初的问题,现在假设您有一个更复杂的案例,具有三个固定效应:country_i
,country_j
和year
。您会写:
res = femlm(v ~ log(dist) + land | country_i + country_j + year, base)
然后,您可以轻松地处理聚类的标准错误:
# Cluster w.r.t. country_i (default is first cluster encountered):
summary(res, se = "cluster")
summary(res, se = "cluster", cluster = "year") # cluster w.r.t. year cluster
# Two-way clustering:
summary(res, se = "twoway") # two-way clustering w.r.t. country_i & country_j
# two way clustering w.r.t. country_i & year:
summary(res, se = "twoway", cluster = c("country_i", "year"))
有关该包装的更多信息,该插图可以在https://cran.r-project.org/web/packages/FENmlm/vignettes/FENmlm.html上找到。