기본 콘텐츠로 건너뛰기

라벨이 workout인 게시물 표시

통계관련 함수와 메서드 사전

A B C d E F G H I K L M N O P Q R S T U V W Z A statsmodels.ap.stats.anova_lm(x) statsmodels.formula.api.ols 에 의해 생성되는 모형 즉, 클래스 인스턴스(x)를 인수로 받아 anova를 실행합니다. np.argsort(x, axis=-1, kind=None) 객체 x를 정렬할 경우 각 값에 대응하는 인덱스를 반환합니다. Axis는 기준 축을 지정하기 위한 매개변수로서 정렬의 방향을 조정할 수 있음(-1은 기본값으로 마지막 축) pandas.Series.autocorr(lag=1) lag에 전달한 지연수에 따른 값들 사이의 자기상관을 계산 B scipy.stats.bernoulli(x, p) 베르누이분포에 관련된 통계량을 계산하기 위한 클래스를 생성합니다. x: 랜덤변수 p: 단일 시행에서의 확률 scipy.stats.binom(x, n, p) 이항분포에 관련된 통계량을 계산하기 위한 클래스를 생성합니다. x: 랜덤변수 n: 총 시행횟수 p: 단일 시행에서의 확률 C scipy.stats.chi2.pdf(x, df, loc=0, scale=1) 카이제곱분포의 확률밀도함수를 계산 $$f(x, k) =\frac{1}{2^{\frac{k}{2}−1}Γ(\frac{k}{2})}x^{k−1}\exp\left(−\frac{x^2}{2}\right)$$ x: 확률변수 df: 자유도 pd.concat(objs, axis=0, join=’outer’, …) 두 개이상의 객체를 결합한 새로운 객체를 반환. objs: Series, DataFrame 객체. Axis=0은 행단위 즉, 열 방향으로 결합, Axis=1은 열단위 즉, 행 방향으

Palindrome(회문) 결정하기

palindrome(회문) 순서를 역으로 해도 동일한 단어, 숫자, 문장을 나타내는 객체  첫번째와 마지막 원소가 동일    안쪽으로 하나씩 좁혔을 때 동일함 palindrome을 판단하기 위한 프로그램 def isPalindromeS(x):     target=str(x)     is_palindrome=True     for i in range(len(target)//2):         if target[i] != target[-1 -i]:             is_palindrome=False             break     return(is_palindrome) x=[121, "level", 12314] [isPalindromeS(i) for i in x] [True, True, False] 지정한 범위에서 palindrome를 발견 re=np.array([]) for i in range(10, 1001):     if isPalindromeS(i):         re=np.append(re, i) re array([ 11.,  22.,  33.,  44.,  55.,  66.,  77.,  88.,  99., 101., 111.,        121., 131., 141., 151., 161., 171., 181., 191., 202., 212., 222.,        232., 242., 252., 262., 272., 282., 292., 303., 313., 323., 333.,        343., 353., 363., 373., 383., 393., 404., 414., 424., 434., 444.,        454., 464., 474., 484., 494., 505., 515., 525., 535., 545., 555.,        565., 575., 585., 595., 606., 616., 626., 636., 646., 656.

솟수와 소인수 (Prime, Prime Factor)

솟수 1과 자신외의 값으로 나누어질 수 없는 수 def isPrimeS(x):     if x<=1:         return False     for i in range(2, x):         if x % i ==0:             return False     return True isPrimeS(7) True 위 프로그램을 사용하여 [1, 100] 사이의 솟수는 다음과 같습니다. re=np.array([]) for i in range(1, 101):     if isPrimeS(i)==True:         re=np.append(re, i) re array([ 2.,  3.,  5.,  7., 11., 13., 17., 19., 23., 29., 31., 37., 41.,        43., 47., 53., 59., 61., 67., 71., 73., 79., 83., 89., 97.]) 소인수  (Prime Factor) 소인수: 어떤 수를 얻기 위해 곱해지는 수들중 솟수들 6=2×3의 경우 2, 3은 6의 인수(factor) Prime Factorization(소인수 분해): 어떤수를 만들기 곱해진 수들 중에 소수들 12=2×6  12의 인수들은 2, 6으로 나타낼 수 있지만 6은 소수가 아니다. 즉, 별도의 인수를 가진다. 6=2×3 그러므로 12=2×2×3=2 2 *3 결과적으로 12의 소인수는 2, 3 입니다. 인수를 찾는 프로그램    factorS(x) 와 솟수인지를 검사하는 프로그램 isPrimeS() 를 사용하여 작성할 수 있습니다.  x=factorS(13195) re=np.array([]) for i in x:     if isPrimeS(i):         re=np.append(re, i) re array([ 5.,  7., 13., 29.]) 위 프로그램을 함수로 작성하면 다음과 같습니다. def primeFacto

피보나치 수열 생성(Fibonacci Sequence)

피보나치 수열은 앞의 두 수를 더하여 다음 수를 생성하는 수열로서 다음과 같이 코드를 작성할 수 있습니다. def fiboS(n):     #n=피보나치 수열의 갯수     fiboseq=np.array([1, 2])     for i in range(2, n+1):         fiboseq=np.append(fiboseq, fiboseq[i-2]+fiboseq[i-1])     return(fiboseq) fiboS(10) array([  1,   2,   3,   5,   8,  13,  21,  34,  55,  89, 144]) 위 결과는 numpy array로서 이들의 합을 위해서는 np객체.sum()을 적용합니다. fiboS(10).sum() 375 위 프로그램의 n은 수열의 갯수로서 정수입니다. 이것은 range() 함수의 인수이기 때문입니다. 정수형은 자릿수등의 한계가 존재하므로 얼마 이상의 값에서는 예기치 못한 값을 반환합니다. fiboS(50) array([          1,           2,           3,           5,           8,                 13,          21,          34,          55,          89,                ...          267914296,   433494437,   701408733,  1134903170,  1836311903,        -1323752223,   512559680,  -811192543,  -298632863, -1109825406,        -1408458269]) 그러므로 피보나치 수열을 생성할 경우 원소의 갯수가 아닌 그 합을 기준으로 하여 프로그램을 수정할 수 있습니다. 수정된 프로그램 역시 자료형의 크기에 한계가 있으므로 첫번째 프로그램보다 약간 개선된 결과를 보이지만 한계가 존재합니다. def fiboS(n):    

공배수와 공약수 (Common Multiple and Factor)

공배수의 합 Sum of Common Multiple 3 또는 5의 배수 자연수 10이하의 3 또는 5의 배수는 3, 5, 6, 9. 이들의 합은 23 re=0 for n in range(1, 1001):     if n%3==0 or n%5==0:         re=re+n re 234168 위 프로그램과 같이 1000이하의 3, 5 공배수의 합? re=0 n=0 while n<=1001:     if n%3==0 or n%5==0:         re=re+n     n += 1 re 234168 최소공배수 (Least Common Multiple) 두 수의 최소공배수 def lcmS(x, y):     re=[]     n=1     while len(re)<1:         if n%x==0 and n%y==0:             re.append(n)         n+=1     return(re)     lcmS(14, 215) [3010]  2 수 이상에서의 최소공배수는 numpy 배열을 사용합니다. def lcm_arrayS(x):     re=[]     n=2     while len(re)<1:         y=np.repeat(n, len(x))         z=n%x         if all(z==0):             re.append(n)         n+=1     return(re) x=np.array([3, 5, 9]) lcm_arrayS(x) [45] 약수(Factor) def factorS(x):     re=[]     for i in range(1, x+1):         if (x % i == 0):             re.append(i)     return(re) factorS(1219) [1, 23, 53, 1219] 공약수와 최대공약수