PPML包重力具有时间固定效果

时间:2017-07-06 04:46:00

标签: r non-linear-regression

我试图将时间固定效果(使用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) ,但它不起作用。

我很感激任何帮助。

3 个答案:

答案 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作为假人/固定效果给你结果。然后用

计算稳健的SE

lmtest::coeftest(EstimationResults.PPML, vcov=sandwich::vcovHC(model.PPML, "HC1"))

PPML函数不做什么,它只是不太灵活。

答案 2 :(得分:0)

除了PPMLglm之外,您还可以使用函数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)的变量landyear的系数;然后显示两个变量的聚类标准误差(w.r.t. year)的系数表。

超越最初的问题,现在假设您有一个更复杂的案例,具有三个固定效应:country_icountry_jyear。您会写:

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上找到。