Hi,
I want to test my variable is independent from target y
with ChisqTest
from HypothesisTests.jl
, so I think I would need to use the contingency table instead of goodness of fit (like sklearn
โs).
First, I did one-hot-encode my categorical variable, then fetch it to ChisqTest
function. I saw there is a k
parameter which affect the degree of freedom (it seems degree of freedom = (k - 1)^2). I am not a statistician here, so what value should I put?
Anyway, using my one-hot-encoded feature, it seems that this produces NaN
p-values in all of my feature. Why is that? I am using titanic dataset from RDatasets.jl
. Hereโs the sample that it produces NaN when testing one of my feature against target โyโ (Survived).
julia> titanic = dataset("datasets", "Titanic");
julia> X = one_hot_encode(titanic[:, [:Class, :Sex, :Age]]; drop_original=true)
32ร8 DataFrame
โ Row โ Class_1st โ Class_2nd โ Class_3rd โ Class_Crew โ Sex_Female โ Sex_Male โ Age_Adult โ Age_Child โ
โ โ Bool โ Bool โ Bool โ Bool โ Bool โ Bool โ Bool โ Bool โ
โโโโโโโผโโโโโโโโโโโโผโโโโโโโโโโโโผโโโโโโโโโโโโผโโโโโโโโโโโโโผโโโโโโโโโโโโโผโโโโโโโโโโโผโโโโโโโโโโโโผโโโโโโโโโโโโค
โ 1 โ 1 โ 0 โ 0 โ 0 โ 0 โ 1 โ 0 โ 1 โ
โ 2 โ 0 โ 1 โ 0 โ 0 โ 0 โ 1 โ 0 โ 1 โ
โ 3 โ 0 โ 0 โ 1 โ 0 โ 0 โ 1 โ 0 โ 1 โ
โ 4 โ 0 โ 0 โ 0 โ 1 โ 0 โ 1 โ 0 โ 1 โ
โ 5 โ 1 โ 0 โ 0 โ 0 โ 1 โ 0 โ 0 โ 1 โ
โ 6 โ 0 โ 1 โ 0 โ 0 โ 1 โ 0 โ 0 โ 1 โ
โ 7 โ 0 โ 0 โ 1 โ 0 โ 1 โ 0 โ 0 โ 1 โ
โ 8 โ 0 โ 0 โ 0 โ 1 โ 1 โ 0 โ 0 โ 1 โ
โ 9 โ 1 โ 0 โ 0 โ 0 โ 0 โ 1 โ 1 โ 0 โ
โ 10 โ 0 โ 1 โ 0 โ 0 โ 0 โ 1 โ 1 โ 0 โ
โ 11 โ 0 โ 0 โ 1 โ 0 โ 0 โ 1 โ 1 โ 0 โ
โ 12 โ 0 โ 0 โ 0 โ 1 โ 0 โ 1 โ 1 โ 0 โ
โ 13 โ 1 โ 0 โ 0 โ 0 โ 1 โ 0 โ 1 โ 0 โ
โ 14 โ 0 โ 1 โ 0 โ 0 โ 1 โ 0 โ 1 โ 0 โ
โ 15 โ 0 โ 0 โ 1 โ 0 โ 1 โ 0 โ 1 โ 0 โ
โ 16 โ 0 โ 0 โ 0 โ 1 โ 1 โ 0 โ 1 โ 0 โ
โ 17 โ 1 โ 0 โ 0 โ 0 โ 0 โ 1 โ 0 โ 1 โ
โ 18 โ 0 โ 1 โ 0 โ 0 โ 0 โ 1 โ 0 โ 1 โ
โ 19 โ 0 โ 0 โ 1 โ 0 โ 0 โ 1 โ 0 โ 1 โ
โ 20 โ 0 โ 0 โ 0 โ 1 โ 0 โ 1 โ 0 โ 1 โ
โ 21 โ 1 โ 0 โ 0 โ 0 โ 1 โ 0 โ 0 โ 1 โ
โ 22 โ 0 โ 1 โ 0 โ 0 โ 1 โ 0 โ 0 โ 1 โ
โ 23 โ 0 โ 0 โ 1 โ 0 โ 1 โ 0 โ 0 โ 1 โ
โ 24 โ 0 โ 0 โ 0 โ 1 โ 1 โ 0 โ 0 โ 1 โ
โ 25 โ 1 โ 0 โ 0 โ 0 โ 0 โ 1 โ 1 โ 0 โ
โ 26 โ 0 โ 1 โ 0 โ 0 โ 0 โ 1 โ 1 โ 0 โ
โ 27 โ 0 โ 0 โ 1 โ 0 โ 0 โ 1 โ 1 โ 0 โ
โ 28 โ 0 โ 0 โ 0 โ 1 โ 0 โ 1 โ 1 โ 0 โ
โ 29 โ 1 โ 0 โ 0 โ 0 โ 1 โ 0 โ 1 โ 0 โ
โ 30 โ 0 โ 1 โ 0 โ 0 โ 1 โ 0 โ 1 โ 0 โ
โ 31 โ 0 โ 0 โ 1 โ 0 โ 1 โ 0 โ 1 โ 0 โ
โ 32 โ 0 โ 0 โ 0 โ 1 โ 1 โ 0 โ 1 โ 0 โ
julia> y = Vector{Int64}(recode(titanic.Survived,
"No"=> 1,
"Yes"=> 2)
);
julia> X_data=convert(Matrix, X);
julia> ChisqTest(Int.(X_data[:,1]), y,2)
Pearson's Chi-square Test
-------------------------
Population details:
parameter of interest: Multinomial Probabilities
value under h_0: [0.5, 0.0, 0.5, 0.0]
point estimate: [0.5, 0.0, 0.5, 0.0]
95% confidence interval: Tuple{Float64,Float64}[(0.25, 0.8761), (0.0, 0.3761), (0.25, 0.8761), (0.0, 0.3761)]
Test summary:
outcome with 95% confidence: reject h_0
one-sided p-value: NaN
Details:
Sample size: 8
statistic: NaN
degrees of freedom: 1
residuals: [0.0, NaN, 0.0, NaN]
std. residuals: [NaN, NaN, NaN, NaN]