我正在为Coursera的数据分析工具课程做作业,我的代码碰到了一堵墙。任务是找出方差分析,并进行方差分析来比较各组的平均值。我试图检验NESARC研究中显示更多酗酒事件的假设,看看是否与酗酒家族史有关。在
我的定性变量是S2BQ3B,它是酗酒的数量(1-99),我的解释变量是‘familist’,我把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报告结果供参考。任何帮助将不胜感激!在
目前没有回答
相关问题 更多 >
编程相关推荐