turn on suggestions

Auto-suggest helps you quickly narrow down your search results by suggesting possible matches as you type.

Showing results for

Find a Community

- Home
- /
- Analytics
- /
- Stat Procs
- /
- How can I use the option partial using proc fmm?

Topic Options

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page

- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content

05-16-2016 01:15 PM - edited 05-16-2016 01:17 PM

I want to estimate a univariate Gaussian mixture model with two components using proc fmm in SAS 9.3. I tried to give some hints by means of the option partial. I have already checked the following post http://blogs.sas.com/content/iml/2011/10/21/the-power-of-finite-mixture-models.html. But in my case, SAS seems to ignore my hint. I assigned two extreme observations to different groups. But after running the procedure they are in the same cluster shown by the created variable "Predicted Component".

My code is the following:

```
* Giving a hint
data lib.ex;
set ex;
Note = . ;
if ... then Note=2;
if ... then Note=1;
run;
* Implementing the hint
proc fmm data=lib.ex partial=Note;
model lny = / k=2;
output out=lib.ex_n class=comp;
run;
```

I don't get any error messages in my log file.

Thanks in advance.

- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content

05-16-2016 01:36 PM - edited 05-16-2016 01:39 PM

Try

```
proc fmm data=lib.ex partial=Note;
CLASS Note;
model lny = / k=2;
run;
```

As shown in the blog post, small data sets might lead to this problem, especially if the component centers are close to each other. How many observations do you think you have in each component? How far apart are the centers of the components in terms of the largest standard deviation?

You can also try specifying initial guesses for the parameters. For example, if you think the first component is N(0,1) and the second is N(2, 3) then you can specify

PARMS(0 1, 2 3);

- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content

05-17-2016 11:33 AM

Thanks for your answer.

I have a really huge data set and therefore enough observations in each component. The differences between the centers are quite large, I think around 5 times the largest standard deviation.

- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content

05-16-2016 05:42 PM

partial= option mostly serves to label mixture components, because the procedure cannot assume that assigned observations are representative of their component.

Try using model statement options / kmin=2 equate=scale; Together with the parms() option these should bring you close to the desired components.

PG

- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content

05-17-2016 11:38 AM

But how can I label mixture components, if the partial option is somehow ignored and the predicted components aren't coincident with my given component membership?

Thanks for your help.