2014-11-29 3 views
1

win_type = 'gaussian'또는 win_type = 'general_gaussian'인 Pandas rolling_window 함수를 사용하려고합니다. datetime으로 인덱싱 된 시계열 데이터 세트가 있고 노이즈를 줄이기 위해 스무딩 기능이 필요합니다. 나는 boxcar를 피하고 대신 Gaussian weighting을 사용하고 싶다. 나는 윈도우 크기와 std (가우시안의 경우), 창 크기, 출력 및 너비 값 (일반 가우스의 경우)을 다양한 범위로 실험했으며 동일한 결과를 일관되게 얻습니다. 스무딩 된 출력은 원래 입력 데이터보다 더 낮게 오프셋됩니다. . 이것은 질문했지만 대답하지 않은 질문과 동일한 문제입니다. here.팬더 롤링 창 함수가 데이터를 오프셋합니다.

I이 사용하려고 코드의 특정 라인은 다음의 '는 날짜 인덱스 팬더의 dataframe에서 데이터의 단일 열이

dNorth_smooth = rolling_window(s, window=40, win_type='gaussian', std=30, center=True, freq='15S') 

. 이 경우 's'는 15 초 간격으로 미터 단위로 표시됩니다. 따라서 창 크기는 40 줄 또는 40 * 15 = 600 초 = 10 분입니다. 정확하게 std 인수가 무엇을 의미하는지는 명확하지 않지만 주파수 영역에 있다고 가정하고 가우스 곡선의 모양을 제어하는 ​​창 크기보다 작은 값일 것입니다 (관계없이 많은 표준 값을 실험했습니다). ; std가 매우 큰 경우 오프셋이 발생하지 않지만 이는 가우스 곡선이 창에 비해 너무 넓어 져서 본질적으로 상자를 사용하고 있기 때문입니다. 'center'및 'freq'인수는 출력을 어느 방향으로도 변경하지 않습니다. 다른 선택적 인수도 무의미한 것처럼 보입니다.

일단 내가 더 높은 평판을 얻으면 나는 설명 할 수있는 음모를 게시 할 수 있습니다. 위의 링크 된 질문에 대한 플롯을 보아라. 이것이 내가 가진 똑같은 문제이기 때문이다. 또한 유의 사항 : boxcar 창 (rolling_mean과 동일 함)은 이 아니고이 오프셋 문제가 있습니다. 그러나 다른 모든 윈도우 가중 함수 (triang, blackman 등)와 함께 존재하는 것처럼 보입니다.

+0

링크 된 질문에서 가장 최근의 의견 (광산 제외)에 따라 단계 기능을 사용하는 것이 좋습니다. 라이브러리가 올바르게 작동하는지 여부를 나타냅니다. –

+0

단계 함수를 생성하고 단계 함수를 입력으로 사용하여 Guassian 이동 창을 테스트했으며 오프셋없이 예상대로 작동하는 것으로 보입니다. 창 크기와 표준 값을 조정할 수 있으며 오프셋없이 부드럽게 곡선의 모양을 간단히 조정합니다. 이것은 좋은 테스트, 팁 덕분입니다. 그러나 움직이는 창을 적용 할 수없는 데이터 집합의 문제가 남아 있습니다. 내 테스트 단계 기능이 0에 가까운 반면 내 데이터가 3000.0에 가까운 값을 기준으로 +/- 0.05로 변하는 경향이 있는지 궁금합니다. – PJW

+0

예, 제로 중심의 스텝 기능을 +3000만큼 오프셋하여 테스트했지만, 지금까지 설명한 것처럼 가우시안 이동 창이 실패합니다. – PJW

답변

2

이 질문 (또는 비슷한 링크 된 질문)에 게시 된 특정 팬더 솔루션이 없었기 때문에 표준 numpy 및 scipy 기능을 사용하여 솔루션을 게시하고 있습니다. 가우스 웨이팅을 사용하여 부드럽게 커브를 만들고 모든 크기 데이터 (오프셋 문제가 없음)에서 작동합니다. 첫번째와 마지막 "평활화"데이터 포인트는 어느 단부로부터 (창 * 0.5)에서 발생할

def smooth_gaussian(data,window,std): 
    g = sp.signal.gaussian(window,std,sym=True) 
    con = np.convolve(g/g.sum(),data,mode='valid') 
    con_shift = np.r_[np.full((window*0.5),np.nan),con,np.full((window*0.5),np.nan)] 
    return con_shift 

결과 집합은 상기 윈도우의 길이에 의해 상기 입력 데이터 세트보다 짧다. 리턴 된 변수 con_shift은이를 설명하고, 입력 데이터에 대해 평활화 된 데이터를 센터링하므로, 길이가 같고 함께 표시 될 수 있습니다. window 인수는 움직이는 창의 크기이고 표준 편차는 std이며 가우스 곡선의 모양을 제어합니다 (필자는 광산을 0.1 * window로 설정 함). con_shift을 대칭으로 사용하려면 창 크기가 홀수이어야합니다.

관련 문제