2017-02-22 27 views
2

У меня есть набор цифр, который может быть очень маленьким: от 1e-100, до 1e-700 и ниже. Точность не имеет значения, как показатель. Я могу загрузить такие цифры просто с помощью Pandas, просто предоставив Decimal в качестве конвертера для всех таких числовых столбцов.Высокие номера экспонентов с функциями scipy.stats

Проблема в том, что даже если я использую Python Decimal, я просто не могу использовать scipy.stats.chi2.isf и подобные функции, так как их код C явно использует double. Возможным обходным путем является то, что я могу использовать log10 чисел. Проблема здесь в том, что, хотя есть функция logsf, для chi2 она реализована как log(sf(...)) и поэтому не сработает, когда sf вернет 0, где он должен был вернуть что-то вроде 1e-600. А для isf такой функции журнала вообще нет.

Я хотел знать, есть ли способ работать с такими числами, не решая сам написать все эти функции для десятичного.

ответ

0

Вы можете просто написать выражение для logsf напрямую, используя журналы гамма-функций от scipy.special (gammaln, loggamma). И вы можете отправить запрос на растяжение, реализующий logsf для распределения хи-квадрат.

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