接收ols报告的inf/nan:python和numpy

2024-09-28 03:24:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在为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报告结果供参考。任何帮助将不胜感激!在

My OLS Report reults


Tags: toimportdataasnpnanreplacepd

热门问题