I am not that familiar with built-ins to solve this kind of problem, but you can do it with plain math (and I'm sure someone could tighten this up, just a first pass):
CREATE TABLE #t (PeriodID int PRIMARY KEY, ExpectedIndex int);
INSERT INTO #t VALUES (1, 1),(2, 1),(3, 1),(4, 1),(5, 2),(6, 2),(7, 2),(8, 2),(9, 3),(10, 3),(11, 3),(13, 3);
SELECT ((RowNum - ((RowNum - 1) % 4)) / 4) + 1 AS [Index], ExpectedIndex, PeriodID
FROM (
SELECT ROW_NUMBER() OVER (ORDER BY PeriodID) AS RowNum, ExpectedIndex, PeriodID FROM #t
) AS tSub1
DROP TABLE #t;
EDIT: I was curious, here's a LAG version (again, no doubt not optimized), plus subqueried out just to Show My Work:
SELECT
(RowNum - IncrementalLag) / 4 AS ZeroBasedIndex
,((RowNum - IncrementalLag) / 4) + 1 AS [Index]
,ExpectedIndex
,PeriodID
FROM
(
SELECT
RowNum
,LAG(RowNum,1,0) OVER (ORDER BY RowNum) % 4 AS IncrementalLag
,ExpectedIndex
,PeriodID
FROM (
SELECT ROW_NUMBER() OVER (ORDER BY PeriodID) AS RowNum, ExpectedIndex, PeriodID FROM #t
) AS tSub1
) AS tSub2;