Spss Syntax Question

FrontPage|FindPage|TitleIndex|RecentChanges| UserPreferences P RSS
Here's the problematic situation:

통계 돌리는데 SPSS syntax 질문이 있습니다. 이게 좀 복잡해가지구 신택스를 짜기가 쉽지가 않네요.. 뭐냐면.. 60개의 소그룹이 있고 각 그룹은 1 - 10 명의 멤버를 가지고 있습니다. 지금 해야하는 일은 각 그룹 내에서의 멤버들간에 sum of absolute values of (differences between each pair of members)를 구해야하는 것입니다. 혹시 신택스 어떻게 해야하는지 SPSS 명령어 도움주실 수 있는 분 있어요? --우산

SP score (Sum of pairs) 를 말씀하시는 것 같습니다. 각 pair 마다 difference 의 절대값을 취하고, 이걸 모두 더한 값 아닌가요? 제가 방금 좀 보기로는 통계 프로그램에서 SP score를 다루는 예가 별로 없어서, 처리하는 함수가 없는 것 같은데요. 그리고 이게 치명적인 약점이 있는 걸로 알고 있는데, 한 상황에 대해서 overcount 하는... 우산님 처리하는 data가 어떤 것일지에 따라 틀릴 것 같습니다. 대부분 이거 대신 SP score 에다가 제곱을 해서 모두 더한 SS (Sum of square) 를 쓰잖아요. 만약 구하고자 하는 것이 이것이라면 chi-squre나 ANOVA 등을 잘 응용하면 비교적 쉽게 할 수 있을 것 같기도 한데... 그래도 좀 노가다가 필요할 지도...

근데 어떤 것이든, python 으로 프로그램하면 금방 될 것 같습니다. 만약 앞으로도 이런 걸 자주 하실 거라면, 프로그램을 하나 만들어 두시는 것이 좋을 듯 싶습니다. 김창준님께 부탁하시면, 금방 쌈빡하게 만들어 주실 것 같은데... ^^ --지상은

네 맞아요, 한 그룹 내의 각 페어마다의 차이의 절대값을 다 더한 값, 그것을 구해야하는 거 맞습니다. 그리고 네 맞아요, 그걸 한번에 처리해주는 함수 역시 패키지안에 없는 모양입니다. 무엇을 구해야하는지 토론할 때 '섬 오브 스퀘어' 얘기도 나왔는데 아무래도 절대값들의 합과는 개념이 좀 다르다고 해서 절대값을 합을 구하라는 쪽으로 일이 떨어졌거든요. '섬오브스퀘어'를 조작하면 절대값의 합과 비슷한 걸 구할 수가 있을까나..? 모르겠네요.. 암튼 절대값의 합 구하는 명령어가 딱히 따로 없는 것같으니까 논리적으로 조건명령어("if" 같은..)들을 잘 조합해서 할 수 있을까..생각해봤지만..것두 논리가 단박에 머릿속에 줄을 안서네요...-_- 근데 그 파이썬이라는 게 통계를 하는 데에도 쓰일 수 있는 것인 모양이군요.. 아 이거 통계학과에다가 물어보면 아는 사람이 있을라나.. 통계 전공한 경제학과생을 붙잡아서 물어볼까.. 고민고민.. --우산

고민하실 필요가 있을까요? SS (Sum of squares) 는 편차의 제곱의 합이고, SP (Sum of pairs) 는 편차의 절대값의 합인데, 둘 다 구해서 비교를 해 보시죠 뭐. 어려운 것도 아닌데.
일단 우산님께서 하셔야 할 것은, SPSS에서 data를 정리를 좀 해야 합니다. 데이터가 있는 파일을 다른 이름으로 저장하신 다음에, 그룹명 variable과 계산하기를 원하는 variable 만 남기고 다른 변수들은 모조리 지워버립니다. 원본은 따로 남아 있으니 상관 없겠죠. 그리고 그 파일을 text 로 저장을 하셔서 이렇게 편집합니다. 예를 들어 3 그룹에 각기 2명, 3명, 4명의 data 가 있다면

3 1
4 5 6
4 2 2 4

이런 식으로 된 text 파일을 만들 수 있죠. 제대로 한다면 10분 이상 안 걸릴 겁니다. 60그룹이면 60줄이 되겠죠. 그룹 사이에는 엔터쳐서 break를 주고, 그룹안의 멤버 사이에는 스페이스만 주면 됩니다. 그 다음에는 노스모크의 훌륭한 프로그래머들에게 부탁하시면 될 것 같습니다. 유월님께 부탁해 보세요. 제 생각에 유월님이 핵심적인 함수를 코딩하는데 걸리는 시간은 5분이면 충분할 것 같습니다. 저는 너무 초보라 책 보고 문법 찾아 보고 그래야겠지만, 제가 해도 30분이면 해 낼 수 있지 않을까 싶은데... 제가 만든 코드는 reusuable 할 것 같지 않군요. ^^

계산하는 알고리즘은 한 그룹을 읽어서 list 로 만든 다음에 함수에 넘겨 주고, 두개의 for 문으로 감싸서 안의 for 문이 밖의 것보다 하나 앞서 가도록 해서 계산하면 모든 조합에 대해서 중복 없이 될 것 같습니다. --지상은


{{|SOP.py (Sum Of Pairs)|}} -> beautiful codes. 역시 파이썬, 역시 김창준님!

우산님 이거 그대로 하시면 돼요. 파이썬 없으면 윈도우용 까시면 되구요. [http] 파이썬 정보광장 자료실에 가셔서 Python 2.1 final (윈도우용) 다운 받으시고 클릭만 하면 설치될 겁니다. 그리고는 김창준님 쓰신 대로 하시면 되죠.
Sum of squares 는 생각해 보니, 좀 틀릴 것 같군요. 둘씩 비교한 것이 아니라 각각의 data에서 평균을 뺀 편차의 제곱의 합이니까. 하지만, 그것도 약간만 코드 변경하면 가능할 겁니다. --지상은

그러나..... 컴맹인 저에게 문제는... 이런 raw code of computer language를 어케 다루어야하는지 전혀 감이 없다는 것... --우산

내가 애초에 멀 설명을 잘못한 건지.. 위의 코드를 이용해서 아까 유월씨가 시범보여준 예에서 한가지 이상한 점이..이거 한 그룹당 결과값이 하나가 나오면 안되는데... 개념상 그 그룹안의 사람들이 원래 다른 수치를 가지고 있었다면 그 결과도 같은 그룹에 있다해도 각각의 사람들의 결과값이 다르게 나와야되는 거같은데... 구하고자 하는 개념은 "한 그룹 안에서 A라는 사람과 다른 모든 사람 각각과의 거리(distance)의 (절대값) 합"을 이 A라는 사람이 가지게 되고 이 과정을 각 멤버들에 대해 반복하는 것이거든요. 이런 개념이라면 원래의 값이 달랐던 사람들은 같은 그룹이라하더라도 다른 값의 합을 갖게 되는 게 아닌가 싶은데... 제가 말하는 거랑 유월씨가 짜준 프로그램이랑 개념이 지금 서로 다른 건가요?? --우산

{{|SOP2.py (Sum Of Distances)|}}



"; if (isset($options[timer])) print $menu.$banner."
".$options[timer]->Write()."
"; else print $menu.$banner."
".$timer; ?> # # ?>