누락된 시계열 날씨 데이터를 보간하는 스크립팅?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />시간별 날씨 데이터에는 때때로 누락된 데이터 포인트가 있습니다(누락된 읽기).누락된 데이터 포인트를 보간하고 싶습니다. 온도, 습도, 기압은 일반적으로 하루 동안 점진적으로 변합니다.데이터를 정리하기 위해 누락된 값을 얻기 위해 열의 마지막 시계열 값과 다음 시계열 값 사이를 보간하고 싶습니다."누락된 값 탐색"을 사용한 대체는 여러 행을 살펴보는 무의미한 결과를 제공합니다. 난방도일, 냉방도일 등과 같은 다른 계산에 사용하기 위해 열에서 누락된 점을 채우는 간단한 방법이 필요합니다.
개념적으로 논리는 간단해 보입니다. 열의 다음 행에서 누락된 값을 발견하면 다음 값까지 누락된 데이터 포인트 수를 세고 누락된 데이터 포인트 수를 기준으로 보간합니다.논리는 다음과 같습니다. 누락된 데이터가 있는 열을 확인한 다음 누락된 간격을 계산한 다음 마지막 값에 추가된 (다음 값 - 마지막 값/누락된 간격 수)로 누락된 간격을 채웁니다.
솔루션이 있는 것보다 더 나은 스크립팅 전문 지식을 가진 사람이 있습니까?
이미 해결되었나요?아니면 JMP에 이미 내장된 기능이 있습니까?
Re: 누락된 시계열 날씨 데이터를 보간하는 스크립팅?많은 댓글에서 시계열 데이터가 있다는 사실을 무시한 것 같습니다. 데이터가 자동 상관 관계를 보인다고 가정하면 JSL 함수 INTERPOLATE를 사용할 수 있습니다. 또는 비선형 보간이 필요한 경우 SPLINE SMOOTH.

Re: 누락된 시계열 날씨 데이터를 보간하는 스크립팅?....스플라인 맞춤 스크립팅은 어떻습니까?
G
Re: 누락된 시계열 날씨 데이터를 보간하는 스크립팅?당신 때문에 ~할 수 있다 무언가를 하는 것은 당신을 의미하지 않습니다 ~해야 한다 !
데이터에서 어떤 정보를 만들고 싶은지는 아직 명확하지 않지만 단일 전가로 데이터에 대한 추론(가설 테스트, 신뢰 구간 등)을 수행하는 경우 데이터의 모든 분산이 편향되었음을 알아야 합니다. 매개변수는 0에 가까워지고 이후에 데이터에 대해 수행되는 모든 추론의 품질에 영향을 미칩니다.
아마도 이러한 데이터에 대해 어떤 추론도 수행되지 않을 것이며 이는 귀하에게 문제가 되지 않습니다.이 경우 원하는대로 전가하십시오.
Re: 누락된 시계열 날씨 데이터를 보간하는 스크립팅?가장 간단한 해결책은 가끔 누락된 데이터가 있는 경우 Fit-Y-By-X 플랫폼을 사용하는 것입니다. 시간 열을 X(숫자 연속이어야 함)로 지정하고 날씨 변수를 Y로 지정하는 경우 그런 다음 핫스팟 메뉴에서 스플라인을 맞출 수 있습니다(사용할 Lambda 변경 값을 실험해야 함).
스플라인 핫스팟에서 예상 저장을 선택합니다. 이러한 새 열에는 계산을 수행할 수 있는 누락된 값이 채워집니다(또는 원본이 누락된 경우에만 새 값을 사용하기 위해 약간의 스크립팅을 수행할 수 있음). 날씨 데이터는 종종 점진적인 변화이기 때문에 이것은 합당한 전가를 제공해야 합니다.
Re: 누락된 시계열 날씨 데이터를 보간하는 스크립팅?위의 Ron의 제안과 관련하여 나는 'RandomIndex()'가 얼마나 많은 값이 소멸되었는지에 대한 불확실성을 제거할 것이라고 지적하고 싶었습니다. 따라서 처음 몇 줄은 다음과 같이 됩니다.
dt = 열려 있는 ( "$SAMPLE_DATA/시계열/CO2.jmp" ) ;
// n개의 CO2 값을 누락으로 설정
N = 25 ;
dt : 이산화탄소 [ 랜덤인덱스 ( N행 ( dt ) , N )] = . ;
일반적인 방법에 대해서는 다음도 참조하십시오. https://community.jmp.com/message/217292#217292
Re: 누락된 시계열 날씨 데이터를 보간하는 스크립팅?안녕 jthornton1 ,
과거에 나는 당신이 언급 한 것과 비슷한 일을했습니다. 가장 빠르거나 단순하지는 않지만 작업을 수행할 수 있습니다.
기간 열과 차이 열(및 소스에서 가져온 시간)이 있으면 대치 공식을 원하는 만큼 복잡하게 만들 수 있습니다.
여기에 기본 이름 ( 1 ) ;
// 원본 데이터 세트 열기
dt = 열려 있는 ( "$SAMPLE_DATA/시계열/CO2.jmp" ) ;
// 약 25개의 임의 행을 삭제합니다.
을 위한 ( 나 = 1 , 나 <= 25 , 나 ++,
엑스 = 임의의 정수 ( 161 ) ;
dt : 이산화탄소 [ 엑스 ] = . ;
) ;
// 이 시점에서 누락된 값이 있는 데이터만 있습니다.
// 시간에 대한 열을 추가합니다. 열이 있으면 필요하지 않습니다.
dt << 새 열 ( "티" ) ;
각 행에 대해 ( : 티 = 열 () ) ;
// 여기에서 시작합니다.
// 원래 테이블을 부분 집합화하고 누락된 값이 있는 행을 삭제합니다.
dtSub = dt << 하위 집합 ( 모든 행 , 열 ( : 이산화탄소 , : 티 ) ) ;
dtSub << 행 삭제 ( dtSub << 행 가져오기 ( 누락 ( : 이산화탄소 ) ) ) ;
// 기간 열 소개
dtSub << 새 열 ( "지속" ) ;
각 행에 대해 ( : 지속 = 지연 ( : 티 , - 1 ) - : 티 ) ;
// 행에서 행으로 co2의 변화를 소개합니다.
dtSub << 새 열 ( "co2 체인지" ) ;
각 행에 대해 ( : 이름 ( "co2 체인지" ) = 지연 ( : 이름 ( "이산화탄소" ) , - 1 ) - : 이름 ( "이산화탄소" ) ) ;
// 원래 테이블의 기간과 차이를 업데이트합니다.
dt << 업데이트 ( ~와 함께 ( dtSub ) , 열 일치 ( : 티 = : 티 ) ) ;
// 하위 집합 테이블을 닫습니다.
닫다 ( dtSub , 아니 저장 ) ;
// 누락된 행 채우기 - 다음 단계 필요
각 행에 대해 ( : 지속 = 만약에 ( 누락 ( : 지속 ) , 지연 ( : 지속 , 1 ) , : 지속 ) ) ;
각 행에 대해 ( : 이름 ( "co2 체인지" ) = 만약에 ( 누락 ( : 이름 ( "co2 체인지" ) ) , 지연 ( : 이름 ( "co2 체인지" ) , 1 ) , : 이름 ( "co2 체인지" ) ) ) ;
// 이제 수식을 사용하여 누락된 값을 새 열 또는 기존 열에 채울 수 있습니다.
dt << 새 열 ( "co2 풀" ) ;
각 행에 대해 (
: 이름 ( "co2 풀" ) = 만약에 (
열 () == 1 , : 이산화탄소 ,
: 지속 == 1 , : 이산화탄소 ,
: 지속 > 1 , 지연 ( : 이름 ( "co2 풀" ) , 1 ) + ( : 이름 ( "co2 체인지" ) / : 지속 )
)
) ;
Re: 누락된 시계열 날씨 데이터를 보간하는 스크립팅?안녕, jthornton1!
나는 보통 내 논리가 간단해 보일 때 걱정하기 시작합니다!
보간 아이디어는 하루에 24시간 연속으로 누락된 경우 극단적인 편향을 겪는 것처럼 보입니다.예를 들어, 자정에서 자정까지의 온도 보간은 낮 동안 태양의 온난화 효과를 놓칠 것이라고 가정합니다.단 몇 개의 포인트만 누락되었더라도 귀하가 제안하는 방법(단일 대치라고 함)은 알 수 없는 누락 값의 예측에 대한 불확실성을 제대로 반영하지 않으며 이러한 데이터 분석의 모수 추정치 분산은 잘못 편향됩니다. 0을 향해.이는 완성된 데이터의 각 기간에서 일부 통계(평균, 중앙값 등)를 사용하더라도 문제가 됩니다.
귀하의 문제를 다루는 접근 방식에 대한 현재 최신 기술은 다중 전가라고 생각합니다.누락된 각 데이터에 대해 단일 값을 채우는 대신 다중 대체는 각 누락된 값을 대체할 올바른 값에 대한 불확실성을 나타내는 그럴듯한 값 세트로 바꿉니다. 귀속된 데이터 세트는 완전한 데이터에 대한 표준 절차를 사용하여 각각 분석되고 이러한 분석의 결과는 이후에 결합됩니다.다중 대치는 각각의 결측값을 자체적으로 추정하려고 시도하지 않고 그럴듯한 결측값의 임의 샘플을 나타내려고 시도합니다. 이 프로세스는 누락된 값으로 인한 불확실성을 보다 적절하게 반영하는 통계적 추론을 생성합니다.예를 들어 매개변수에 대해 정당하게 유효한 신뢰 구간을 얻을 수 있습니다.
SAS는 Multiple Imputation을 매우 효과적으로 구현하는 몇 가지 절차를 가지고 있습니다.JMP는 SAS와 잘 통합됩니다.행운을 빌어요!