Instantiating UI Prefab - Error: Setting parent of a transform which resides in a prefab is disabled. What's wrong with my code?

I’ve searched and read docs to no avail. I’m using Unity 4.6.2f1.

The Boss prefab is instantiated from another script; in its start method, it instantiates the BossHealth prefab (a UI Text element).

I know that the BossHealth prefab (being a UI element) should be instantiated as a child of a canvas and I attempt to make that happen in BossHealth’s start method. I have a canvas in the scene named Canvas.

In the Inspector, I’ve set the public GameObject references (they’re notated here in my code for clarity).

The script attached to the Boss prefab:

using UnityEngine;
using System.Collections;

public class Boss : MonoBehaviour {

	public int bossHealth;
	public GameObject bossHealthUI;  // Set in the Inspector. Showing as "BossHealth"

	void Start () {

		bossHealth = 5;
		Instantiate (bossHealthUI);
	}
}

The script attached to the BossHealth prefab:

using UnityEngine;
using UnityEngine.UI;
using System.Collections;

public class BossHealth : MonoBehaviour {

	public Transform canvas;  // Set in the Inspector. Showing as "Canvas (Rect Transform)"

	private Boss boss;
	private Text text;

	void Start () {

        // This line is likely the cause of the error. Why?
		transform.SetParent (canvas, false);

		boss = GameObject.FindGameObjectWithTag ("Boss").GetComponent <Boss> ();
		text = GetComponent <Text> ();
	}
	
	void Update () {

		text.text = "Boss Health: " + boss.bossHealth;
	}
}

GameObject convasGo = (Instantiate(panel, transform.position, transform.rotation, this.gameObject.transform) as GameObject);