R中的阈值分位数回归代码崩溃
我正在研究R中的两阶段阈值分位数回归模型,我的目标是在两个阶段估计简化形式方程(称为Rhoat)的阈值和结构方程(称为qhat)的阈值。在第一阶段,我通过分位数回归估计rhohat并获得拟合值。我在第二阶段使用这些拟合值来估计qhat。代码如下(感谢Bruce Hansen教授,我修改了他的代码):R中的阈值分位数回归代码崩溃,r,threshold,R,Threshold,我正在研究R中的两阶段阈值分位数回归模型,我的目标是在两个阶段估计简化形式方程(称为Rhoat)的阈值和结构方程(称为qhat)的阈值。在第一阶段,我通过分位数回归估计rhohat并获得拟合值。我在第二阶段使用这些拟合值来估计qhat。代码如下(感谢Bruce Hansen教授,我修改了他的代码): #************************************************************# #分位数回归。 qr.回归尝试一些较小值的计时: > system
#************************************************************#
#分位数回归。
qr.回归尝试一些较小值的计时:
> system.time({z = stqr_thresh_loop(n=10,reps=5)})
user system elapsed
0.612 0.000 0.615
> system.time({z = stqr_thresh_loop(n=20,reps=5)})
user system elapsed
1.248 0.000 1.249
> system.time({z = stqr_thresh_loop(n=40,reps=5)})
user system elapsed
2.740 0.000 2.743
> system.time({z = stqr_thresh_loop(n=10,reps=10)})
user system elapsed
1.228 0.000 1.233
> system.time({z = stqr_thresh_loop(n=10,reps=20)})
user system elapsed
2.465 0.000 2.472
> system.time({z = stqr_thresh_loop(n=10,reps=40)})
user system elapsed
4.968 0.000 4.969
这在经过的时间上看起来是很好的线性的,有n和reps。因此,n=200,reps=500的时间至少是n=20,reps=50的100倍,这(在我的系统上)大约是20分钟。你等了那么久吗
尝试从1:reps打印循环中的“i”值,以获得进度控制。它是如何崩溃的,是否有错误消息?不幸的是,根本没有消息!没有什么!只是“程序没有响应”。真奇怪!谢谢这可能意味着您的程序陷入无限循环,或者迭代次数随着n=200
和reps=500
而变得非常大。下面是一些调试工具,可以让您开始使用:我首先看看您循环的参数值(例如qn
)看看是否有大得离谱的值。您还可以包括一组print语句,以缩小程序的哪个部分(更具体地说是哪个循环)导致问题的范围。
> system.time({z = stqr_thresh_loop(n=10,reps=5)})
user system elapsed
0.612 0.000 0.615
> system.time({z = stqr_thresh_loop(n=20,reps=5)})
user system elapsed
1.248 0.000 1.249
> system.time({z = stqr_thresh_loop(n=40,reps=5)})
user system elapsed
2.740 0.000 2.743
> system.time({z = stqr_thresh_loop(n=10,reps=10)})
user system elapsed
1.228 0.000 1.233
> system.time({z = stqr_thresh_loop(n=10,reps=20)})
user system elapsed
2.465 0.000 2.472
> system.time({z = stqr_thresh_loop(n=10,reps=40)})
user system elapsed
4.968 0.000 4.969