1

我正在通过 Coursera 完成数据分析工具课程的作业,但我的代码遇到了困难。任务是找到方差分析并运行方差分析来比较组的平均值。我正在尝试检验 NESARC 研究中显示更多酗酒事件的假设,以查看是否与酗酒家族史有关。

我的定性变量是 S2BQ3B,即酗酒次数(1-99),我的解释变量是“FAMHIST”,我将 S2DQ1 + S2DQ2 放在一起,因为它们应该等于对酗酒说“是”的母亲和父亲。

通过 OLS 摘要运行我的测试时,我收到一个用于我的 F 统计量的 inf 和一个用于我的 p 值的 nan。我在我的数据集中添加了一个 .dropna() ,但这似乎对我的结果没有帮助。

import numpy as np
import pandas as pd
import statsmodels.formula.api as smf
import statsmodels.stats.multicomp as multi

data = pd.read_csv('nesarc_pds.csv', low_memory=False)

#Setting variables to numeric
data['S2BQ3B'] = data['S2BQ3B'].convert_objects(convert_numeric=True)
data['S2AQ1'] = pd.to_numeric(data['S2AQ1'])
data['S2DQ1'] = pd.to_numeric(data['S2DQ1'])
data['S2DQ2'] = pd.to_numeric(data['S2DQ2'])

#Subset data to exclude anyone who has never drank in lifetime, or any non alcoholic epsidoes in fam history
sub1=data[(data['S2BQ3B']<=99) & (data['S2DQ1']==1) & (data['S2DQ2']==1)]
sub2=sub1.copy()

sub2['S2BQ3B']=sub2['S2BQ3B'].replace(99,np.nan) # NUMBER OF EPISODES OF ALCOHOL ABUSE
sub2['S2DQ1']=sub2['S2DQ1'].replace(9,np.nan) # BLOOD/NATURAL FATHER EVER AN ALCOHOLIC OR PROBLEM DRINKER
sub2['S2DQ2']=sub2['S2DQ2'].replace(9,np.nan) # BLOOD/NATURAL MOTHER EVER AN ALCOHOLIC OR PROBLEM DRINKER


sub2['FAMHIST']=sub2['S2DQ1'] + sub2['S2DQ2']
sub2['FAMHIST']=pd.to_numeric(sub2['FAMHIST'])

sub3=sub2.dropna()

# Using ols function for calculating the F-statistic and associated p value
# OLS - Ordinary lease squares
model1 = smf.ols(formula='S2BQ3B ~ C(FAMHIST)', data=sub3).fit()
print(model1.summary())

附上OLS报告结果供参考。任何帮助将不胜感激!

我的 OLS 报告结果

4

0 回答 0