[R] How to create design matrix for LLMNL?

Spencer Graves spencer.graves at pdf.com
Fri Aug 26 06:29:08 CEST 2005


	  I haven't seen a reply to this, so I will attempt a few comments.  If 
you've already received an adequate reply, please excuse my tardy 
comments.

	  1.  It is generally not wise to use the name of a standard S / R 
function for a data.frame.  Please type "df" at a command prompt to see 
what you get.  In this case, this is probably not creating problems for 
you, but it might in other contexts.

	  2.  Did you try the examples in the help file for "createX" in 
library(bayesm)?  If no, I suggest you do so.  If yes, I suggest you 
examine carefully your call to "createX" in comparison with the examples 
and the rest of the documentation.

	  3.  If you still have a question, please submit another post after 
(re)reading posting guide! 
"http://www.R-project.org/posting-guide.html".  You may think you 
already did this.  However, 289 observations in an attached file is not, 
for me at least, a toy example within the spirit of the posting guide. 
That posting guide is not intended to be a burocratic obstacle.  It was 
written to help people get quicker answers to their questions.  When 
followed, I believe it succeeds fairly well.  To me it is roughly like 
the famous book by George Pólya on "How to Solve It", which I also 
highly recommend.

	  Viel Glueck!
	  spencer graves	

Tetyana Stepanchuk wrote:

> Hello, 
> 
>  
> 
> I have a small problem with developing design matrix X, which I use in
> estimation the log-likelihood of a multinomial logit model.
> 
>  
> 
> I have the data: 
> 
>  number of observation - 289
> 
> number of choice alternative- 3
> 
> number of choice specific variables in matrix X -4
> 
> matrix X =289x4
> 
> I tried to use the function createX, I know that I have to get design matrix
> 289x12 (am I right?) but it always says "bad dim" (my code and data in
> attachment)
> 
>  
> 
> Where is my fault? Can I use another method in order to create design
> matrix? 
> 
> Or need it at all here in logmnl (see code in attachment)?
> 
>  
> 
> Can anyone help me with this issue?
> 
>  
> 
> Thanks in advance,
> 
> Tatyana
> 
>  
> 
>  
> 
> 
> 
> ------------------------------------------------------------------------
> 
>>df=read.table("data.dat",header=TRUE)
>>inp=as.matrix(df)
> 
>     Y X1 X2   X3       X4
> 1   1  1  1   65 20999.89
> 2   1  1  2   67  2719.60
> 3   1  1  3  110  3581.09
> 4   1  1  4   64  1731.63
> 5   1  1  5   84  4434.97
> 6   1  6  1   90   691.32
> 7   1  6  2   31   228.50
> 8   1  6  3   33   615.12
> 9   1  6  4   39   910.62
> 10  1  7  1  169  1246.75
> 11  1  7  2  183  1183.03
> 12  1  7  3  203  1345.32
> 13  1  7  4  177  1088.98
> 14  1  7  5  169   896.42
> 15  1  8  1   71  1264.57
> 16  1  8  2   80  1094.40
> 17  1  8  3   75  1715.99
> 18  1  8  4   55   905.37
> 19  1  8  5   67  1448.17
> 20  1 10  1  349  1396.77
> 21  1 10  2  666  2026.89
> 22  1 10  3  480   774.37
> 23  1 10  4  456  1972.15
> 24  1 11  1  500   245.88
> 25  1 11  2  288  2927.77
> 26  1 11  3  211  9221.67
> 27  1 11  4  206  5632.91
> 28  1 11  5  175  1636.62
> 29  1 12  1  107   857.06
> 30  1 12  2   87   789.25
> 31  1 12  3  103   856.27
> 32  1 12  4  377   933.74
> 33  1 12  5  229  1316.31
> 34  1 13  1   32   149.13
> 35  1 13  2   19   153.74
> 36  1 13  3   25   179.60
> 37  1 13  4   28   252.70
> 38  1 13  5   22   294.80
> 39  1 14  1   47  1261.82
> 40  1 14  2   19  2332.21
> 41  1 15  1  348   558.91
> 42  1 15  2  399   550.91
> 43  1 15  3  388   797.68
> 44  1 15  4  208   804.76
> 45  1 15  5  241   673.12
> 46  1 17  1   70   151.06
> 47  1 17  2   96   255.22
> 48  1 17  3  102  1220.30
> 49  1 17  4  128   793.54
> 50  1 18  3   10   134.95
> 51  1 18  4   28   992.30
> 52  1 21  1   85  1170.71
> 53  1 21  2  257   464.95
> 54  1 21  3  353   404.21
> 55  1 21  4  293   517.64
> 56  1 21  5  515  1202.68
> 57  1 22  1   66   372.89
> 58  1 22  2   79   498.70
> 59  1 22  3   47   304.83
> 60  1 22  4   48   430.03
> 61  1 22  5   52   319.86
> 62  1 23  1   14   165.28
> 63  1 23  2   35  2044.52
> 64  1 23  3   20   499.59
> 65  1 24  1   94   107.76
> 66  1 24  2   59    61.64
> 67  1 24  3   47   111.15
> 68  1 24  4   32   100.75
> 69  1 25  1   17   142.34
> 70  1 26  1  144  1105.71
> 71  1 26  2  196  1445.43
> 72  1 26  3  328  2297.11
> 73  1 26  4  517  2143.55
> 74  1 27  1   85  2457.58
> 75  1 27  2   99  1921.27
> 76  1 27  3   65  3380.86
> 77  1 27  4   88  2218.37
> 78  1 27  5  100  1881.00
> 79  1 29  1  107   561.27
> 80  1 29  2   67   557.43
> 81  1 29  3   49   387.71
> 82  1 30  1   77   106.50
> 83  1 30  2  225   267.87
> 84  1 30  3  520   502.18
> 85  1 30  4  552   443.07
> 86  1 30  5  319   255.50
> 87  1 31  1   38  6522.32
> 88  1 31  2   38   632.35
> 89  1 31  3   50  1615.18
> 90  1 31  4   53  1657.59
> 91  1 31  5   25   425.01
> 92  1 32  1   82   681.77
> 93  1 32  2   82   605.14
> 94  1 32  3  117  1068.86
> 95  1 32  4   90   638.95
> 96  1 33  1   53   350.89
> 97  1 33  2   39   378.53
> 98  1 33  3   44   432.31
> 99  1 34  1   61   752.13
> 100 1 34  2   76  1045.36
> 101 1 34  3  107  1344.42
> 102 1 34  4   65  1150.82
> 103 1 34  5   96   973.69
> 104 1 35  1  132   374.06
> 105 1 35  2  124   444.83
> 106 1 35  3   92   142.01
> 107 1 35  4   69   297.77
> 108 1 35  5   62   248.21
> 109 1 36  1  434   374.83
> 110 1 36  2  183   416.23
> 111 1 36  3  386   246.27
> 112 1 36  4  577   527.44
> 113 1 36  5  457   250.67
> 114 1 37  1  118  2306.72
> 115 1 37  2  169  1303.34
> 116 1 37  3  135  1741.13
> 117 1 37  4  103  1073.17
> 118 1 37  5   75  1146.11
> 119 1 40  1   66  1447.20
> 120 1 40  2   97  1352.28
> 121 1 40  3   65  1786.57
> 122 1 40  4   67  1060.59
> 123 1 42  1   26   241.23
> 124 1 42  2   43   334.35
> 125 1 42  3   65   381.51
> 126 1 42  4    9    33.14
> 127 1 43  1   39  1504.44
> 128 1 43  2   33  1144.56
> 129 1 43  3   43   870.53
> 130 1 43  4   43   969.19
> 131 1 43  5   64  1655.93
> 132 1 44  1    2  1555.55
> 133 1 45  1   22    84.39
> 134 1 46  1   46   996.07
> 135 1 46  2   33   777.97
> 136 1 46  3   60   637.64
> 137 1 46  4   42  1178.10
> 138 1 46  5   41  1054.84
> 139 1 47  1   37  1514.12
> 140 1 47  2   57  2132.21
> 141 1 47  3   53  2486.14
> 142 1 47  4   45  1807.57
> 143 1 47  5   45  1125.80
> 144 1 48  1   90   449.87
> 145 1 48  2   12    86.38
> 146 1 48  3   44   159.58
> 147 1 48  4   42   372.35
> 148 1 48  5   58   442.60
> 149 1 49  1   92   645.82
> 150 1 49  2   82   523.96
> 151 1 49  3  132   833.91
> 152 1 49  4  125   490.37
> 153 1 49  5   89   454.82
> 154 1 50  1   30   105.94
> 155 1 50  2   29    39.18
> 156 1 50  3   80    16.13
> 157 1 50  4  185   106.54
> 158 1 51  1   95   937.76
> 159 1 51  2   34  1212.81
> 160 1 51  3   42  1254.46
> 161 1 51  4   35   644.77
> 162 1 51  5   36   426.90
> 163 1 52  1   42   138.73
> 164 1 54  1  210  1841.15
> 165 1 56  1   29   191.12
> 166 1 56  2   56   640.55
> 167 1 56  3   62   562.07
> 168 1 56  4   47   290.71
> 169 1 56  5   34   314.87
> 170 1 57  1   23   478.82
> 171 1 59  1   89   812.66
> 172 1 59  2   59   797.46
> 173 1 59  3   45   769.12
> 174 1 59  4   36   609.01
> 175 1 59  5   49   734.39
> 176 1 60  1   18   162.35
> 177 1 60  2   31   273.38
> 178 1 60  3   43   293.07
> 179 1 60  4   32   532.20
> 180 1 60  5   47   343.64
> 181 1 61  1   88  1193.72
> 182 1 61  2   25   680.30
> 183 1 61  3   55   734.33
> 184 1 61  4  146  1309.36
> 185 1 61  5  130   530.16
> 186 1 62  1   66   284.50
> 187 1 62  2   30   278.39
> 188 1 62  3   26   160.81
> 189 1 64  1  234  1257.18
> 190 1 64  2  133   752.41
> 191 1 64  3  141   476.03
> 192 1 64  4  202   836.94
> 193 1 64  5  122  1979.26
> 194 1 67  1   34   153.57
> 195 1 67  2   26    83.32
> 196 1 67  3   32   238.91
> 197 1 67  4   65   348.97
> 198 1 67  5   38   199.38
> 199 1 69  1   43   266.88
> 200 1 69  2   53  1497.83
> 201 1 69  3   48  2115.32
> 202 1 69  4   46  1323.33
> 203 1 69  5   72  2097.16
> 204 1 70  1  401    87.66
> 205 1 70  2  177    80.05
> 206 1 70  3   81   105.75
> 207 1 70  4   43    50.32
> 208 1 70  5   23    55.21
> 209 3 38  1   40 17345.50
> 210 3 38  2   37 19927.04
> 211 3 38  3   42   742.45
> 212 3 53  1  181 14189.78
> 213 3 53  2   75 15132.94
> 214 3 53  3   91 14927.05
> 215 3 55  1  239 40056.22
> 216 3 55  2  798 11436.61
> 217 3 55  3  284  3031.93
> 218 3 55  4   37  1162.11
> 219 3 55  5   58  6458.99
> 220 3 65  1   41  2928.30
> 221 3 65  2   45  2447.31
> 222 3 65  3   46  2504.06
> 223 3 65  4   41  2865.30
> 224 3 65  5   41  5404.57
> 225 3 71  1   56 17897.50
> 226 2  2  1   68  2481.72
> 227 2  3  1  168  1794.23
> 228 2  3  2  164  2401.75
> 229 2  3  3  139  2229.82
> 230 2  3  4  152  2865.10
> 231 2  3  5  135  3157.92
> 232 2  4  1   37  1990.07
> 233 2  4  2   33  4441.53
> 234 2  4  3   38  2972.56
> 235 2  4  4   38  3050.71
> 236 2  4  5   27  2326.24
> 237 2  5  1  133  6481.32
> 238 2  5  2   36  2064.21
> 239 2  5  3  165  5431.46
> 240 2  5  4  131  5632.18
> 241 2  5  5   65  4805.79
> 242 2  9  1   58   295.27
> 243 2  9  2  118  4501.84
> 244 2  9  3  128   438.22
> 245 2 16  1  281  1194.92
> 246 2 16  2  227  1344.28
> 247 2 16  3  237  1027.02
> 248 2 16  4  265  1113.11
> 249 2 16  5  143  1080.23
> 250 2 18  1   34  3465.32
> 251 2 18  2   31  1879.28
> 252 2 19  1  126  1125.53
> 253 2 19  2   96  3269.87
> 254 2 20  1   42  4572.29
> 255 2 20  2   56  4020.63
> 256 2 20  3   53    94.82
> 257 2 20  4   69  2959.03
> 258 2 20  5   62  1145.52
> 259 2 28  1  106   877.37
> 260 2 28  2  139  1495.15
> 261 2 28  3  278  1170.82
> 262 2 28  4   52  3838.59
> 263 2 39  1  165  6277.17
> 264 2 39  2  117  1565.52
> 265 2 39  3   91  3096.30
> 266 2 39  4   93  2038.49
> 267 2 41  1  151  3657.07
> 268 2 41  2  169  4371.29
> 269 2 41  3  171  3543.19
> 270 2 41  4   82  2762.35
> 271 2 41  5   59  5054.83
> 272 2 58  1   96  6062.83
> 273 2 58  2   53  3730.32
> 274 2 58  3   24  1044.85
> 275 2 58  4    4  1000.44
> 276 2 58  5    0  1144.44
> 277 2 63  1  130   145.73
> 278 2 63  2   82   264.27
> 279 2 63  3  115   219.01
> 280 2 63  4  158   199.87
> 281 2 63  5  115   286.83
> 282 2 66  1  218  7964.96
> 283 2 66  2  198  4512.50
> 284 2 66  3  169  4954.49
> 285 2 68  1 3025  1494.90
> 286 2 68  2 3333  1355.09
> 287 2 68  3 3969  1848.35
> 288 2 68  4 3059  1506.72
> 289 2 68  5 4557  2339.48
> 
>>y=as.numeric(inp[,1])
>>Xa=matrix(inp[,2:5],byrow=TRUE,ncol=3)
> 
> Xa=cbind(Xa,-Xa)
> 
>>X=createX(p=nsize,na=nxvar,Xa=Xa,nd=NULL,Xd=NULL,INT=TRUE)
> 
> Fehler: bad Xa dim, dim= 386bad Xa dim, dim= 6
> 
> 
> 
> 
> 
> ------------------------------------------------------------------------
> 
> logmnl<- function(X,y,nsize,nxvar,nhh,beta){
> #Function evaluates the log-likelihood of multinimial logit model
> #X is of dimension X(nsize,nxvar,nhh) and y(nsize,nhh)
> # nsize=number of alternatives
> # nxvar=number of x variables
> # nhh=number of observations
> df=read.table("TS_3part.dat",header=TRUE)
> inp=as.matrix(df)
> y=as.numeric(inp[,1])
> + nsize=3
> + nxvar=4
> + nhh=length(y)
> X=createX(p=p,na=1,Xa=data[,3:8],nd=NULL,Xd=NULL,INT=TRUE,base=1)
> + xp<-array(0,dim=c(nsize))
> + logprob<-0
> + for(i in 1:nhh)
> + {
> + for(j in 1:nsize)
> + {
> + xp[j]<-exp(t(X[j,,i]) %*% beta)
> + }
> + denom=sum(xp)
> + for(j in 1:nsize)
> + {
> + if(y[j,i]==1) prob=xp[j]/denom
> + }
> + logprob=logprob+log(prob)
> + }
> + logprob
> + }
> 
> 
> ------------------------------------------------------------------------
> 
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html

-- 
Spencer Graves, PhD
Senior Development Engineer
PDF Solutions, Inc.
333 West San Carlos Street Suite 700
San Jose, CA 95110, USA

spencer.graves at pdf.com
www.pdf.com <http://www.pdf.com>
Tel:  408-938-4420
Fax: 408-280-7915




More information about the R-help mailing list