문제

일부 기능을 C#에서 Python으로 포트해야하지만 다음 코드를 올바르게 구현할 수는 없습니다.

[SqlFunction(IsDeterministic = true, DataAccess = DataAccessKind.None)]
public static SqlDouble LogNormDist(double probability, double mean, double stddev)
{
    LognormalDistribution lnd = new LognormalDistribution(mean,stddev);
    return (SqlDouble)lnd.CDF(probability);
}

이 코드는 Centerspace nmath 라이브러리를 사용합니다.

누구든지 Python에서 올바른 기능을 작성하는 데 도움이 될 수 있습니다.이 코드와 유사할까요?

내 영어로 죄송합니다.

upd 사실, 나는 어떤 scipy.stats.lognorm.cdf attrs가 c# 확률에 대한 simillar, mean, stddev인지 이해하지 못합니다.

아래 답변과 같이 기존 주문을 Python에 복사하면 틀이 있습니다.

도움이 되었습니까?

해결책

Scipy에는 Scipy.stats 패키지에 정의 된 여러 분포가 있습니다.

import scipy.stats

def LogNormDist(prob, mean=0, stddev=1):
    return scipy.stats.lognorm.cdf(prob,stddev,mean)

업데이트

좋아, Scipy의 STAT 정의가 약간 비표준 인 것 같습니다. 다음은 Docstring의 끝입니다 scipy.stats.lognormal

lognormal 분포

lognorm.pdf (x, s) = 1/(s엑스sqrt (2*pi))*exp (-1/2*(log (x)/s) ** 2) x> 0, s> 0.

Log X가 평균 MU 및 분산 시그마 ** 2로 일반적으로 분산되면 X는 모양 매개 변수 Sigma 및 Scale Parameter Exp (MU)와 함께 로그 정규 분포입니다.

그래서 시도해보십시오

return scipy.stats.lognorm.cdf(prob,stddev,scipy.exp(mean))

여전히 작동하지 않으면 몇 가지 샘플 포인트를 얻으려면 업무 관계를 찾을 수 있는지 확인하겠습니다.

udpate 2

죄송합니다. 스케일 매개 변수가 키워드라는 것을 몰랐습니다. 이제 작동해야합니다.

import scipy.stats

def LogNormDist(prob, mean=0, stddev=1):
    return scipy.stats.lognorm.cdf(prob,stddev,scale=scipy.exp(mean))

프로젝트에 건배와 행운을 빕니다!

다른 팁

파이썬 문서는 무작위로 방법을 설명합니다.

http://docs.python.org/library/random.html

어쩌면 그게 당신이 원하는 것일 수도 있습니다.

Maybe you can use Python.NET (this is NOT IronPython), it allows to access .NET components and services:

http://pythonnet.sourceforge.net/

Ivan,

We've got no interest in keeping people locked into NMath. Here's what we're doing in NMath.

  double t = ( Math.Log( x ) - mu_ ) / sigmaRoot2_;
  return ( 0.5 + 0.5 * Erf( t ) );

where

private static double Erf( double x )
{
  return ( x < 0.0 ? -StatsFunctions.IncompleteGamma( 0.5, x * x ) : StatsFunctions.IncompleteGamma( 0.5, x * x ) );
}

That should help...

  • Trevor
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top