<p>numpy.cov () 및 numpy.var () κΈ°λ³Έ 편ν–₯이 μΌμΉ˜ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€ (numpy 1.9.2).</p>

에 λ§Œλ“  2015λ…„ 05μ›” 04일  Β·  5μ½”λ©˜νŠΈ  Β·  좜처: numpy/numpy

cov ()λŠ” 기본적으둜 1의 편ν–₯을 μ‚¬μš©ν•©λ‹ˆλ‹€.
var ()λŠ” 기본적으둜 0의 λ°”μ΄μ–΄μŠ€λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.

그런

import numpy as np

x = np.random.rand(100)

if np.isclose(np.cov([x,x])[0,0], np.var(x)):
    print("Consistent by default.")

if np.isclose(np.cov([x,x],ddof=0)[0,0], np.var(x,ddof=0))
    print("Consistent.")

두 번째 μ€„λ§Œ μΈμ‡„ν•©λ‹ˆλ‹€.

00 - Bug numpy.lib

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

@rgommers 예, "μœ νš¨ν•œ μ½”λ“œλ₯Ό 깨지 λ§ˆμ‹­μ‹œμ˜€"λŠ” κ½€ 쒋은 κ·œμΉ™μž…λ‹ˆλ‹€.

bias λ˜λŠ” ddof 없이 cov λ₯Ό 호좜 ν•œ λ‹€μŒ λ™μž‘μ„ λ³€κ²½ν•˜μ§€ μ•ŠμœΌλ©΄ κ²½κ³ λŠ” μ–΄λ–»μŠ΅λ‹ˆκΉŒ?

λͺ¨λ“  5 λŒ“κΈ€

예. 이 μ‹œμ μ—μ„œ μš°λ¦¬κ°€ 무엇을 ν•  수 μžˆλŠ”μ§€ λͺ¨λ₯΄κ² μŠ΅λ‹ˆλ‹€. 이 λ¬Έμ œλŠ” 메일 λ§λ¦¬μŠ€νŠΈμ—μ„œ κ°€μž₯ 잘 λ…Όμ˜ 될 κ²ƒμž…λ‹ˆλ‹€.

λ‚˜λŠ” 이것이 κ³ μΉ  κ°€μΉ˜κ°€ 있고 고톡 μŠ€λŸ½μ§€λ§Œ κ³ μΉ  κ°€μΉ˜κ°€ μžˆλ‹€κ³  μ œμ•ˆν•˜κ³  μ‹ΆμŠ΅λ‹ˆλ‹€.

두 가지 λͺ¨λ‘μ— λŒ€ν•œ μ΅œμƒμ˜ 기본값은 μΆ”μ •μžμ™€ λŒ€μ‘°μ μœΌλ‘œ 데이터λ₯Ό μ„€λͺ…ν•˜λŠ” μš”μ•½ 톡계λ₯Ό κ³„μ‚°ν•˜λŠ” ddof=0 μž…λ‹ˆλ‹€.

λŒ€μ‹  편ν–₯λ˜μ§€ μ•Šμ€ μΆ”μ •κΈ°λ₯Ό μ›ν•˜λŠ” μ‚¬λžŒμ€ ddof=1 λ₯Ό μ œκ³΅ν•˜μ—¬ μš”μ²­ν•΄μ•Όν•©λ‹ˆλ‹€.

즉, var 미만으둜 μ‚¬μš©λ˜λŠ” cov 의 λ™μž‘μ„ λ³€κ²½ν•˜λŠ” 것을 μ˜λ―Έν•©λ‹ˆλ‹€.

첫 번째 λ‹¨κ³„λ‘œ bias 도 ddof 도 μ œκ³΅λ˜μ§€ μ•Šμ€ 경우 cov ν–₯ν›„ κ²½κ³ λ₯Ό μΆ”κ°€ν•˜λŠ” 것은 μ–΄λ–»μŠ΅λ‹ˆκΉŒ?

λ™μ‹œμ— bias 지원 쀑단을 μ œμ•ˆ ν•  수 μžˆμŠ΅λ‹ˆκΉŒ? 편ν–₯의 κ°œλ…μ€ λΆ„μ‚°κ³Ό 곡뢄산을 μΆ”μ • 자둜 μƒκ°ν•˜λŠ” κ²½μš°μ—λ§Œ μ μš©λ©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ λ‹€μ‹œ λ§ν•˜μ§€λ§Œ, κ°€μž₯ 쒋은 기본값은 달리 μ–ΈκΈ‰ν•˜μ§€ μ•ŠλŠ” ν•œ μ΄λŸ¬ν•œ ν•¨μˆ˜λ₯Ό μ„€λͺ… ν†΅κ³„λ‘œ μƒκ°ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

λ˜‘κ°™μ€ 말을 λ‹€λ₯Έ λ°©μ‹μœΌλ‘œ λ§ν•˜λ©΄ λ‚΄κ°€ μ›ν•˜λŠ” 것이 κ°„λ‹¨ν•œ μ„€λͺ… 톡계라면 편ν–₯된 μΆ”μ •μΉ˜λ₯Ό μš”μ²­ν•˜λŠ” 것이 μ΄μƒν•©λ‹ˆλ‹€.

... of cov , var 미만으둜 μ‚¬μš©λ˜μ—ˆμœΌλ―€λ‘œ μ’‹μŠ΅λ‹ˆλ‹€.

사싀 인 것 κ°™μŠ΅λ‹ˆλ‹€ ( μ—¬κΈ° μ—μ„œ μ‚¬μš© 데이터 μš”μ•½).

def cov(
    m: object,
    y: object = ...,
    rowvar: Union[float, bool, int] = ...,
    bias: Union[float, int, bool] = ...,
    aweights: numpy.ndarray = ...,
):
    """
    usage.dask: 11
    usage.matplotlib: 3
    usage.pandas: 7
    usage.scipy: 21
    usage.sklearn: 24
    """

def var(
    a: object,
    axis: Union[int, None, Tuple[Union[int, None], ...]] = ...,
    out: Union[dask.dataframe.core.Scalar, dask.dataframe.core.Series] = ...,
    keepdims: bool = ...,
    dtype: Union[Literal["i8", "f8"], Type[float], None] = ...,
    ddof: int = ...,
):
    """
    usage.dask: 59
    usage.pandas: 13
    usage.scipy: 19
    usage.sklearn: 55
    usage.xarray: 31
    """

μ΄λŠ” cov 의 λ™μž‘μ„ λ³€κ²½ν•˜λŠ” 것을 μ˜λ―Έν•©λ‹ˆλ‹€.

λΆˆν–‰νžˆλ„ μš°λ¦¬λŠ” κ·Έλ ‡κ²Œ ν•  수 μ—†λ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€. ν•¨μˆ˜λ₯Ό νκΈ°ν•˜κ³  μƒˆ ν•¨μˆ˜λ₯Ό μΆ”κ°€ ν•  μˆ˜λŠ” μžˆμ§€λ§Œ (고톡 슀러울 수 있음) ν˜„μž¬ ν•¨μˆ˜μ˜ λ™μž‘μ„ λ³€κ²½ν•΄μ„œλŠ” μ•ˆλ©λ‹ˆλ‹€. μ΄λŠ” 쑰용히 수치 κ²°κ³Όλ₯Ό λ³€κ²½ν•˜κ³  ν˜„μž¬ μœ νš¨ν•œ μ½”λ“œλ₯Ό 잘λͺ» λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€. μš°λ¦¬λŠ” κ²°μ½” κ·Έλ ‡κ²Œν•˜λ €κ³ ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. FutureWarning λ§ŒμœΌλ‘œλŠ” μ‚¬λžŒλ“€μ΄ 문제λ₯Ό λ³Ό 수 μžˆλ‹€κ³  보μž₯ ν•  수 μ—†μŠ΅λ‹ˆλ‹€.

@rgommers 예, "μœ νš¨ν•œ μ½”λ“œλ₯Ό 깨지 λ§ˆμ‹­μ‹œμ˜€"λŠ” κ½€ 쒋은 κ·œμΉ™μž…λ‹ˆλ‹€.

bias λ˜λŠ” ddof 없이 cov λ₯Ό 호좜 ν•œ λ‹€μŒ λ™μž‘μ„ λ³€κ²½ν•˜μ§€ μ•ŠμœΌλ©΄ κ²½κ³ λŠ” μ–΄λ–»μŠ΅λ‹ˆκΉŒ?

bias λ˜λŠ” ddof 없이 cov λ₯Ό 호좜 ν•œ λ‹€μŒ λ™μž‘μ„ λ³€κ²½ν•˜μ§€ μ•ŠμœΌλ©΄ κ²½κ³ λŠ” μ–΄λ–»μŠ΅λ‹ˆκΉŒ?

그것은 합리적인 일처럼 λ³΄μž…λ‹ˆλ‹€. cov 더 이상 μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” 것보닀 λ‚«μŠ΅λ‹ˆλ‹€. ddof=0/1 λ₯Ό μΆ”κ°€ν•΄μ•Όν•˜λŠ” 것은 μ•½κ°„ μ„±κ°€μ‹  μΌμ΄μ§€λ§Œ μ½”λ“œλ₯Ό 더 μ΄ν•΄ν•˜κΈ° μ‰½κ²Œ λ§Œλ“€μ–΄μ„œ 아이디어가 λ§ˆμŒμ— λ“­λ‹ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰