스크립팅 도움이 필요함 - 기울기가 가장 큰 선형 맞춤<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />저는 96-웰 플레이트의 웰에서 액체 성장 배지에서 박테리아의 성장을 연구하고 있습니다. 다음과 같이 지수 성장 단계에서 직선의 기울기인 최대 성장률을 구하고 싶습니다.

내가 해야 할 일은 가장 큰 기울기를 가진 10개의 데이터 포인트에 선이 맞도록 양방향에서 데이터를 자르는 것입니다.

각 데이터 테이블에는 문자 번호 지정("웰")으로 표시된 이러한 곡선이 96개 있습니다.

y축 데이터는 자연로그 변환된 "(Ln OD 600")이고 x축 데이터는 시간 단위("Time [hrs]")입니다. 현재 저는 Fit Y by X 플랫폼을 사용하는 스크립트를 작성했으며, Y 응답에 "Ln OD 600", X 요소에 "Time [hrs]", By-box에 "Well"을 넣습니다. 그래서 저는 96개의 서로 다른 그래프가 포함된 보고서를 얻었습니다. 각 그래프에 선을 맞추고 "시간[시간]"을 사용하여 로컬 데이터 필터를 열고 10개의 데이터 포인트/일치하는 행으로 잘라냅니다.

그런 다음 시간에 따라 해당 필터/슬라이더를 수동으로 밀어서 라인의 가장 큰 기울기를 찾아야 합니다. 수백 개의 데이터 파일이 있으므로 작업하는 데 엄청난 시간이 걸립니다!

내가 하려는 것은 시간에 따라 슬라이더를 자동으로 이동하고 선의 가장 큰 기울기를 찾는 스크립트를 작성하는 것입니다. 불행하게도 스크립팅과 코딩은 제 능력 중 하나가 아니어서 당황했습니다. 현재 JSL 스크립트를 첨부했습니다. 어떤 도움이나 생각을 주셔서 감사합니다!
Re: 스크립팅 도움이 필요합니다 - 기울기가 가장 큰 선형 적합
안녕 짐 -
범위에 걸쳐 위의 그래프에 예시된 데이터의 가장 큰 기울기를 찾기 위해 스크립트를 어떻게 수정하시겠습니까?귀하의 스크립트를 수정하려고 했지만 어떤 행도 제대로 제외되지 않았습니다. OP와 동일한 형식입니다.각 "우물"은 유사한 파형을 가집니다.
감사해요,
드류
Re: 스크립팅 도움이 필요합니다 - 기울기가 가장 큰 선형 적합짐,
이것은 훌륭합니다! 1개의 완전한 데이터 세트에서 실행했으며 스크립트에 의해 계산된 선 경사는 R-제곱이 0.98인 수동으로 계산된 경사와 상관관계가 있습니다. 나는 약간의 변동이 손으로 계산하는 것과 관련된 오류 때문이라고 생각합니다. 나는 그것으로 좀 더 할 것이지만 이것은 정확히 내가 필요했던 것 같습니다!성능에 대해 이미 분석한 일부 데이터 파일에서 실행한 후 다시 게시하겠습니다.
도움을 주셔서 대단히 감사합니다.
나단
Re: 스크립팅 도움이 필요합니다 - 기울기가 가장 큰 선형 적합데이터에 이 스크립트를 시도하고 원하는 것에 더 가까운지 확인하십시오.
여기에 기본 이름 ( 1 ) ;
// 데이터 테이블 열기
dt = 현재 데이터 테이블 () ;
요약하다 ( dt , 우물 목록 = ~에 의해 ( : 잘 ) ) ;
dt << 열별 색상 ( : 잘 ) ;
// 각 Well의 데이터를 통과하고 가장 근접한 10개의 점을 찾습니다.
// 최적의 기울기로
을 위한 ( 나 = 1 , 나 <= N개 항목 ( 우물 목록 ) , 나 ++,
// 기울기가 가장 높은 결정된 10개의 데이터 포인트를 포함하도록 목록을 설정합니다.
dt << 어디를 선택 ( : 잘 == 우물 목록 [ 나 ] ) ;
베스트베타 = 0 ;
시작줄 = 0 ;
너희들 = : Ln 외경 600 [ dt << 선택된 행 가져오기 ] ;
xall = : 시간 [ dt << 선택된 행 가져오기 ] ;
을 위한 ( 케이 = 1 , 케이 <= N 행 ( xall ) - 10 , 케이 ++,
엑스 = xall [ 케이 :: 케이 + 9 ] ;
엑스 = 제이 ( N행 ( 엑스 ) , 1 , 1 ) || 엑스 ;
와이 = 너희들 [ 케이 :: 케이 + 9 ] ;
// 회귀 계산
xpxi = 역 ( 엑스 ` * 엑스 ) ;
베타 = xpxi * 엑스 ` * 와이 ;
만약에 ( 복근 ( 베타 [ 2 ] ) > 베스트베타 ,
베스트베타 = 복근 ( 베타 [ 2 ] ) ;
시작줄 = ( dt << 선택된 행 가져오기 )[ 케이 ] ;
) ;
) ;
을 위한 ( 케이 = 분 ( dt << 선택된 행 가져오기 ) , 케이 <= 최대 ( dt << 선택된 행 가져오기 ) , 케이 ++,
만약에 ( 시작줄 <= 케이 <= 시작줄 + 9 ,
행 상태 ( 케이 ) = 제외된 상태 ( 0 ) , 행 상태 ( 케이 ) = 제외된 상태 ( 1 )
) ;
) ;
) ;
// 그래픽 출력 생성
이변량 ( 와이 ( : Ln 외경 600 ) , 엑스 ( : 시간 ) , 그룹화 기준 ( : 잘 ) , 핏 라인 ( 1 ) ) ;
Re: 스크립팅 도움이 필요합니다 - 기울기가 가장 큰 선형 적합짐,
감사합니다! 나는 아마 그것을 분명히하지 않았을 것입니다. 이것은 스크립팅에 대한 나의 첫 번째 시도입니다. 도움을 주셔서 감사합니다.
나단
Re: 스크립팅 도움이 필요합니다 - 기울기가 가장 큰 선형 적합각각 다른 Well 값이 다른 열에 있다고 생각한 내 실수입니다.필요에 맞게 스크립트를 수정하는 것은 주요 프로젝트가 아닙니다.내일 오후까지는 받을 수 없지만 그 때 받을 수 있도록 하겠습니다.
Re: 스크립팅 도움이 필요합니다 - 기울기가 가장 큰 선형 적합짐,
답변과 생각에 감사드립니다! 스크립트를 변경하여 내 테이블에 적용하고 실행할 수 있었습니다. 그러나 실제로는 각 곡선이 x축으로 시간과 함께 플롯될 때 각 곡선에 맞는 선이 필요합니다. 그런 다음 가장 큰 기울기를 생성하는 10개의 연속 점(시간에 따라 연속)을 선택해야 합니다. 내가 그것에 대해 명확하지 않은 경우 사과드립니다. 기본적으로 각 지점 사이에 10분이 있으면 선의 기울기가 가장 큰 100분 기간을 찾고 있습니다.
다음은 내 데이터 시트의 스냅샷입니다. 기본적으로 "Well" 열에는 96개의 문자-숫자 조합 식별자가 있습니다. 각 식별자에는 140개 정도의 행이 있습니다. 그런 다음 x에 "Time [hrs]"를, y에 "OD 600"을 표시하고 By 상자에 "Well"을 표시합니다. 도움이 되나요?

대화 상자는 다음과 같습니다.

도움을 주셔서 대단히 감사합니다!
~네이선
Re: 스크립팅 도움이 필요합니다 - 기울기가 가장 큰 선형 적합여기 당신이 원하는 것을 할 것이라고 믿는 스크립트가 있습니다.Big Class라는 JMP 샘플 데이터 테이블을 사용하여 예제로 설정합니다.그러나 실행하려는 데이터 테이블에 스크립트를 지정하고 Y Var = "age"; 실행하려는 Y 열에 원하는 것을 가져와야 합니다.스크립트에는 2가지 가정이 있습니다.....첫 번째는 데이터 테이블의 모든 숫자 연속 열이 분석된다는 것입니다. 두 번째 가정은 열의 데이터가 X 변수에 따라 정렬된다는 것입니다.그렇지 않은 경우 해당 상황을 처리하도록 스크립트를 수정할 수 있습니다.처리 시간이 더 추가됩니다. 정렬을 수행하도록 스크립트를 변경했습니다.
여기에 기본 이름 ( 1 ) ;
// 데이터 테이블 열기
dt = 열려 있는 ( "$SAMPLE_DATA/빅 클래스.jmp" ) ;
Y 변수 = "나이" ;
// 데이터를 행렬로 가져오기
콜리스트 = dt << 열 이름 가져오기 ( 마디 없는 , 끈 ) ;
// 목록에서 Y 변수 제거
콜리스트 = 제거하다 ( 콜리스트 , 포함 ( 콜리스트 , Y 변수 ) , 1 ) ;
// 기울기가 가장 높은 결정된 10개의 데이터 포인트를 포함하도록 목록을 설정합니다.
최고의 데이터 = {} ;
최고의 Y = {} ;
열 이름 = {} ;
베스트베타 = 0 ;
시작줄 = 0 ;
// 열을 순환합니다.
을 위한 ( 나 = 1 , 나 <= N개 항목 ( 콜리스트 ) , 나 ++,
// 데이터가 오름차순 X에 있도록 데이터를 정렬합니다.
dt << 종류 ( ~에 의해 ( 콜리스트 [ 나 ] ) , 주문하다 ( 오름차순 ) , 테이블 교체 ( 1 ) ) ;
너희들 = 열 ( Y 변수 ) << getValues ;
xall = ( 열 ( dt , 콜리스트 [ 나 ] ) << getValues ) ;
을 위한 ( 케이 = 1 , 케이 <= N 행 ( xall ) - 10 , 케이 ++,
엑스 = xall [ 케이 :: 케이 + 9 ] ;
엑스 = 제이 ( N행 ( 엑스 ) , 1 , 1 ) || 엑스 ;
와이 = 너희들 [ 케이 :: 케이 + 9 ] ;
// 회귀 계산
xpxi = 역 ( 엑스 ` * 엑스 ) ;
베타 = xpxi * 엑스 ` * 와이 ;
만약에 ( 복근 ( 베타 [ 2 ] ) > 베스트베타 ,
베스트베타 = 복근 ( 베타 [ 2 ] ) ;
시작줄 = 케이 ;
) ;
) ;
최고의 데이터 = 최고의 데이터 || 목록으로 ( xall [ 시작줄 :: 시작줄 + 9 ] ) ;
최고의 Y = 최고의 Y || 목록으로 ( 너희들 [ 시작줄 :: 시작줄 + 9 ] ) ;
을 위한 ( 케이 = 1 , 케이 <= 10 , 케이 ++,
에 집어 넣다 ( 열 이름 , 콜리스트 [ 나 ] )
) ;
) ;
// 모든 열에 대해 최상의 10개 포인트로 새 데이터 테이블을 만듭니다.
함께 = 새 테이블 ( "결과" ,
새 열 ( "열 이름" , 성격 , 값 ( 열 이름 ) ) ,
새 열 ( "와이" , 값 ( 최고의 Y ) ) ,
새 열 ( "데이터" , 값 ( 최고의 데이터 ) )
) ;
// 그래픽 출력 생성
함께 << 열별 색상 ( : 열 이름 ) ;
이변량 ( 와이 ( : 와이 ) , 엑스 ( : 데이터 ) , 그룹화 기준 ( : 열 이름 ) , 핏 라인 ( 1 ) ) ;