Das Skript analysiert die Filmbewertungen von Siskel und Ebert. Zunächst werden die Daten erstellt und formatiert. Anschließend wird eine einfache Konkordananalyse mit PROC FREQ durchgeführt, um Cohens Kappa zu erhalten. Im zweiten Schritt werden die Daten mit PROC IML transformiert, um sie in PROC NLMIXED zu verwenden, das Kappa durch ein benutzerdefiniertes Likelihood-Modell schätzt. Die Ergebnisse beider NLMIXED-Ansätze (über die ESTIMATE-Anweisung und durch manuelle Transformation des Parameters) werden anschließend angezeigt und verglichen.
Datenanalyse
Type : CREATION_INTERNE
Der Hauptdatensatz 'movie_ratings' wird direkt im Code mit einer 'datalines'-Anweisung erstellt. Die folgenden Datensätze werden von dieser initialen Tabelle abgeleitet.
1 Codeblock
DATA STEP Data
Erklärung : Dieser Block erstellt den Datensatz 'movie_ratings'. Er liest 3 Spalten (x1-x3) und transformiert die Tabellenstruktur, um ein langes Format zu erhalten, bei dem jede Zeile eine Siskel/Ebert-Bewertungskombination mit einem Gewicht 'w' darstellt.
Erklärung : Definiert ein benutzerdefiniertes Format 'abc', um die numerischen Bewertungswerte (1, 2, 3) in Textbezeichnungen ('Con', 'Mixed', 'Pro') umzuwandeln.
Erklärung : Verwendet PROC FREQ, um eine Kontingenztafel zwischen den Bewertungen von Siskel und Ebert zu erstellen. Die Option '/agree' fordert die Berechnung von Konkordanzstatistiken an, einschließlich des Kappa-Koeffizienten. Die Variable 'w' wird als Gewicht verwendet.
Kopiert!
ods html;
title1 "Siskel's and Ebert's Movie Ratings -- Agresti and Winner (1997)";
title2 "Kappa Results using PROC FREQ";
proc freq data=movie_ratings;
tables Siskel * Ebert / agree;
weight w;
format Siskel Ebert abc.;
run;
ods graphics off;
ods html close;
1
ods html;
2
title1 "Siskel's and Ebert's Movie Ratings -- Agresti and Winner (1997)";
3
title2 "Kappa Results using PROC FREQ";
4
PROC FREQDATA=movie_ratings;
5
tables Siskel * Ebert / agree;
6
weight w;
7
FORMAT Siskel Ebert abc.;
8
RUN;
9
ods graphics off;
10
ods html close;
4 Codeblock
PROC IML Data
Erklärung : Dieser PROC IML-Block liest die Daten und transformiert sie in eine Matrix 't' für die Modellierung mit NLMIXED. Er bereitet die Daten vor, um die gemeinsame Verteilung der Bewertungen zu modellieren. Das Ergebnis wird in der Tabelle 'new' gespeichert.
Kopiert!
ods html;
ods graphics on;
proc iml;
use movie_ratings;
read all into x;
n0 = nrow(x);
n1 = sum(x[,3]);
t1 = j(n1,3,0);
t2 = j(n1,3,0);
row = 0;
do j=1 to n0;
do t=1 to x[j,3];
row = row + 1;
t1[row,x[j,1]] = 1;
t2[row,x[j,2]] = 1;
end;
end;
t = t1 + t2;
create new var{t1 t2 t3};
append from t;
quit;
1
ods html;
2
ods graphics on;
3
PROC IML;
4
use movie_ratings;
5
read all into x;
6
7
n0 = nrow(x);
8
n1 = sum(x[,3]);
9
t1 = j(n1,3,0);
10
t2 = j(n1,3,0);
11
12
row = 0;
13
DO j=1 to n0;
14
DO t=1 to x[j,3];
15
row = row + 1;
16
t1[row,x[j,1]] = 1;
17
t2[row,x[j,2]] = 1;
18
END;
19
END;
20
21
t = t1 + t2;
22
create new var{t1 t2 t3};
23
append from t;
24
QUIT;
5 Codeblock
PROC NLMIXED Data
Erklärung : Passt ein nichtlineares Modell unter Verwendung einer allgemeinen Log-Likelihood-Funktion (loglik) an, um die Modellparameter zu schätzen, einschließlich 'a0', das mit Kappa zusammenhängt. Die 'estimate'-Anweisung berechnet Kappa und sein Konfidenzintervall direkt. Die Ergebnisse werden in den Tabellen 'Parms_Estimates' und 'Estimates' gespeichert.
Erklärung : Diese beiden Datenschritte ändern die Ergebnistabellen von PROC NLMIXED. Der erste benennt lediglich eine Spalte um. Der zweite wendet eine inverse Transformation auf den Parameter 'a0' und seine Konfidenzgrenzen an, um Kappa manuell zu berechnen.
Erklärung : Zeigt die beiden finalen Tabellen an, die die Kappa-Schätzungen enthalten, die mit den beiden Berechnungsmethoden aus PROC NLMIXED erhalten wurden.
Kopiert!
title2 "Kappa Results using the Estimate Statement in NLMIXED";
proc print data=Estimates noobs;
run;
title2 "Kappa Results using the Inverse Method in NLMIXED";
proc print data=Parms_Estimates noobs;
run;
ods html close;
1
title2 "Kappa Results using the Estimate Statement in NLMIXED";
2
PROC PRINTDATA=Estimates noobs;
3
RUN;
4
5
title2 "Kappa Results using the Inverse Method in NLMIXED";
6
PROC PRINTDATA=Parms_Estimates noobs;
7
RUN;
8
ods html close;
Dieses Material wird von We Are Cas "wie besehen" zur Verfügung gestellt. Es gibt keine ausdrücklichen oder stillschweigenden Garantien hinsichtlich der Marktgängigkeit oder Eignung für einen bestimmten Zweck in Bezug auf die hierin enthaltenen Materialien oder Codes. We Are Cas ist nicht verantwortlich für Fehler in diesem Material, wie es jetzt existiert oder existieren wird, noch bietet We Are Cas technischen Support dafür an.
SAS und alle anderen Produkt- oder Dienstleistungsnamen von SAS Institute Inc. sind eingetragene Marken oder Marken von SAS Institute Inc. in den USA und anderen Ländern. ® zeigt die Registrierung in den USA an. WeAreCAS ist eine unabhängige Community-Site und nicht mit SAS Institute Inc. verbunden.
Diese Website verwendet technische und analytische Cookies, um Ihre Erfahrung zu verbessern.
Mehr erfahren.