Случайным образом выберите увеличивающееся подмножество данных, чтобы увидеть, где среднее выравнивается

Может ли кто-нибудь посоветовать, как лучше всего сделать следующее?

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

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

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

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

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

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

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

Энди


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


Ответы (2)


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

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

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

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

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

person Andy W    schedule 04.08.2011

@Энди В @Оливер

Спасибо за ваши предложения, ребята. Мне удалось найти обходной путь, используя следующий макрос из ...........http://www.spsstools.net/Syntax/Bootstrap/GetRandomSampleOfVariousSizeCalcStats.txt Однако для этого мне нужно скопировать и вставить переменную данные для данной группы в новое окно данных. Это не большая проблема. Чтобы сделать это дальше, кто-нибудь знает, как: 1/ Я мог бы записать другую статистику, например, стандартную ошибку, стандартное устройство и т. Д. 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.
person ASHHart    schedule 05.08.2011
comment
У меня сейчас нет времени приводить конкретные примеры, но если вы посмотрите OMS в разделе справки, там будут приведены примеры сохранения выходных данных в новые файлы (включая новые наборы данных .sav). По сути, все, что входит в выходные данные, может быть сохранено в новом наборе данных SPSS. - person Andy W; 05.08.2011