0

저는 Python 3x에서 Henze-Zirkler의 다 변수 정규성 테스트를 적용하고 Jupyter 노트북에서 파이썬으로 그렇게 할 수 있는지 궁금합니다.rpy2가있는 Jupyter 노트북에서 Henze-Zirkler의 다 변수 정규성 테스트를 적용하는 방법

나는 VAR 모델을 데이터와 맞추었고 그때 나는이 적합 VAR 모델의 잔차가 정상적으로 분포되어 있는지 테스트하고 싶다.

Jupiter 노트북에서 파이썬을 사용하면 어떻게 될까요?

답변

1

나중에이 방법을 발견 한 이후로 이것은 또 다른 대답입니다. R의 라이브러리를 Python으로 가져 오지 않으려는 경우. 하나는 R의 출력을 파이썬으로 호출 할 수 있습니다. 즉하나는 다음과 같이 파이썬을 통해 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 

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

말 집용 파이썬에서 Dataframe 것을 가정 그리고

#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) 

이 뜻을 따를 코드입니다 출력을 생성하십시오 :

Henze-Zirkler's Multivariate Normality Test 

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

    data : resi 



    HZ  : 2.841424 

    p-value : 1.032563e-06 



    Result : Data are not multivariate normal. 

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

가 이미이 테스트를 수행 R의 패키지이며, 그런 다음 jupyter로 이동 MVN

당신이해야 할 첫 번째 일은 here

에 설명 된대로 파이썬으로 MVN을 가져 오는 것입니다라고 노트북 등

# Fit VAR(1) Model 

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

스토어로 집용

로 잔차를 데이터로 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 

따라서,이 경우에 당신이 세부 사항이 당신에게 관찰을 보여줍니다 이후

tuple(MVNresult.slotnames()) 

그런

설명이 link에게 매우 강력한를 찾을 수

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

그럼 당신은 얻을 수 있습니다 그 값은

np.array(MVNresult.slots[tuple(MVNresult.slotnames())[i]])[0] 
경우에 따라서 HZ', 'p-value',...

P 값 즉 i=1 '로서 0, 1, 2, 3 용 스탠드 i 후 0.05 잔차 (집용)이다 15,

5 % 신뢰 수준에서 다변량 정규 아니다.

관련 문제