2011-08-04 7 views
0

Может ли кто-нибудь посоветовать лучший способ сделать следующее?Случайно выберите увеличение подмножества данных, чтобы увидеть, где средние уровни отключены.

У меня есть три переменные (X, Y & Z) и четыре группы (1, 2, 3 & 4). Я использовал анализ дискриминантных функций в SPSS для прогнозирования членства в группе известных сгруппированных данных для использования с будущими негруппированными данными.

В идеале я хотел бы случайным образом опробовать все большее число подмножеств данных, чтобы увидеть, сколько наблюдений требуется для достижения желаемого правильного процента классификации.

Однако я понимаю, что это может быть сложно. Поэтому я собираюсь сделать это для средств.

Например, скажем, переменная X имеет среднее значение 141 для группы 1. Это значение могло быть рассчитано из 2000 наблюдений. Однако может случиться так, что среднее значение произошло, скажем, из 700 наблюдений. Я хотел бы иметь возможность рассчитать, какое количество наблюдений/случаев означает средние уровни в моих данных. Например, возможно, начиная с 10 наблюдений и повторяя это случайным образом 50 или 100 раз, затем увеличивая до 20 наблюдений .... и так далее.

Я понимаю, что это форма тестирования монте-карло. Я имею доступ к SPSS 15, 17 и 18 и превосхожу. У меня также есть доступ к minitab 15 & 16 и amos17 и скачали «R», но я не знаком с ними. Мой опыт в SPSS и Excel. Я попробовал некоторый синтаксис в SPSS, измененный из этого ..http: //pages.infinit.net/rlevesqu/Syntax/RandomSampling/Select2CasesFromEachGroup.txt, но с моей стороны было бы довольно много времени, чтобы ввести ect подмножества и т. Д.

Надеюсь, кто-то может помочь.

Спасибо за чтение.

Энди

+0

R очень симпатичный для такого рода вещей. Если вы видите, что в будущем делаете больше такого рода вещей, стоит изучить, как его использовать. Если бы я использовал R, я бы взял случайную целую кучу случайных подмножеств группы, причем подмножества варьировались от малого до большого и вычисляли их среднее значение. Затем я нарисую их все на графике среднего/подмножества и посмотрю, сходятся ли они на что угодно. Реализация этого была бы довольно простой в любом реальном языке программирования, но ее трудно было бы сделать в подобных программам. – Oliver

ответ

1

Текст, который вы связаны, является хорошим началом (вы можете также использовать команду SAMPLE в SPSS, но ИМО сценарий Raynald вы связаны с более гибкими, когда вы думаете о построении образца таким образом) ,

В псевдокоде процесс может выглядеть;

do n for sample size (a to b) 
    loop 100 times 
     draw sample size n 
     compute (& save) statistics 

Вот где язык макросов SPSS в игру вступает (я думаю, что this document хорошее введение, а также вы можете изучить другие ссылки на SPSS tag wiki). В принципе, как только вы выясните, как нарисовать образец и вычислить требуемую статистику, вам просто нужно выяснить, как написать макрос, чтобы вы могли выполнить цикл (и передать ему параметр размера выборки). Я включаю цикл 100 раз, потому что вы хотите иметь возможность сделать некоторый тип оценки ошибки, связанной с каждым размером выборки.

Если вы приведёте пример того, как вы вычисляете статистику, я могу привести примеры того, как сделать это в макрофункции и пропустить необходимое количество раз.

0

@Andy W @Oliver

Спасибо за ваши предложения, ребята. Мне удалось найти работу с использованием следующего макроса из ......... http: //www.spsstools.net/Syntax/Bootstrap/GetRandomSampleOfVariousSizeCalcStats.txt Однако для этого мне нужно скопировать и вставить переменную данных для данной группы в новое окно данных. Это не большая проблема.Чтобы принять это дальше, кто-нибудь знает, как: 1/Я мог бы получить другую статистику, например, std error, std dev ect ect. 2/Использовать другой анализ, в идеале, анализ дискриминантных функций и записать в новом окне данных процент правильных классификаций, а не иметь много выходных таблиц 3/не нужно копировать и вставлять переменные для каждой группы, поэтому я могу просто запустить макрос, определяющий n образцы для переменной x в группе 1, 2, 3 & 4.

Еще раз спасибо.

DEFINE !sample(myvar !TOKENS(1) 
     /nbsampl !TOKENS(1) 
     /size !CMDEND). 
* myvar = the variable of interest (here we want the mean of salary) 
* nbsampl = number of samples. 
* size = the size of each samples. 

!LET !first='1' 
!DO !ss !IN (!size) 
!DO !count = 1 !TO !nbsampl. 

GET FILE='c:\Program Files\SPSS\employee data.sav'. 

COMPUTE draw=uniform(1). 
SORT CASES BY draw. 
N OF CASES !ss. 

COMPUTE samplenb=!count. 
COMPUTE ss=!ss. 

AGGREGATE 
    /OUTFILE=* 
    /BREAK=samplenb 
    /!myvar = MEAN(!myvar) /ss=FIRST(ss). 

!IF (!first !NE '1') !THEN 
ADD FILES /FILE=* /FILE='c:\temp\sample.sav'. 
!IFEND 
SAVE OUTFILE='c:\temp\sample.sav'. 
!LET !first='0' 

!DOEND. 
!DOEND. 

VARIABLE LABEL ss 'Sample size'. 
EXAMINE 
    VARIABLES=salary BY ss /PLOT=BOXPLOT/STATISTICS=NONE/NOTOTAL 
    /MISSING=REPORT. 

!ENDDEFINE. 
* ----------------END OF MACRO ----------------------------------------------. 


* Call macro (parameters are number of samples (here 20) and sizes of sample (here 5, 10,15,30,50). 
* Thus 20 samples of size 5. 
* Thus 20 samples of size 10, etc. 
!sample myvar=salary nbsampl=20 size= 5 10 15 30 50. 
+0

У меня нет времени прямо сейчас, чтобы дать конкретные примеры, но если вы посмотрите 'OMS' в разделе справки, он даст примеры сохранения вывода для новых файлов (включая новые .sav-наборы данных). По сути, все, что входит в вывод, можно сохранить в новом наборе данных SPSS. –