我正在学习Julia语言,并按照一些教程来测试Julia中的OLS(普通最小二乘)估计。首先,我需要模拟因变量(" Y"),自变量(" X"),误差项(epsilon)和参数的数据集。该脚本如下:
# ols_simulate :generate necessary data
using Distributions
N=100000
K=3
genX = MvNormal(eye(K))
X = rand(genX,N)
X = X'
X_noconstant = X
constant = ones(N)
X = [constant X]
genEpsilon = Normal(0, 1)
epsilon = rand(genEpsilon,N)
trueParams = [0.1,0.5,-0.3,0.]
Y = X*trueParams + epsilon
然后我定义了一个OLS函数
function OLSestimator(y,x)
estimate = inv(x'*x)*(x'*y)
return estimate
end
我计划做的是首先使用命令来模拟来自终端的数据:
ols_simulate
并希望此步骤正确生成并存储数据,然后我可以调用olsestimator
。但在尝试此操作后,当我在Julia REPL中输入mean(Y)
时,它会给我一个错误消息,如
Error: UnderdefvarError: Y not defined
似乎数据存储不正确。更一般地说,如果我有多个脚本(脚本和函数),我如何使用终端中其他人生成的数据?
谢谢。
答案 0 :(得分:4)
每次运行Julia REPL(Julia“命令行”)时,它都会以新的内存工作区开始。因此,要定义变量然后使用它们,您应该运行一次解释器。
如果我理解正确,你有多个脚本可以完成部分计算。要在REPL中运行脚本并使用仍定义的所有全局变量保留它,可以使用
include("scriptname.jl")
(将scriptname
更改为适当的.jl
文件名。)
在这种情况下,工作流程可能如下所示:
include("ols_simulate.jl")
estimate = OLSestimator(Y,X)
mean(Y)
一般情况下,最好留在REPL中,除非你想清除所有内容并重新开始,然后退出并重新启动即可。
答案 1 :(得分:2)