OLS具有面板校正的标准误差和R中的AR(1)校正

时间:2017-10-22 20:56:29

标签: r

我希望在R中复制以下Stata命令:

xtpcse   y  x1   x2  x3  x4  i.xfe, corr(ar1) pairwise

其中i.xfe是固定效应因子。

我通常使用plmcoeftest函数(使用vcovBK)来运行带有面板校正标准错误的回归。但除非我错了,否则它不会出现AR1相关结构可以合并到plm回归中。

我相信我可以使用gls包中的nlme函数来合并AR1结构:

gls(y ~ x1 + x2 + x3 + x4 + factor(xfe),
                      data = data,
                      correlation = corAR1(form=~1),
                      na.action = na.omit)

但我还没有找到一种计算PCSE的方法。 vcovBK似乎不接受gls - 类型对象。

如何将PCSE和AR1校正合并到R中的模型中?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:3)

您要使用的方法是面板数据的Praise-Winsten回归。

R中的panelAR包可用于执行此操作。我给出了一个实例代码及其与R等效的示例。 Stata代码:

#include <filesystem>

#include "..\CryptoLib\osrng.h"
#include "..\CryptoLib\modes.h"
#include "..\CryptoLib\files.h"
#include "..\CryptoLib\aes.h"

template <typename T, std::size_t N>
constexpr std::size_t FixedArraySize(T(&arr)[N])
{ return N; }

int wmain(int argv, wchar_t **args)
{
    try
    {
        using namespace CryptoPP;

        constexpr CryptoPP::byte    IV[]    = { 0xab,0x10,0x55,0x29,0x73,0xb9,0xae,0xba,0xe9,0xe9,0xe5,0x26,0x35,0x66,0x63,0x55 };
        constexpr char              key[]   = "ABCDEFGHIJKLMNOP";

        const std::string extension         = ".TEST";
        const std::string sourceFile        = __FILE__;
        const std::string destinationFile   = std::filesystem::path("Encrypted").replace_extension(extension).string();
        const std::string finalFile         = std::filesystem::path("Decrypted").replace_extension(extension).string();

        {
            CFB_Mode<AES>::Encryption encryption(reinterpret_cast<const CryptoPP::byte*>(key), FixedArraySize(key) - 1, IV);
            FileSource fsEnc(sourceFile.c_str(), true, new StreamTransformationFilter(encryption, new FileSink(destinationFile.c_str())));

            CFB_Mode<AES>::Decryption decryption(reinterpret_cast<const CryptoPP::byte*>(key), FixedArraySize(key) - 1, IV);
            FileSource fsDec(destinationFile.c_str(), true, new StreamTransformationFilter(decryption, new FileSink(finalFile.c_str())));
        }

        std::filesystem::remove(destinationFile);
        std::filesystem::remove(finalFile);
    }
    catch (const std::exception &e)
    {
        std::cout << e.what() << std::endl;
    }
}

Rcode:

xtpcse depvar indepvar, correlation(psar1)