Dear Tony,

Thank you for pointing this out. Worked like a charm and the distance were 
calculated just fine.

Thanks,
Don

On Wednesday, July 2, 2014 9:46:06 PM UTC-4, Tony Kelman wrote:
>
> If you know all of the data in the csv file is numerical, you can provide 
> a result type to readcsv, say readcsv("ct_coord.csv", Float64). See 
> help(readdlm) for additional options for things like removing header rows, 
> etc. If the data is of mixed types, then you may find readtable in the 
> DataFrames package more capable.
>
>
> On Wednesday, July 2, 2014 5:05:21 PM UTC-7, Donald Lacombe wrote:
>>
>> Actually, another issue with the type information.
>>
>> Instead of using random coordinates, I used actual latitude and longitude 
>> coordinates from a CSV file like so:
>>
>> data = readcsv("ct_coord.csv");
>>
>> temp = [xc';yc']
>>
>> 2x8 Array{Any,2}:
>>
>>  -73.3712  -72.1065  -73.2453  -71.9876  …  -72.7328  -72.5231  -72.8999
>>
>>   41.225    41.4667   41.7925   41.83        41.8064   41.4354   41.3488
>>
>>
>> Now, the type here is {Any,2} and this seems to be giving the Distance 
>> package problems:
>>
>>
>>
>> R = pairwise(Euclidean(),temp)
>>
>> MethodError(fptype,(Any,))
>>
>>
>> Julia seems to be unhappy with this type but I'm not sure how to correct 
>> this which would seem to require that the data being read in are of Float 
>> type.
>>
>>
>> Again, thank you for all of the help.
>>
>>
>> Don
>>
>>
>>
>> On Wednesday, July 2, 2014 7:10:09 PM UTC-4, Donald Lacombe wrote:
>>>
>>> Patrick,
>>>
>>> Thank you for the reply! I will try your suggestion and hopefully get a 
>>> better grasp of these issues.
>>>
>>> Thank you all gain for all of the help. It cannot be stressed enough 
>>> that the friendly and truly helpful comments will help the Julia community 
>>> grow.
>>>
>>> Don
>>>
>>> On Wednesday, July 2, 2014 5:31:55 PM UTC-4, Patrick O'Leary wrote:
>>>>
>>>> The second parameter to the Array type is the number of dimensions of 
>>>> the array. "Row vectors" are implemented with 2-dimensional arrays 
>>>> (a.k.a., 
>>>> "matrices"), since Vectors (a.k.a. Array{T, 1} for all types T) are 
>>>> interpreted as columns.
>>>>
>>>> Since pairwise() generates all of the distances simultaneously, you'll 
>>>> need to slice its results to use it in sortperm(), following your original 
>>>> loop implementation. Each slice will need to be a Vector. If you slice 
>>>> columns, you get Vector slices for free. If you slice rows, the shape will 
>>>> be maintained, so you get a row back. You can flatten this to a Vector 
>>>> with 
>>>> the vec() function.
>>>>
>>>> Hope this helps!
>>>>
>>>> On Wednesday, July 2, 2014 4:23:52 PM UTC-5, Donald Lacombe wrote:
>>>>>
>>>>> After thinking about this issue, another couple of question came to 
>>>>> mind.
>>>>>
>>>>> When I create a row vector, say xc = randn(1,5), the results indicate 
>>>>> that the vector is e.g.
>>>>>
>>>>> xc = rand(1,5)
>>>>>
>>>>> 1x5 Array{Float64,2}:
>>>>>
>>>>>  0.989421  0.718148  0.499914  0.13024  0.939856
>>>>>
>>>>>
>>>>> The type is {Float64,2}.
>>>>>
>>>>>
>>>>> Questions:
>>>>>
>>>>>
>>>>> 1) What does the "2" mean in {Float64,2}? If I create xc = rand(5) the 
>>>>> type is {Float64,1}.
>>>>>
>>>>>
>>>>> 2) The sortperm function only seems to accept {Float64,1} types. The 
>>>>> Euclidean distance code create types of {Float64,2} but I need 
>>>>> {Float64,1} for the sortperm function. Do I need to convert these before 
>>>>> using this command?
>>>>>
>>>>>
>>>>> I'm probably missing something really basic so apologies for the query.
>>>>>
>>>>>
>>>>> Thanks,
>>>>>
>>>>> Don
>>>>>
>>>>>
>>>>> On Wednesday, July 2, 2014 4:20:55 PM UTC-4, Donald Lacombe wrote:
>>>>>>
>>>>>> Greetings, part 2...
>>>>>>
>>>>>> After doing some tests, I found that this code works just fine:
>>>>>>
>>>>>> julia> using Distance
>>>>>>
>>>>>> Warning: could not import Base.foldl into NumericExtensions
>>>>>>
>>>>>> Warning: could not import Base.foldr into NumericExtensions
>>>>>>
>>>>>> Warning: could not import Base.sum! into NumericExtensions
>>>>>>
>>>>>> Warning: could not import Base.maximum! into NumericExtensions
>>>>>>
>>>>>> Warning: could not import Base.minimum! into NumericExtensions
>>>>>>
>>>>>>
>>>>>>
>>>>>> julia> xc = rand(8)'
>>>>>>
>>>>>> 1x8 Array{Float64,2}:
>>>>>>
>>>>>>  0.30107  0.479169  0.230607  0.65126  0.386921  0.455316  0.921496  
>>>>>> 0.244873
>>>>>>
>>>>>>
>>>>>> julia> yc = rand(8)'
>>>>>>
>>>>>> 1x8 Array{Float64,2}:
>>>>>>
>>>>>>  0.866199  0.767794  0.76163  0.262925  …  0.742765  0.980952  0.424966
>>>>>>
>>>>>>
>>>>>> julia> temp = [xc ; yc]
>>>>>>
>>>>>> 2x8 Array{Float64,2}:
>>>>>>
>>>>>>  0.30107   0.479169  0.230607  0.65126   …  0.455316  0.921496  0.244873
>>>>>>
>>>>>>  0.866199  0.767794  0.76163   0.262925     0.742765  0.980952  0.424966
>>>>>>
>>>>>>
>>>>>> julia> R = pairwise(Euclidean(),temp)
>>>>>>
>>>>>> 8x8 Array{Float64,2}:
>>>>>>
>>>>>>  0.0       0.203477   0.126094  0.697548  …  0.197554   0.630949  
>>>>>> 0.444797
>>>>>>
>>>>>>  0.203477  0.0        0.248638  0.533393     0.0345751  0.491009  
>>>>>> 0.415241
>>>>>>
>>>>>>  0.126094  0.248638   0.0       0.652423     0.225499   0.724865  
>>>>>> 0.336966
>>>>>>
>>>>>>  0.697548  0.533393   0.652423  0.0          0.518306   0.767196  
>>>>>> 0.437502
>>>>>>
>>>>>>  0.376201  0.283308   0.304834  0.355027     0.252287   0.719136  
>>>>>> 0.160613
>>>>>>
>>>>>>  0.197554  0.0345751  0.225499  0.518306  …  0.0        0.523505  
>>>>>> 0.381159
>>>>>>
>>>>>>  0.630949  0.491009   0.724865  0.767196     0.523505   0.0       
>>>>>> 0.87575 
>>>>>>
>>>>>>  0.444797  0.415241   0.336966  0.437502     0.381159   0.87575   0.0    
>>>>>>  
>>>>>>
>>>>>>
>>>>>> As expected, the diagonal elements are 0 and everything seems to work 
>>>>>> fine although I did not test other distance formulas.
>>>>>>
>>>>>> I'm posing this so others can see the results and possibly make use 
>>>>>> of this themselves.
>>>>>>
>>>>>> Is there a central repository for user submitted solutions or 
>>>>>> examples? If so I'd like to post this so others can see or alternatively 
>>>>>> someone else is free to use this (and the original code I posted) for 
>>>>>> future reference.
>>>>>>
>>>>>> Thank you all again for your help! I'm going to be coding some models 
>>>>>> this summer and will probably be back to bug everyone again.
>>>>>>
>>>>>> Thanks,
>>>>>> Don
>>>>>>
>>>>>> On Wednesday, July 2, 2014 10:22:58 AM UTC-4, Donald Lacombe wrote:
>>>>>>>
>>>>>>> Greetings!
>>>>>>>
>>>>>>> I am a new Julia user and have the following issue. I am writing 
>>>>>>> code to calculate a knn spatial weight matrix to estimate a spatial 
>>>>>>> econometric model. Using the MATLAB code from Jim LeSage's Econometrics 
>>>>>>> Toolbox, I converted that code into Julia as follows:
>>>>>>>
>>>>>>> xc = rand(8);
>>>>>>>
>>>>>>> yc = rand(8);
>>>>>>>
>>>>>>> n = length(xc);
>>>>>>>
>>>>>>> k = 2;
>>>>>>>
>>>>>>> distance = zeros(n);
>>>>>>>
>>>>>>> nnlist = zeros(n,k);
>>>>>>>
>>>>>>> tempw = zeros(n,n);
>>>>>>>
>>>>>>>
>>>>>>> for i=1:n;
>>>>>>>
>>>>>>>     xi = xc[i,1];
>>>>>>>
>>>>>>>     yi = yc[i,1];
>>>>>>>
>>>>>>>     distance = (xc - xi*ones(n)).^2 + (yc - yi*ones(n)).^2
>>>>>>>
>>>>>>>     temp = sortperm(distance)
>>>>>>>
>>>>>>>     nnlist[i,1:k] = temp[2:k+1,1]';
>>>>>>>
>>>>>>> end
>>>>>>>
>>>>>>>
>>>>>>> for i=1:n
>>>>>>>
>>>>>>> tempw[i,nnlist[i,:]] = 1;
>>>>>>>
>>>>>>> end
>>>>>>>
>>>>>>>
>>>>>>> W = tempw/k;
>>>>>>>
>>>>>>>
>>>>>>> This is a "toy" example and I was wondering if I can use the Distance 
>>>>>>> package to simplify the distance = (xc - xi*ones(n)).^2 + (yc - 
>>>>>>> yi*ones(n)).^2 formula. I tried using the pairwise option like so:
>>>>>>>
>>>>>>>
>>>>>>> R = pairwise(Euclidean(),xc,yc) but received the following message:
>>>>>>>
>>>>>>>
>>>>>>> R = pairwise(Euclidean(),xc,yc)
>>>>>>>
>>>>>>> MethodError(pairwise,(Euclidean(),[0.05961066617957589,0.018538084399339905,0.39282193332224646,0.7006919213133509,0.5099836895629475,0.8448415935222402,0.2985674570217043,0.8022287058003177],[0.5808687231553928,0.9655167324458858,0.026306556019434435,0.6565373244339141,0.11927452074471412,0.11873635450496622,0.6271632933770979,0.7081439899673692]))
>>>>>>>
>>>>>>> I'd like to be able to utilize the Distance package but am a bit 
>>>>>>> stumped. The code as written works but it's bugging me that I cannot 
>>>>>>> seem to get the above command to work. I also get the following error 
>>>>>>> when loading Distance:
>>>>>>>
>>>>>>>
>>>>>>> using Distance
>>>>>>>
>>>>>>> Warning: could not import Base.foldl into NumericExtensions
>>>>>>>
>>>>>>> Warning: could not import Base.foldr into NumericExtensions
>>>>>>>
>>>>>>> Warning: could not import Base.sum! into NumericExtensions
>>>>>>>
>>>>>>> Warning: could not import Base.maximum! into NumericExtensions
>>>>>>>
>>>>>>> Warning: could not import Base.minimum! into NumericExtensions
>>>>>>>
>>>>>>>
>>>>>>> If there is anyone who can address this I'd greatly appreciate it. 
>>>>>>> Incidentally, the help on this group is one reason I am making the 
>>>>>>> change.
>>>>>>>
>>>>>>>
>>>>>>> Don
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>

Reply via email to