我有四组随机数据样本,由四个相关随机变量 U1、U2、U3、U4 生成 我想对其应用联结拟合。为此,我需要找到概率积分变换(PIT)。一种方法是我可以使用数据估计每个随机变量的边际 CDF,然后使用概率积分变换 (PIT) 找到均匀分布在区间 [0, 1] 上的边际。
但是 R 编程语言中有一个统一的命令可以做到这一点吗?我相信 R 确实有这样的函数,由
isodistrreg
包中的概率积分变换(PIT)给出。但我无法得到它的论据。
pit(预测,y,随机化= TRUE,种子= NULL) 为什么需要同时给出预测和数值向量“y”,为什么我不能只输入生成的随机数据,即“y”,它会给出概率积分变换(PIT)?
我是否失去了一些东西,我的理解差距在哪里?
PS:在没有统一命令的情况下,我使用这种方法:
Step1:从数据中找到 CDF 我正在使用 ecdf 函数。
Step2:生成[0,1]范围内的均匀随机数
Step3:现在我必须对生成的均匀随机样本执行 CDF 的逆操作,因此我使用分位数函数。但我希望在生成的 CDF 上使用此分位数函数,即从 eCDF 生成的数据而不是原始数据,因为原始数据丢失以及 NaN 条目,并且它给了我错误,Quantile.default(matrixdata[, 1) 中的错误], unigf) :如果“na.rm”为 FALSE,则不允许缺失值和 NaN 我知道我可以设置 na.rm=True,但想了解其他选项。
您需要执行三个初始步骤才能使用联结数据。
首先,您可以估计边距并将其转换为统一的边距。我们称之为两阶段估计方法。或者,使用
pobs
或 copula
包中的 VineCopula
函数使用概率积分变换来变换边距。
将 copula 模型拟合到 copula 数据(来自步骤 1)
然后,可以使用逆向方法返回原始数据。
如果您需要进一步帮助,请提供完整的 R 代码。