এসইএম মডেলিংয়ে সহায়তা (ওপেনএমএক্স, পলিকর)


10

আমি ডেটা সেট করে যা SEM প্রয়োগ করার চেষ্টা করছি তাতে আমার প্রচুর সমস্যা আছে।

আমরা ধরে নিই যে সূচকগুলি সহ 5 টি সুপ্ত কারণের A, B, C, D, E এর অস্তিত্ব রয়েছে। এ 1 থেকে এ 5 (অর্ডারযুক্ত ফ্যাক্টর), বি 1 থেকে বি 3 (পরিমাণগত), সি 1, ডি 1, ই 1 (সব শেষ তিনটি অর্ডারযুক্ত কারণ, ই 1 এর মাত্র 2 মাত্রা রয়েছে। আমরা সমস্ত কারণগুলির মধ্যে সমবায়নে আগ্রহী।

আমি এটি করার জন্য ব্যবহার OpenMxকরার চেষ্টা করেছি। এখানে আমার কয়েকটি প্রচেষ্টা রয়েছে:

  • আমি প্রথমে সমস্ত আদেশযুক্ত ফ্যাক্টরের জন্য থ্রেশহোল্ড ম্যাট্রিক ব্যবহার করার চেষ্টা করেছি, তবে রূপান্তরটি ব্যর্থ হয়েছে।

  • hetcorলাইব্রেরি থেকে ফাংশনটি নিয়ে polycor(আমি আত্মবিশ্বাসের ব্যবধান পেতে নমুনাটি বুটস্ট্র্যাপ করার পরিকল্পনা নিয়েছিলাম) কাঁচা ডেটার পরিবর্তে পলিচোরিক / পলিসিরিয়াল পারস্পরিক সম্পর্ক ব্যবহার করার সিদ্ধান্ত নিয়েছি । এটি রূপান্তর করতে ব্যর্থ!

  • আমি সম্পূর্ণ ডেটা সহ ব্যক্তিদের মধ্যে সীমাবদ্ধ করার চেষ্টা করেছি, এটিও ব্যর্থ হয়!

আমার প্রথম প্রশ্নটি: এই ব্যর্থতাগুলি ব্যাখ্যা করার কোনও প্রাকৃতিক উপায় আছে?

আমার দ্বিতীয় প্রশ্নটি: আমার কী করা উচিত ???

সম্পাদনা করুন: ভবিষ্যতের পাঠকদের জন্য যারা একই সমস্যাটির মুখোমুখি হতে পারে , এতে ফাংশনগুলির কোডটি ব্যবহার করার পরে polycor... সমাধানটি কেবল hetcor()বিকল্পটি ব্যবহার করা std.err=FALSE। এটি স্টাসকে যেভাবে দিয়েছে তার সাথে মিলে যায় এমন অনুমান দেয়। এখানে কী চলছে তা আরও ভাল করে বুঝতে আমার এখন সময় নেই! নীচের প্রশ্নগুলি বেশ ভাল উত্তর দেওয়া হয়েছে স্টাসক দ্বারা।

আমার অন্যান্য প্রশ্ন আছে, তবে যে কোনও কিছুর আগে, এখানে একটি আরডিটা ফাইলের সাথে একটি url রয়েছে যাতে L1কেবলমাত্র সম্পূর্ণ ডেটাযুক্ত ডেটা ফ্রেম থাকে : ডেটা_সেম.আরডিটা

এখানে কয়েক লাইন কোডের ব্যর্থতা দেখাচ্ছে hetcor

> require("OpenMx")
> require("polycor")
> load("data_sem.RData")
> hetcor(L1)
Erreur dans cut.default(scale(x), c(-Inf, row.cuts, Inf)) : 
  'breaks' are not unique
De plus : Il y a eu 11 avis (utilisez warnings() pour les visionner)
> head(L1)
   A1 A2 A3 A4 A5       B1       B2       B3 C1 D1 E1
1   4  5  4  5  7 -0.82759  0.01884 -3.34641  4  6  1
4   7  5  0  4  6 -0.18103  0.14364  0.35730  0  1  0
7   7  5  7  6  9 -0.61207 -0.18914  0.13943  0  0  0
10  5  5 10  7  3 -1.47414  0.10204  0.13943  2  0  0
11  7  5  8  9  9 -0.61207  0.06044 -0.73203  0  2  0
12  5  5  9 10  5  0.25000 -0.52192  1.44662  0  0  0

তবে আমি এখনও আমার অর্ডারকৃত উপাদানগুলিকে পরিমাণগত পরিবর্তনশীল হিসাবে বিবেচনা করে খুব নোংরা পথে একটি সম্পর্কিত বা কোভারিয়েন্স ম্যাট্রিক্স গণনা করতে পারি:

> Cor0 <- cor(data.frame(lapply(L1, as.numeric)))

OpenMxআমার পরবর্তী প্রশ্নের সাথে এখানে এক টুকরো কোড দেওয়া হচ্ছে: নীচের মডেলটি কি সঠিক? খুব বেশি ফ্রি প্যারামিটার না?

manif <- c("A1","A2","A3","A4","A5", "B1","B2","B3", "C1", "D1", "E1");

model1 <- mxModel(type="RAM",
        manifestVars=manif, latentVars=c("A","B","C","D","E"),
        # factor variance
        mxPath(from=c("A","B","C","D","E"), arrows=2, free=FALSE, values = 1),
        # factor covariance
        mxPath(from="A", to="B",  arrows=2, values=0.5),
        mxPath(from="A", to="C",  arrows=2, values=0.5),
        mxPath(from="A", to="D",  arrows=2, values=0.5),
        mxPath(from="A", to="E",  arrows=2, values=0.5),
        mxPath(from="B", to="C",  arrows=2, values=0.5),
        mxPath(from="B", to="D",  arrows=2, values=0.5),
        mxPath(from="B", to="E",  arrows=2, values=0.5),
        mxPath(from="C", to="D",  arrows=2, values=0.5),
        mxPath(from="C", to="E",  arrows=2, values=0.5),
        mxPath(from="D", to="E",  arrows=2, values=0.5),
        # factors → manifest vars
        mxPath(from="A", to=c("A1","A2","A3","A4","A5"), free=TRUE, values=1),
        mxPath(from="B", to=c("B1","B2","B3"), free=TRUE, values=1),
        mxPath(from="C", to=c("C1"), free=TRUE, values=1),
        mxPath(from="D", to=c("D1"), free=TRUE, values=1),
        mxPath(from="E", to=c("E1"), free=TRUE, values=1),
        # error terms
        mxPath(from=manif, arrows=2, values=1, free=TRUE),
        # data
        mxData(Cor0, type="cor",numObs=dim(L1)[1])
       );

এবং একটি শেষ প্রশ্ন। এই মডেলটির সাথে (আসুন এক মুহুর্তের জন্য ভুলে যাই অনুপযুক্ত উপায়ে পারস্পরিক সম্পর্কের গণনা করা হয়), আমি ওপেনএমএক্স চালনা করি:

> mxRun(model1) -> fit1
Running untitled1 
> summary(fit1)

সংক্ষিপ্তসারগুলির মধ্যে, এটি:

observed statistics:  55 
estimated parameters:  32 
degrees of freedom:  23 
-2 log likelihood:  543.5287 
saturated -2 log likelihood:  476.945 
number of observations:  62 
chi-square:  66.58374 
p:  4.048787e-06 

বিশাল আকারের পরামিতি সত্ত্বেও ফিটটি খুব খারাপ দেখাচ্ছে। ওটার মানে কি? এর অর্থ কি এই যে আমাদের ম্যানিফেস্ট ভেরিয়েবলের মধ্যে সমবায়িকাগুলি যুক্ত করা উচিত?

আপনার সমস্ত উত্তরের জন্য আগাম অনেক ধন্যবাদ, আমি আস্তে আস্তে উন্মাদ হয়ে যাচ্ছি ...

উত্তর:


10

আপনি অবশ্যই একটি বাগ খুঁজে পেয়েছেন polycor, যা আপনি জন ফক্সকে জানাতে চাইবেন। আমার polychoricপ্যাকেজটি ব্যবহার করে স্টাটাতে সবকিছু ঠিকঠাক চলছে :

    . polychoric *

    Polychoric correlation matrix

               A1          A2          A3          A4          A5          B1          B2          B3          C1          D1          E1
   A1           1
   A2   .34544812           1
   A3   .39920225   .19641726           1
   A4   .09468652   .04343741   .31995685           1
   A5   .30728339   -.0600463   .24367634   .18099061           1
   B1   .01998441  -.29765985   .13740987   .21810968   .14069473           1
   B2  -.19808738   .17745687  -.29049459  -.21054867   .02824307  -.57600551          1
   B3   .17807109  -.18042045   .44605383   .40447746   .18369998   .49883132  -.50906364           1
   C1  -.35973454  -.33099295  -.19920454  -.14631621  -.36058235   .00066762  -.05129489  -.11907687           1
   D1   -.3934594  -.21234022  -.39764587  -.30230591  -.04982743  -.09899428   .14494953   -.5400759   .05427906           1
   E1  -.13284936   .17703745  -.30631236  -.23069382  -.49212315  -.26670382   .24678619  -.47247566    .2956692   .28645516           1

সুপ্ত ভেরিয়েবল একটি একক সূচকটি সঙ্গে মাপা হয় জন্য ( C, D, E), আপনি, এটা একটানা সংস্করণে সূচকটি ভ্যারিয়েন্স ফিক্স অন্যথায় সুপ্ত পরিবর্তনশীল স্কেল চিহ্নিত করা হয় না প্রয়োজন। বাইনারি / অর্ডিনাল প্রতিক্রিয়াগুলির সাথে প্রদত্ত, এটি যাইহোক (অর্ডিনাল) প্রবিট-টাইপ লিঙ্কগুলির সাথে 1 এ স্থির করা হয়েছে, এর সম্ভবত এটির অর্থ হ'ল আপনাকে বোঝা উচিত যে আপনার সুপ্তটি পর্যবেক্ষিত সূচকের সমতুল্য, অথবা আপনাকে মানক লোডিং পোস্টুলেট করতে হবে । এটি আপনার মডেলটিকে সিএফএ মডেলের সমতুল্য করে তোলে যেখানে আপনার যথাক্রমে {এ 1-এ 5, সি 1, ডি 1, ই 1} এবং {বি 1-বি 3, সি 1, ডি 1, ই 1} দিয়ে পরিমাপ করা সুপ্ত গুণক A এবং B রয়েছে।


চেষ্টা করার জন্য সময় দেওয়ার জন্য অনেক ধন্যবাদ! সুতরাং: আর-এ এই পারস্পরিক সম্পর্কের গণনার জন্য কারও কাছে পরামর্শ দেওয়ার বিকল্প নেই?
এলভিস

কারণগুলির বিষয়ে, আমি সচেতন ছিলাম যে কোনও কিছু বেস সেখানে লুকিয়ে ছিল - তবে আমি এখনও নিশ্চিত নই যে আমি পুরোপুরি বুঝতে পেরেছি। আমি যা লিখেছি তাতে আমার মতো সম্পর্ক রয়েছে - এই আসলে । এমনকি যদি এটি কেবলমাত্র অর্ডিনাল নয়, তবে পরিমাণগত হয়, কারণ আমি কেবল সংযুক্তি দিই (এমনকি সমবায়ও নয়) তবে কীভাবে স্কেল পুনরুদ্ধার করা যায় তা আমি পাই না । আমি না শুধুমাত্র ভ্যারিয়েন্স মানে , কিন্তু এর মান । তবে এটি ঠিক করা ফিট আরও খারাপ করে তোলে! আমরা যখন কাঁচা ডেটা ফিট করি তখন আমি জিনিসগুলি আরও ভালভাবে বুঝতে পারি, তবে দুর্ভাগ্যক্রমে এটি ব্যর্থ হয় ...A i A i ϵ α iAi=αiA+ϵAiAiϵαi
এলভিস

একক সূচকযুক্ত কারণগুলির জন্য জিনিসগুলি সবচেয়ে খারাপ ...! আসলে সি 1, ডি 1, ই 1 হ'ল বেশ কয়েকটি ভেরিয়েবলের যোগফল; যখন তারা ডেটা সরবরাহ করা হয়েছিল তখন তারা এ জাতীয় ছিল, আমি পুরো ডেটা সেটটি জিজ্ঞাসা করলাম কারণ আমি মনে করি এটি পছন্দনীয় তবে কিছুটা ভাল কাজ করছে না বলে আমি আবার অঙ্কগুলিতে ফিরে গিয়েছিলাম ... যদি আমি কোনও গণনা করার উপায় খুঁজে পাই তবে আর এর সাথে এই সম্পর্কগুলি আমি সম্পূর্ণ ডেটা সেট ব্যবহার করব।
এলভিস

ঠিক আছে, এখন যে আমি এটি আরও ভাল মনে করি আমি মনে করি এটি পেয়েছি।
এলভিস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.