Desktop User Guides > Professional > Data management scripting > Working with the Weight component > Weight component examples > Rim weighting example
Rim weighting example
In the target weighting examples in the previous topics, we have known the targets for each cell in the weighting matrix. You use rim weighting (see Rim weighting when you do not have this information. For example, when you want to base your weighting on the following information:
A 50:50 balance of male and female respondents (gender variable).
A 75:25 balance of respondents who live in this country and those who do not live in this country (resident variable)
Targets for the various age groups as shown in the following table (age variable).
Age group
11-16 years
17-20 years
21-24 years
25-34 years
35-44 years
45-54 years
55-64 years
65+ years
Here is the mrScriptBasic code to set up the weighting in a variable, Weight, that must already exist. If you run the example when this variable does not exist, an error occurs. (For an example that creates this variable, see Creating a new variable to hold the weighting information.)
' This script weights the files created by Weight1a.mrs
' and Weight1b.mrs

Dim MDM2, WgtEng, Wgt, fso, ReptFile

' Create the MDM object
Set MDM2 = CreateObject("MDM.Document")

' Open the .mdd file created by Weight1a.mrs MDM2.Open("C:\Program Files\IBM\SPSS\DataCollection\7\DDL\

' Create an instance of the Weight Engine object
Set WgtEng = CreateObject("mrWeight.WeightEngine")


Set Wgt = WgtEng.CreateWeight("Weight", "gender, age,
   resident", 3)

Set fso = CreateObject("Scripting.FileSystemObject")
Set ReptFile = fso.CreateTextFile("C:\Program Files\IBM\SPSS\
   DataCollection\7\DDL\Output\Weight5.htm", True)

Wgt.Rims["gender"].Targets = "50; 50"
Wgt.Rims["age"].Targets = "50; 100; 100; 200; 100; 50; 30; 15"
Wgt.Rims["resident"].RimElements[0].Target = "75"
Wgt.Rims["resident"].RimElements[1].Target = "25"
Wgt.Rims["resident"].RimElements[2].Target = "0"

Wgt.TotalType = 2

' Close the database connection and flush pending data updates
Set WgtEng = Null MDM2.Close()
In the line Set Wgt = WgtEng.CreateWeight("Weight", "gender, age, resident", 3), 3 defines the weighting method as rim weighting.
The line Wgt.TotalType = 2 specifies that the weighted total should be based on the unweighted total. If we had not included this line, the weighted total would have been set to 100, which is the sum of the targets defined for the first variable specified (gender).
Here is a table of resident by gender run on the Museum example data weighted using the weight variable:
This graphic is described in the surrounding text.
There are some options that are specific to rim weighting. For example, by default, the weighting report (see Weighting report) shows the weights that are calculated by the final iteration of the rim weighting algorithm. However, you can make it report the weights that are calculated by each iteration by including the following line in your script:
Wgt.RimReportInDetail = True
This example is in the UNICOM Intelligence Developer Documentation Library as a sample script called Weight5.mrs. For more information, see Sample mrScriptBasic files.
UNICOM Intelligence Professional
Weight component examples