我希望在R中复制以下Stata命令:
xtpcse y x1 x2 x3 x4 i.xfe, corr(ar1) pairwise
其中i.xfe是固定效应因子。
我通常使用plm
与coeftest
函数(使用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中的模型中?任何帮助将不胜感激。
答案 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)