2016-02-03 72 views
2

我正在學習Julia語言,並按照一些教程來測試Julia中的OLS(普通最小二乘)估計。首先,我需要模擬因變量(「Y」),自變量(「X」),誤差項(ε)和參數的數據集。劇本是這樣的:如何從終端運行Julia腳本和函數?

# 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。但是,試圖這樣,當我在茱莉亞REPL鍵入mean(Y)後,它給了我像

Error: UnderdefvarError: Y not defined 

錯誤消息似乎將數據存放不當。更一般地說,如果我有多個腳本(腳本和函數),如何使用終端中其他人生成的數據?

謝謝。

回答

4

每次運行Julia REPL(Julia「命令行」)時,都會從新的內存工作區開始。因此,要定義變量並使用它們,您應該運行一次解釋器。

如果我理解正確,您有多個腳本可以完成部分計算。要運行在REPL腳本,並留在它與所有的全局變量仍被定義,你可以使用

​​

(與scriptname改爲適當.jl文件名)。

在這種情況下,工作流可能看起來像:

include("ols_simulate.jl") 
estimate = OLSestimator(Y,X) 
mean(Y) 

一般來說,最好留在REPL,除非你想清楚一切,重新開始,然後退出並重新啓動是必經之路走。

+0

'包括'技巧的作品,謝謝。還有一個問題,我應該用**任意**文件名(比如'OLSestimator.jl')將函數腳本保存到當前字典中,然後從REAL調用它。這就是我所做的,但它竟然是另一個**未定義的錯誤**。關於Julia函數的可用示例主要是使用命令行函數,我的問題歸結爲「如何調用函數?」 – zlqs1985

+0

這很難理解你的問題。我認爲,「詞典」應該是「目錄」,「實際」應該是「REPL」。不過,稍微清楚一下你實際上在做什麼和看到什麼會有所幫助。如果您遇到錯誤,請引用整個錯誤消息。 –

2

您需要將腳本保存在單獨的文件中,然後將其加載到Julia中。假設你已經在目錄「dir1」中保存了名稱「ols_simulate.jl」,然後導航到終端中的該目錄,啓動Julia(你可能想看到this)。一旦朱莉婭,你必須加載「ols_simulate.jl」,之後就可以計算出Y均值和做任何你想要的:

include("ols_simulate.jl") 
mean(Y) 
OLSestimator(Y, X) 

的那種東西,我覺得你在做什麼,我想您可以使用像Jupyter這樣的筆記本界面找到有用的信息。