To understand this you need to understand how jQuery Mobile works.
Some functionalities can't be used with $(function(){
, because ta this point page is only loaded into the DOM, jQuery Mobile didn't even started to do anything with that page. To remedy this jQM developers have created something called page events.
Basically $.mobile.silentScroll
can only be used during correct page events. But even then you will need to use a settimeout with a slight delay for it to work. Silent Scroll simply wasn't create to be used on a page show.
$(document).on('pageshow', '#index', function(){
setTimeout(function(){
$.mobile.silentScroll(1500);
},100);
});
Working example: http://jsfiddle.net/Gajotres/2xfrM/
In your case page is returning back because page don't have a correct page height during the $(function(){
triggering. Page height is correct only during the pageshow event, but even then you need a slight delay.