这是我第一次来这里,我是编程新手。
我用 stats.linregress 将我的 df 的一列与另一列回归,我试图用卡方统计检验评估拟合优度,我尝试了 2 种方法,scipy.stats.chi2_contingency() 和 scipy.stats.chisquare (),问题是我无法从这些方法可读的列中获取频率(这就是我的想法)。
代码是:
import os
import pandas as pd
import numpy as np
import scipy
from scipy import stats
df3 = pd.read_csv('MODELLO RAVASI-MARK UP shock1+control-table.csv', thousands=',')
df_cntrl_reg = df3.loc [(df3['time'] > 34) & (df3['wageShock'] == 1) &
(df3['wageSchockTime']==30)]
x = df_cntrl_reg.time
y = df_cntrl_reg.profits
slope, intercept, r_value, p_value, std_err = stats.linregress(x,y)
stats.linregress(x,y)
输出:LinregressResult(斜率=57.735721968728164,截距=-1788.6653717798467,右值=0.014085574855596942,pvalue=0.47927072225571066,stderr=81.59589542103119)
df_cntrl_reg['predicted'] = 57.735721968728164*df_cntrl_reg.time -1788.6653717798467
obs = df_cntrl_reg['profits'].value_counts()
exp = df_cntrl_reg['predicted'].value_counts()
scipy.stats.chisquare(f_obs = obs, f_exp = exp, ddof = 1)
但是我得到了 ValueError: 操作数不能与形状一起广播 (2525,) (25,
我尝试像这样应用 .ravel() 方法:
obs = df_cntrl_reg['profits'].value_counts().ravel()
exp = df_cntrl_reg['predicted'].value_counts().ravel()
但这并没有改变什么。
我尝试使用 scipy.stats.chi2_contingency():
table = [df_cntrl_reg['predetti'], df_cntrl_reg.profits]
scipy.stats.chi2_contingency(table)
但我得到ValueError:所有值都observed
必须是非负的。
我也试过这个来获取表格:
to_test = df_cntrl_reg[['profits', 'predetti']]
table = to_test.apply(pd.Series.value_counts(bins=10))
但我得到 TypeError: value_counts() missing 1 required positional argument: 'self'
你能帮我用一种简单的方法来获得统计数据吗?我不需要使用methof本身,只是为了获取统计信息,我可以从表中获取p值。我在 jupiter notebook 上使用 python 3,我的操作系统是 win 10(我知道我知道,但直到最近我才需要编程任何东西)。提前致谢