0

私はPython 3xでHenze-Zirklerの多変量正規性テストを適用することに興味があり、JupyterノートブックでPythonでそうすることができるかどうかは疑問でした。rpy2のJupyterノートブックでHenze-Zirklerの多変量正規性テストを適用するには

私はVARモデルを自分のデータに当てはめました。そして、この適合したVARモデルからの残差が正規分布しているかどうかをテストしたいと思います。

Jupiterのノートブックでpythonを使用するにはどうすればよいですか?

答えて

1

このメソッドは後で検出されるので、これはもう一つの答えです。 RのライブラリをPythonにインポートしたくない場合。 Rの出力をPythonに呼び出すことができます。すなわち、1は次のようにパイソンを通じてRの機能を活性化することができるである:

import rpy2.robjects as robjects 
from rpy2.robjects import r 
from rpy2.robjects.numpy2ri import numpy2ri 
from rpy2.robjects.packages import importr 
import numpy as np 

はRESIはPythonでデータフレームであると仮定し

#Converting the dataframe from python to R 

# firt take the values of the dataframe to numpy 
resi1=np.array(resi, dtype=float) 

# Taking the variable from Python to R 
r_resi = numpy2ri(resi1) 

# Creating this variable in R (from python) 
r.assign("resi", r_resi) 

# Calling libraries in R 
r('library("MVN")') 

# Calling a function in R (from python) 
r("res <- hzTest(resi, qqplot = F)") 

# Retrieving information from R to Python 
r_result = r("res") 

# Printing the output in python 
print(r_result) 

この意志に従うよう、コードがある

# Create data 
resi = pd.DataFrame(np.random.random((108, 2)), columns=['Number1','Number2']) 

を言います出力を生成します。

Henze-Zirkler's Multivariate Normality Test 

--------------------------------------------- 

    data : resi 



    HZ  : 2.841424 

    p-value : 1.032563e-06 



    Result : Data are not multivariate normal. 

--------------------------------------------- 
0

あり、すでにこのテストを行うRパッケージであり、それはあなたがしなければならない最初の事はhere

で説明したようにパイソンにMVNをインポートすることですMVN

と呼ばれている次に、あなたのjupyterに行きますノートブックとその

# Fit VAR(1) Model 

results = Model.fit(1) 
results.summary() 

ストアとしてRESI

として残差を、データへのVAR(1)モデルに適合

その後

# Call function from R 
import os 
os.environ['R_USER'] = '...\Lib\site-packages\rpy2' 
import rpy2.robjects as robjects 
from rpy2.robjects import pandas2ri 
pandas2ri.activate() 

from rpy2.robjects.packages import importr 

MVN = importr("MVN", lib_loc = "C:/.../R/win-library/3.3") 

MVNをインポートした後、あなたが単にそう

MVNresult =MVN.hzTest(resi, qqplot = 0) 

あなたは

type(MVNresult) 

に押した場合は、それが

であることがわかりますよう正規のテストを行うことができます
rpy2.robjects.methods.RS4 
その後

したがって、この場合には、あなたが詳細に

を説明する中で、このlink非常に強力でしょうその後

tuple(MVNresult.slotnames()) 

これは、その後、あなたが得ることがあなたの観測

('HZ', 'p.value', 'dname', 'dataframe') 

が表示されますそのような値

np.array(MVNresult.slots[tuple(MVNresult.slotnames())[i]])[0] 

ここ0, 1, 2, 3ためiスタンドHZ', 'p-value',...

"ようにp値の場合に、即ちi=1次いで、残差(RESI)を5%の信頼レベルでは通常多変量れていない0.05未満です。

関連する問題