2013-08-14 3 views
1

Мой файл csv содержит дискретные и непрерывные переменные, и я хотел бы найти «уравнение модели», которое объясняет мою непрерывную переменную (a) в соответствии с моими дискретными переменными (x, y, z); -> a = f (x, y, z). Проблема в том, что я пытаюсь использовать этот код, но он терпит неудачу. Когда я хочу увидеть результат печати ([f_value, p_value] stats.f_oneway = (x, y, z)), я получаю [nan, nan]. Выписка из моего кода:ANOVA in python

from numpy import (genfromtxt,hstack,arange) 
#Pr linear regression 
from scipy import stats 
import scipy 
#Pr ANOVA 
from statsmodels.stats.multicomp import (pairwise_tukeyhsd,MultiComparison) 

from pylab import savefig 
from matplotlib.pyplot import (figure,setp) 

fname="G:/table.csv" 
my_data = genfromtxt(fname,delimiter=',') 

#Transformation of file into table 

x= my_data[:,3] 
y= my_data[:,4] 
z= my_data[:,6] 


#one way anova 
[f_value, p_value] = stats.f_oneway(x, y, z) 

Я хочу оценить модель R = U + F (х, у, г) + е, где R (непрерывная переменная), и (константа), е (погрешность измерения). Я хочу иметь коэффициенты для того, как дискретные переменные влияют на мой непрерывный результат.

+0

если кто-нибудь знает другой путь, пожалуйста, помогите мне, потому что я ищу в Интернете, но я нахожу statsmodels библио и SciPy, который используется для ANOVA, но я не знаю, как это сделать и как применять эти библиотеки. – salma

ответ

2

Мое лучшее предположение заключается в том, что ваши данные содержат значения NaN или плохие значения. Вы могли бы попытаться обнаружить это с следующим фрагментом кода:

for i in range(1,len(x)): 
    (f_val,p_val) = stats.f_oneway(x[:i],y[:i],z[:i]) 
    if numpy.isnan(f_val) or numpy.isnan(p_val): 
     print i-1,x[i-1],y[i-1],z[i-1],f_val,p_val 
+0

да мои данные содержат значения как (346,788 ...) и (0). – salma

+0

Извините, что настаивает, но это работает: stats.f_oneway ([1,2,3], [1,4,6], [2,1,3]) вернется (1.000000000000002, 0.4218749999999994444), тогда как stats.f_oneway ([1,2,3], [1,4,6], [2,1, numpy.NaN]) вернутся (nan, nan). Не могли бы вы показать результат этой команды: «print x [: 3], y [: 3], z [: 3], stats.f_oneway (x [: 3], y [: 3], z [: 3 ]) "? – Alexis

+0

Да, вы правы, но я не понимаю, почему, когда я делаю stats.f_oneway (x, y, z), вернется (nan, nan) и (x, y, z) - это массив, подобный этому: array ([5 , 5, 5, ..., 2, 7, 7 ......]), массив ... Результат команды печати x [: 3], y [: 3], z [: 3 ], stats.f_oneway (x [: 3], y [: 3], z [: 3]), вернется [5. 5. 5.] [31. 31. 52.] [1. 1. 1. ] (25.244897959183675, 0.0011982397810415284) – salma

Смежные вопросы