Wie erhalte ich den Namen der Spline-Fit-Kurve?Hallo,
Gibt es eine Möglichkeit, den Namen der Spline-Anpassungskurve abzurufen (dh, wenn Sie die Anpassung nach einer bestimmten Spalte gruppieren)?
Ich habe gesucht, und die einzige Möglichkeit, wie ich eine Kurve referenzieren kann, ist die Indexnummer.
Z.B
obj = Bivariate(Y( :Weight ), X( :Height ), Fit Line);
obj << (Curve[1] << Line Width ( 2 ));
Ich dachte, ich könnte mit diesem Code davonkommen, indem ich einfach eine Liste aus der Gruppierungsspalte erstelle.
groupcol=Column(dt, "Group Col Name");
Summarize( A = by( groupcol ) );
B = groupcol << get property( value ordering );
If( Is Empty( B ),
GroupList = A,
GroupList = B
);
Daher würde sich GroupList [1] auf Curve [1] beziehen, GroupList [2] würde sich auf Curve [2] usw. beziehen.
Ich sah jedoch ein Problem damit. Wenn GroupList [2] zu wenige Punkte hat, sodass kein Spline-Fit durchgeführt werden kann, gehört Curve [2] tatsächlich zu GroupList [3]! Also wurde mir klar, dass dies nicht der richtige Weg ist.
Deshalb hier meine Fragen:
1 Angenommen, ich erstelle ein Skript, das mit einer bestimmten Gruppierungsspalte (z. B. eine Spalte, die "Rot", "Blau", "Grün", "Gelb" enthält) Spline-Passform ist, gibt es eine Möglichkeit, das ff zu kennen:
1.1 Wie viele Splines wurden gezogen?
1.2 Welcher Spline-Fit gehört zu welcher Gruppe? (Dh, gehört Kurve [2] zu "Blau" oder "Grün" oder "Gelb")?
Vielen Dank.
Re: Wie erhält man den Namen der Spline-Fit-Kurve?Danke, Jim. Ich habe versucht, es ein wenig zu optimieren, um alle Variablen anzuzeigen und auf die Beispieldaten von Candy Bars.jmp anzuwenden.
Names Default To Here( 1 );
// Read in some sample data
dt = Current Data Table();
// Run the bivariate and create the Fit line for each of the sites
biv = bivariate( y( :Total fat g ), x( :Calories ), Groupby( :Brand ), Fit line );
// The Outline Box for the fit can be read
TheTitle = Report( biv )[Outline Box( 2 )] << get title;
Show( TheTitle );
// Here is a little bit of code that can get the list of values for the Linear Fit, and
// get the curve number
AllTitles = CurveNumber = {};
i = 2;
FitNum = 0;
While( Try( Report( biv )[Outline Box( i )] << get title, "" ) != "",
If(
Word( 1, Report( biv )[Outline Box( i )] << get title ) == "Linear" & Word(
2,
Report( biv )[Outline Box( i )] << get title
) == "Fit",
FitNum = FitNum + 1;
Show (FitNum);
AllTitles[FitNum] = Word( 3, Report( biv )[Outline Box( i )] << get title );
Show (AllTitles[FitNum]);
CurveNumber[FitNum] = FitNum;
Show(CurveNumber[FitNum]);
);
i = i + 1;
);Ich bekomme diese Ausgabe:
/*:
TheTitle = "Linear Fit Brand==\!"Adams & Brooks\!"";
FitNum = 1;
AllTitles[FitNum] = "Brand==\!"Adams";
CurveNumber[FitNum] = 1;
FitNum = 2;
AllTitles[FitNum] = "Brand==\!"Annabelle\!"";
CurveNumber[FitNum] = 2;
FitNum = 3;
AllTitles[FitNum] = "Brand==\!"Bit-O-Honey\!"";
CurveNumber[FitNum] = 3;
FitNum = 4;
AllTitles[FitNum] = "Brand==\!"Brown";
CurveNumber[FitNum] = 4;
FitNum = 5;
AllTitles[FitNum] = "Brand==\!"Charms\!"";
CurveNumber[FitNum] = 5;
FitNum = 6;
AllTitles[FitNum] = "Brand==\!"Hershey\!"";
CurveNumber[FitNum] = 6;
FitNum = 7;
AllTitles[FitNum] = "Brand==\!"Just";
CurveNumber[FitNum] = 7;
FitNum = 8;
AllTitles[FitNum] = "Brand==\!"Leaf\!"";
CurveNumber[FitNum] = 8;
FitNum = 9;
AllTitles[FitNum] = "Brand==\!"M&M/Mars\!"";
CurveNumber[FitNum] = 9;
FitNum = 10;
AllTitles[FitNum] = "Brand==\!"Myerson\!"";
CurveNumber[FitNum] = 10;
FitNum = 11;
AllTitles[FitNum] = "Brand==\!"Nabisco\!"";
CurveNumber[FitNum] = 11;
FitNum = 12;
AllTitles[FitNum] = "Brand==\!"Nestle\!"";
CurveNumber[FitNum] = 12;
FitNum = 13;
AllTitles[FitNum] = "Brand==\!"Pearson\!"";
CurveNumber[FitNum] = 13;
FitNum = 14;
AllTitles[FitNum] = "Brand==\!"Sherwood\!"";
CurveNumber[FitNum] = 14;
FitNum = 15;
AllTitles[FitNum] = "Brand==\!"Standard\!"";
CurveNumber[FitNum] = 15;
FitNum = 16;
AllTitles[FitNum] = "Brand==\!"Tobler\!"";
CurveNumber[FitNum] = 16;
FitNum = 17;
AllTitles[FitNum] = "Brand==\!"Tootsie\!"";
CurveNumber[FitNum] = 17;
FitNum = 18;
AllTitles[FitNum] = "Brand==\!"Weider\!"";
CurveNumber[FitNum] = 18;
Wenn Sie es bemerkt haben, schneidet das Skript den Namen ab, wenn es auf ein Leerzeichen trifft. Z.B "Adams & Brooks" wird zu "Adams", während "Brown & Haley" zu "Brown" wird. Aber ich werde auch versuchen, dies zu optimieren. Außerdem denke ich daran, den Spline-Fit für jede Gruppe als Work-out zu machen. Nochmals vielen Dank für die Hilfe.
Re: Wie erhält man den Namen der Spline-Fit-Kurve?Hier finden Sie eine Möglichkeit, die Kurvennummern zu erhalten, und mit welcher Form sie passen
Names Default To Here( 1 );
// Read in some sample data
dt = Open( "$SAMPLE_DATA\semiconductor capability.jmp" );
// Run the bivariate and create the Fit line for each of the sites
biv = bivariate( y( :npn1 ), x( :pnp1 ), Groupby( :site ), Fit line );
// The Outline Box for the fit can be read
TheTitle = Report( biv )[Outline Box( 2 )] << get title;
Show( TheTitle );
// Here is a little bit of code that can get the list of values for the Linear Fit, and
// get the curve number
AllTitles = CurveNumber = {};
i = 2;
FitNum = 0;
While( Try( Report( biv )[Outline Box( i )] << get title, "" ) != "",
If(
Word( 1, Report( biv )[Outline Box( i )] << get title ) == "Linear" & Word(
2,
Report( biv )[Outline Box( i )] << get title
) == "Fit",
FitNum = FitNum + 1;
AllTitles[FitNum] = Word( 3, Report( biv )[Outline Box( i )] << get title );
CurveNumber[FitNum] = FitNum;
);
i = i + 1;
);