无法将r-chisquare拟合优度测试代码转换为python等效代码
加州大学洛杉矶分校有一个很棒的统计测试网站 但是代码都在R中。我试图将代码转换为Python等价物,但对于一些人来说,这不是一个简单的过程,比如卡方拟合优度。以下是R版本:无法将r-chisquare拟合优度测试代码转换为python等效代码,python,r,chi-squared,Python,R,Chi Squared,加州大学洛杉矶分校有一个很棒的统计测试网站 但是代码都在R中。我试图将代码转换为Python等价物,但对于一些人来说,这不是一个简单的过程,比如卡方拟合优度。以下是R版本: hsb2 <- within(read.csv("https://stats.idre.ucla.edu/stat/data/hsb2.csv"), { race <- as.factor(race) schtyp <- as.factor(schtyp) prog <- as.fact
hsb2 <- within(read.csv("https://stats.idre.ucla.edu/stat/data/hsb2.csv"), {
race <- as.factor(race)
schtyp <- as.factor(schtyp)
prog <- as.factor(prog)
})
chisq.test(table(hsb2$race), p = c(10, 10, 10, 70)/100)
但是stats.chisquare的输出都不接近R版本。有人能把我引向正确的方向吗?TIAchisq.测试采用概率向量
stats.chisquare
采用预期频率()
vs
import numpy as np
import pandas as pd
from scipy import stats
df = pd.read_csv("https://stats.idre.ucla.edu/stat/data/hsb2.csv")
# convert to category
df["race"] = df["race"].astype("category")
t_race = pd.crosstab(df.race, columns = 'race')
p_tests = np.array((10, 10, 10, 70))
p_tests = ptests/100
# tried this
stats.chisquare(t_race, p_tests)
# and this
stats.chisquare(t_race.T, p_tests)
> results = chisq.test(c(24, 11, 20, 145), p=c(0.1, 0.1, 0.1, 0.7))
> results
Chi-squared test for given probabilities
data: c(24, 11, 20, 145)
X-squared = 5.028571429, df = 3, p-value = 0.169716919
In [49]: obs = np.array([24, 11, 20, 145])
In [50]: prob = np.array([0.1, 0.1, 0.1, 0.7])
In [51]: stats.chisquare(obs, f_exp=obs.sum() * prob)
Out[51]: Power_divergenceResult(statistic=5.0285714285714285, pvalue=0.16971691923343338)